跳至内容

取得最佳训练效果的技巧

本指南介绍了如何使用YOLOv5 🚀 生成最佳 mAP 和训练效果。

大多数情况下,只要数据集足够大且标签齐全,无需更改模型或训练设置就能获得良好的结果。如果一开始效果不佳,您可以采取一些措施来改进,但我们始终建议用户在考虑任何更改之前,先使用所有默认设置进行训练。这有助于建立性能基线,发现需要改进的地方。

如果您对训练结果有疑问 我们建议您提供尽可能多的信息 if you expect a helpful response, including results plots (train losses, val losses, P, R, mAP), PR curve, confusion matrix, training mosaics, test results and dataset statistics images such as labels.png. All of these are located in your project/name 目录,通常是 yolov5/runs/train/exp.

我们为希望在YOLOv5 培训中获得最佳效果的用户准备了一份完整的指南。

数据集

  • 建议每班≥ 1500 张图片
  • 建议每类≥ 10000 个实例(标记对象
  • 图像种类。必须能代表部署环境。对于真实世界的使用案例,我们建议使用不同时间、不同季节、不同天气、不同光线、不同角度、不同来源(网上搜索、本地收集、不同摄像头)等的图像。
  • 标签一致性。所有图像中所有类别的所有实例都必须贴上标签。部分标注将不起作用。
  • Label accuracy. Labels must closely enclose each object. No space should exist between an object and it's bounding box. No objects should be missing a label.
  • 标签验证。 查看 train_batch*.jpg 在火车启动时验证标签是否正确,即查看 范例 马赛克
  • 背景图像。背景图片是没有物体的图像,添加到数据集中可以减少误报(FP)。我们建议使用约 0-10% 的背景图片来帮助减少误报率(COCO 有 1000 张背景图片供参考,占总数的 1%)。背景图片不需要标签。

COCO 分析

机型选择

较大的模型(如 YOLOv5x 和YOLOv5x6)几乎在所有情况下都能产生更好的结果,但参数较多,需要更多的CUDA 内存来训练,而且运行速度较慢。对于移动部署,我们推荐使用 YOLOv5s/m;对于部署,我们推荐使用 YOLOv5l/x。有关所有模型的全面比较,请参见我们的 README表格

YOLOv5 机型

python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • 从零开始 建议用于大型数据集(即 COCO, 对象365, OIv6).传递您感兴趣的模型架构 YAML 以及空的 --weights '' 争论:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

培训设置

在修改任何设置之前,首先使用默认设置进行训练,以建立性能基准。train.py 设置的完整列表可在train.pyargparser 中找到。

  • Epochs. Start with 300 epochs. If this overfits early then you can reduce epochs. If overfitting does not occur after 300 epochs, train longer, i.e. 600, 1200 etc. epochs.
  • 图像大小 COCO 列车的原始分辨率为 --img 640但由于数据集中有大量的小物体,在更高分辨率下进行训练会更有帮助,如 --img 1280.如果有很多小物体,那么以原始分辨率或更高分辨率训练自定义数据集将更有优势。在相同分辨率下,可获得最佳推理结果。 --img 进行训练,即如果你在 --img 1280 您还应在 --img 1280.
  • Batch size. 使用最大的 --batch-size 在硬件允许的范围内。小批量会产生较差的批次规范统计,应避免使用。
  • 超参数 默认超参数在 hyp.scratch-low.yaml.我们建议您在考虑修改任何超参数之前,先使用默认超参数进行训练。一般来说,增加增强超参数可以减少和延缓过拟合,从而延长训练时间和提高最终 mAP。减少损失分量增益超参数,如 hyp['obj'] 将有助于减少这些特定损失成分的过度拟合。有关优化这些超参数的自动方法,请参阅我们的 超参数演化教程.

更多阅读

If you'd like to know more, a good place to start is Karpathy's 'Recipe for Training Neural Networks', which has great ideas for training that apply broadly across all ML domains: https://karpathy.github.io/2019/04/25/recipe/

祝你好运🍀,如果还有其他问题,请告诉我们!

📅 Created 11 months ago ✏️ Updated 1 month ago

评论