Train Custom Data - YOLOv5 Documentation
手动标记数据的时候,注意方框要与目标物体边缘相切。
模仿COCO128 的实例即可,此处没有太多需要注意的地方。(除了 Windows 路径要使用双反斜杠 \\ )
# 官方文档使用的命令
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
实际上,5 epoch 不足以训练出可靠的模型。由如下图表可知:epoch 7 以后,metrics/precision 才超过 0.8。
另外,同时只训练一个模型时,batch_size 建议让 PyTorch 自行决定。最终建议命令如下:
python train.py --img 640 --batch -1 --epochs 16 --data coco128.yaml --weights yolov5s.pt
https://docs.ultralytics.com/tutorials/torchscript-onnx-coreml-export/
通常情况下建议导出 best.pt。
笔者参考了下方卡片的实现。这个实现会捕获视频流并截取画面。
doleron/yolov5-opencv-cpp-pythonhttps://github.com/doleron/yolov5-opencv-cpp-python/笔者自己的实现可以参考此处。这个实现直接接受传入图片。
recognizer/bicycle_counter.py · dev-recognizerhttps://gitcode.net/SoftwareEngineering2022ClassF/STOP/systemanddatabasedesignteam3/-/blob/dev-recognizer/recognizer/bicycle_counter.py
此处需要注意:
NMS Threshold 过高,导致相邻目标被合并。
降低 NMS Threshold,问题解决。