保姆级教程:用YOLOv5s训练一个能识别‘人车一体’的电动车检测模型(附5000+监控数据集)

发布时间:2026/5/17 19:54:19

保姆级教程:用YOLOv5s训练一个能识别‘人车一体’的电动车检测模型(附5000+监控数据集) 零基础实战用YOLOv5打造高精度电动车检测模型附5000监控数据集当你走在城市街头是否注意到电动车已成为现代短途出行的主力军但随之而来的交通安全问题也日益突出——尤其是人车一体的复杂场景识别成为智能监控系统的技术难点。本文将带你从零开始用YOLOv5构建一个能精准识别骑行状态电动车的检测模型。1. 项目背景与核心挑战在交通管理场景中传统的电动车检测存在两个典型问题一是将骑行者和车辆识别为独立个体导致行为分析失真二是对小目标检测效果不佳。我们收集的5000监控专用数据集特别强化了以下特征复合目标标注将人车作为整体标注框而非分离检测多角度覆盖包含俯视、平视、斜视等监控常见视角光照变化涵盖白天、夜晚、逆光等复杂光照条件提示数据集已去除隐私信息所有人物面部和车牌均经过模糊处理2. 环境配置与数据准备2.1 快速搭建YOLOv5训练环境推荐使用conda创建隔离环境conda create -n yolov5 python3.8 conda activate yolov5 pip install torch1.10.0cu113 torchvision0.11.1cu113 -f https://download.pytorch.org/whl/torch_stable.html git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt2.2 数据集结构解析下载提供的数据集后按以下结构组织文件电动车检测数据集/ ├── images/ │ ├── train/ # 训练集图片 │ └── val/ # 验证集图片 └── labels/ ├── train/ # 训练集标注 └── val/ # 验证集标注数据集标注采用YOLO格式每个.txt文件对应同名的图片文件每行格式为class_id x_center y_center width height3. 模型训练关键技巧3.1 配置文件深度优化修改data/电动车.yaml配置文件train: ../电动车检测数据集/images/train val: ../电动车检测数据集/images/val nc: 1 # 仅检测人车一体一个类别 names: [rider_vehicle]对于小目标检测建议在models/yolov5s.yaml中调整anchoranchors: - [5,6, 8,14, 15,11] # 更适合小目标的anchor尺寸 - [10,13, 16,30, 33,23] - [30,61, 62,45, 59,119]3.2 启动训练与参数调优使用多尺度训练增强小目标检测能力python train.py --img 640 --batch 16 --epochs 100 --data 电动车.yaml \ --cfg models/yolov5s.yaml --weights yolov5s.pt --name 电动车检测 \ --multi-scale --device 0关键参数说明参数推荐值作用--img640输入图像尺寸--batch根据显存调整批处理大小--multi-scale-启用多尺度训练--rect-矩形训练节省显存4. 常见问题解决方案4.1 CUDA内存不足处理当出现CUDA out of memory错误时尝试以下方案减小batch size建议从16开始尝试添加--rect参数启用矩形训练使用更小的模型如yolov5n在训练命令中添加--cache ram/disk启用数据缓存4.2 提升小目标检测精度针对监控场景中的远距离小目标修改模型head层的检测头# 在models/yolov5s.yaml中增加小目标检测层 head: [[-1, 1, Conv, [256, 1, 1]], [-1, 1, nn.Upsample, [None, 2, nearest]], [[-1, 6], 1, Concat, [1]], # 增加特征融合 [-1, 3, C3, [256, False]]]数据增强中加入mosaic和小目标复制# 在data/hyps/hyp.scratch-low.yaml中修改 mosaic: 1.0 # 保持mosaic增强 copy_paste: 0.2 # 小目标复制概率5. 模型测试与部署5.1 性能评估指标解读训练完成后在runs/train/电动车检测目录下查看关键指标mAP0.5IoU阈值为0.5时的平均精度mAP0.5:0.95IoU阈值从0.5到0.95的平均精度precision-recall曲线反映模型在不同置信度阈值下的表现5.2 实际场景测试使用训练好的模型进行推理python detect.py --weights runs/train/电动车检测/weights/best.pt \ --source test_images/ --conf 0.4 --iou 0.5 --device 0对于监控视频流处理建议使用OpenCV实时检测import cv2 from yolov5.utils.general import non_max_suppression model torch.hub.load(ultralytics/yolov5, custom, pathruns/train/电动车检测/weights/best.pt) cap cv2.VideoCapture(test.mp4) while cap.isOpened(): ret, frame cap.read() if not ret: break results model(frame) detections non_max_suppression(results, conf_thres0.4, iou_thres0.5) for *xyxy, conf, cls in detections[0]: cv2.rectangle(frame, (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3])), (0,255,0), 2) cv2.imshow(Detection, frame) if cv2.waitKey(1) ord(q): break在部署到边缘设备时建议使用TensorRT加速python export.py --weights best.pt --include engine --device 0 \ --half --simplify --img 640

相关新闻