香港特别行政区网站建设_网站建设公司_Windows Server_seo优化
2025/12/27 15:00:40 网站建设 项目流程

监控视角交通目标车辆行人检测数据集 YOLO格式|高清路口实时监控|行人/车辆/多目标

✅ 直接来自路口监控摄像头,非网络爬取、非二次加工
✅ YOLO标准格式、

📊 数据集套餐价格表

等级数据量核心权益
【1】5,000 张适合快速验证数据质量与模型适配性。
【2】50,000 张满足课程设计、毕业设计或小型实验项目需求。

—1

基于 YOLOv8 + 车辆行人检测数据集(2类)的完整训练流程与代码,适用于您提供的YOLO格式数据集,包含车辆、行人两类目标。


📁 一、项目结构说明

VehiclePersonDetection/ ├── datasets/# 数据集目录(YOLO格式)│ ├── images/ │ │ ├── train/# 训练图像│ │ └── val/# 验证图像│ └── labels/ │ ├── train/# 训练标签(.txt)│ └── val/# 验证标签(.txt)├── vehicle_person.yaml# 数据配置文件├── train.py# 模型训练脚本└── runs/# 训练输出目录(自动创建)

🔧 二、1. 安装依赖

pipinstallultralytics opencv-python numpy matplotlib tqdm

推荐使用 Python 3.8~3.11,PyTorch ≥ 1.8


🗃️ 三、2. 数据集格式要求(YOLO 标准)

每个图像对应一个.txt文件,例如:

  • datasets/images/train/001.jpg
  • datasets/labels/train/001.txt

.txt内容格式:

<class_id> <x_center> <y_center> <width> <height>
类别class_id示例
车辆00 0.45 0.6 0.2 0.1
行人11 0.7 0.5 0.1 0.2

✅ 所有坐标为归一化值([0,1]),由 LabelImg 自动转换
✅ 使用 LabelImg 进行标注并导出 YOLO 格式


📂 四、3. 创建vehicle_person.yaml配置文件

# vehicle_person.yamltrain:./datasets/images/trainval:./datasets/images/valnc:2names:['车辆','行人']

nc=2表示两个类别
names顺序必须与标注时的 class_id 对应(class_id=0 → 车辆,class_id=1 → 行人)


🚀 五、4. 训练代码(train.py

# train.pyfromultralyticsimportYOLOimportosdefmain():# 确保输出目录存在os.makedirs("runs",exist_ok=True)# 加载预训练模型(YOLOv8s)model=YOLO('yolov8s.pt')# 支持 yolov8n, yolov8m, yolov8l 等# 开始训练results=model.train(data='vehicle_person.yaml',# 数据配置文件epochs=100,# 训练轮数imgsz=640,# 输入图像尺寸batch=16,# 批大小(根据显存调整:8/16/32)name='vehicle_person_train',# 实验名称optimizer='AdamW',# 优化器lr0=0.001,# 初始学习率lrf=0.01,# 最终学习率 = lr0 * lrfpatience=15,# 早停:若15轮无提升则停止save=True,# 保存最佳和最后模型save_period=10,# 每10轮保存一次device=0,# GPU设备ID(0,1,... 或 'cpu')workers=4,# 数据加载线程数project='runs',# 输出根目录exist_ok=False,# 若实验名已存在是否覆盖verbose=True# 打印详细日志)print("✅ 训练完成!最佳模型路径:",results.save_dir/"weights/best.pt")if__name__=='__main__':main()

▶️ 六、5. 启动训练

在终端执行:

python train.py

⏱️ 训练时间参考(RTX 3060):

  • batch=16, imgsz=640 → 约 1.0 小时(100 epochs)

📈 七、6. 训练过程监控

  • 日志自动保存在:runs/detect/vehicle_person_train/
  • 可视化指标:
    • results.png:loss、mAP@0.5、precision、recall 曲线
    • confusion_matrix.png:混淆矩阵
    • labels.jpg:标签分布热力图
  • 使用 TensorBoard(可选):
    tensorboard --logdir runs

✅ 八、7. 验证与测试(可选)

训练完成后,可单独验证:

fromultralyticsimportYOLO model=YOLO('runs/detect/vehicle_person_train/weights/best.pt')metrics=model.val(data='vehicle_person.yaml')print(metrics.box.map)# mAP@0.5print(metrics.box.map50)# mAP@0.5print(metrics.box.precision)# Precisionprint(metrics.box.recall)# Recall

📤 九、8. 导出模型(用于部署)

model=YOLO('best.pt')model.export(format='onnx')# 导出 ONNXmodel.export(format='engine')# 导出 TensorRT(需 CUDA)model.export(format='openvino')# 导出 OpenVINO

💡 十、调优建议(针对车辆行人检测)

问题解决方案
车辆小目标漏检增加imgsz=1280、使用yolov8myolov8l
行人遮挡误检降低conf_threshold=0.3、增加数据增强
类别不平衡train.py中添加class_weights=[1.0, 2.0]
显存不足减小batch(如 8)、使用yolov8n、设置imgsz=416

📎 附:快速检查数据集是否合规

# check_dataset.pyimportosdefcheck_dataset(root='datasets'):forsplitin['train','val']:img_dir=os.path.join(root,'images',split)lbl_dir=os.path.join(root,'labels',split)imgs=set(os.listdir(img_dir))lbls=set(f.replace('.txt','.jpg')forfinos.listdir(lbl_dir))missing=imgs-lbls extra=lbls-imgsifmissing:print(f"⚠️{split}: 缺少标签的图片:{missing}")ifextra:print(f"⚠️{split}: 多余的标签:{extra}")print("✅ 数据集结构校验完成!")if__name__=='__main__':check_dataset()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询