由于涉及图像识别算法,我们这次使用YOLO V5(You Only Look Once)来作为我们的图像识别框架。YOLO V5是目前准确度与检测速度最高的图像识别算法。同时,YOLO V5基于PyTorch框架,能够在日后很方便的移植到各种边缘化设备中(开发板,微型计算机,终端设备)。关于YOLO V5的算法原理,请参照原作者论文《You Only Look Once: Unified, Real-Time Object Detection》[6]。
YOLO V5有不同版本的预训练模型,分别是Nano版本,Small版本,Medium版本,Large版本与Extreme版本,各个版本的检测准确度与检测速度都不相同,大致如下:
「YOLO V5预训练模型准确度、速度比较」
基于检测速度与检测准确度的考虑,我们选择了各项指标都很突出的YOLO V5L模型作为我们的预训练模型,并使用UA-DETRAC车辆数据集进行训练。UA-DETRAC数据集是车辆检测和跟踪的大规模数据集,数据集主要拍摄于北京和天津的道路过街天桥(京津冀场景),并手动标注了 8250 个车辆 和 121万目标对象外框,共82050张图片。车辆分为四类,即轿车、公共汽车、厢式货车和其他车辆。天气情况分为四类,即多云、夜间、晴天和雨天。我们训练使用90%的照片作为训练集,10%的照片作为验证集,训练200回合。
训练时模型收敛速度非常快,在第20个回合的时候就BOX_LOSS就已经收敛到了0.0161,CLASS_LOSS收敛到了9.28 E-4,准确度则为98.47%。在第200回合时,BOX_LOSS收敛到了0.01281,CLASS_LOSS收敛到了6.0252 E-4的级别,而准确度则是达到了99.22%。
「训练识别效果」
UA-DETRAC车辆数据集:
UA-DETRAC
├── Annotations
│ ├── DETRAC-Test-Annotations-XML.zip
│ └── DETRAC-Train-Annotations-XML.zip
└── Images
├── DETRAC-test-data.zip(3.94GB, 40 sequences)
└── DETRAC-train-data.zip(5.22GB, 60 sequences)
链接:https://pan.baidu.com/s/130w_33XEnwTjP3OOqdkfHA
提取码:4rgd
网上相关资源链接:
- 基于UA-DETRAC车辆数据集在windows10系统下yolov3模型训练_uadetrac车辆检测数据集-CSDN博客
- 使用yolov5训练UA-DETRAC车辆数据集 - 知乎 (zhihu.com)
- yolov5_UA_DETRAC/yolov5_UA_DETRAC at main · zigangzhao-ai/yolov5_UA_DETRAC (github.com)
- wy17646051/UA-DETRAC-Format-Converter: Convert UA-DETRAC dataset to the dataset format supported by YOLOv5 (github.com)
- ggyybb/UA_DETRAC-VOC-YOLO: car detection (github.com)
- MRNOBODY-ZST/YOLOV5-UA-DETRAC: Run Dataset UA-DETRAC On YOLOV5 (github.com)
- ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
- 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码)_yolov5车辆检测-CSDN博客
这里比较坑的点在于怎么把UA-DETRAC车辆数据集转成yolo那种格式进行训练(之前没用过yolo训练所有对这方面很不熟悉),经过多次尝试后,用的链接5的方法,但是记得生成后要把图片和标签移动到同一个文件夹,而且命名要改成JPEGImages
最终数据集目录如下:
训练用的yolov5
处理数据集代码
对应问题:AssertionError: train: No labels in tmp\train.cache. Can not train without labels.
See https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data 打开dataset.py文件,使用快捷键Ctrl+F使用搜索框搜索define label,按照正常的VOC标注之后图片应该时保存在JPEGImages文件夹下的,但是根据源码则是读取的images里的图片,因此需要将images改为JPEGImages,这样就能正常读取了。