取得最佳训练效果的技巧
本指南介绍了如何使用YOLOv5 🚀 生成最佳 mAP 和训练效果。
大多数情况下,只要数据集足够大且标签齐全,无需更改模型或训练设置就能获得良好的结果。如果一开始效果不佳,您可以采取一些措施来改进,但我们始终建议用户在考虑任何更改之前,先使用所有默认设置进行训练。这有助于建立性能基线,发现需要改进的地方。
如果您对训练结果有疑问 我们建议您提供尽可能多的信息 如果您希望得到有用的回复,请提供结果图(列车损耗、阀损耗、P、R、mAP)、PR 曲线、 混淆矩阵、训练马赛克、测试结果和数据集统计图像(如 labels.png)。所有这些都位于您的 project/name
目录,通常是 yolov5/runs/train/exp
.
我们为希望在YOLOv5 培训中获得最佳效果的用户准备了一份完整的指南。
数据集
- 建议每班≥1500 张图片
- 建议每类 ≥10000 个实例(标记对象
- 图像种类。必须能代表部署环境。对于真实世界的使用案例,我们建议使用不同时间、不同季节、不同天气、不同光线、不同角度、不同来源(网上搜索、本地收集、不同摄像头)等的图像。
- 标签一致性。所有图像中所有类别的所有实例都必须贴上标签。部分标注将不起作用。
- 标签准确性。标签必须紧密包围每个对象。对象与边界框之间不得有空隙。任何对象都不能缺少标签。
- 标签验证。 查看
train_batch*.jpg
在列车启动时验证您的标签是否正确,即查看 范例 马赛克 - 背景图像。背景图片是没有物体的图像,添加到数据集中可以减少误报(FP)。我们建议使用约 0-10% 的背景图片来帮助减少误报率(COCO 有 1000 张背景图片供参考,占总数的 1%)。背景图片不需要标签。
机型选择
较大的模型(如 YOLOv5x 和YOLOv5x6)几乎在所有情况下都能产生更好的结果,但参数较多,需要更多的CUDA 内存来训练,而且运行速度较慢。对于移动部署,我们推荐使用 YOLOv5s/m;对于云部署,我们推荐使用 YOLOv5l/x。有关所有模型的全面比较,请参见我们的 README表格。
- 从预处理权重开始 建议用于中小型数据集(即 挥发性有机化合物, VisDrone, 全球小麦).将模型名称传递给
--weights
争论。模型会自动从 最新发布YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
yolov5m.pt
yolov5l.pt
yolov5x.pt
custom_pretrained.pt
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
yolov5m.yaml
yolov5l.yaml
yolov5x.yaml
培训设置
在修改任何设置之前,首先使用默认设置进行训练,以建立性能基准。train.py 设置的完整列表可在train.pyargparser 中找到。
- 纪元。从 300 个历元开始。如果早期出现过拟合,则可以减少历时。如果 300 个历元后没有出现过拟合,则可以延长训练时间,如 600、1200 等历元。
- 图像大小 COCO 列车的原始分辨率为
--img 640
但由于数据集中有大量的小物体,在更高分辨率下进行训练会更有帮助,如--img 1280
.如果有很多小物体,那么以原始分辨率或更高分辨率训练自定义数据集将更有优势。在相同分辨率下,可获得最佳推理结果。--img
进行训练,即如果你在--img 1280
您还应在--img 1280
. - 批量大小。 使用最大的
--batch-size
在硬件允许的范围内。小批量会产生较差的批次规范统计,应避免使用。 - 超参数 默认超参数在 hyp.scratch-low.yaml.我们建议您在考虑修改任何超参数之前,先使用默认超参数进行训练。一般来说,增加增强超参数可以减少和延缓过拟合,从而延长训练时间和提高最终 mAP。减少损失分量增益超参数,如
hyp['obj']
将有助于减少这些特定损失成分的过度拟合。有关优化这些超参数的自动方法,请参阅我们的 超参数演化教程.
更多阅读
如果您想了解更多信息,Karpathy 的 "训练神经网络的秘诀 "是一个很好的开始,其中的训练理念可广泛应用于所有 ML 领域:https://karpathy.github.io/2019/04/25/recipe/。
祝你好运🍀,如果还有其他问题,请告诉我们!
📅创建于 1 年前
✏️已更新 2 个月前