Yolov5训练建议

github网址:Tips for Best Training Results · ultralytics/yolov5 Wiki (github.com) 

本指南解释了如何使用YOLOv5🚀生成最佳mAP和训练结果。2022年5月25日更新。

大多数情况下,只要数据集足够大且标记良好,不需要改变模型或训练设置就可以获得良好的结果。如果一开始你没有得到很好的结果,你可以采取一些步骤来提高,但我们总是建议用户在考虑任何更改之前先用所有默认设置进行训练。这有助于建立性能基准并找出需要改进的地方。

如果您对训练结果有疑问,我们建议您提供尽可能多的信息,包括结果图(训练损失、验证损失、P、R、mAP)、PR曲线、混淆矩阵、训练整合、测试结果和数据集统计图像(如labels.png)。所有这些都位于您的 project/name 目录中,通常是 yolov5/runs/train/exp 。

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

数据集Dataset

每个类的图像:每个类最好 >=1500 张图像 (图像个数)

每个类的实例:推荐每个类≥10000个实例(标记对象)(每个类里面的东西的个数)

图像的多样性:必须能代表所部署的环境。对于现实世界的用例,我们推荐不同时间、不同季节、不同天气、不同光照、不同角度、不同来源(在线抓取、本地收集、不同相机)的图像。

标签的一致性:所有图像中所有类的所有实例都必须被标记。部分标签将不起作用。

标签的精确性:标签必须紧紧地围住每个对象。物体和它的边界框之间不应该有空格。任何物品都不应该缺少标签。

标签的验证:查看train_batch*.jpg在开始训练来验证您的标签是否正确,即查看示例整合。

背景图像:背景图像是没有对象的图像,添加到数据集中以减少假阳性(FP)。我们推荐0-10%的背景图像来帮助降低FPs (COCO有1000张背景图像可供参考,占总数的1%)。背景图片不需要标签。

模型选择Model Selection 

像YOLOv5x和YOLOv5x6这样较大的模型几乎在所有情况下都会产生更好的结果,但参数更多,需要更多的CUDA内存来训练,运行速度也更慢。对于移动部署,我们推荐yolov5s/m,对于云部署,我们推荐YOLOv5l/x。有关所有模型的完整比较,请参阅我们的README表。放在最后

如果我们从预训练的权重开始。推荐用于中小型数据集(如VOC, VisDrone, GlobalWheat)。将模型的名称传递给 –weights 参数。从最新的YOLOv5版本自动下载模型。

python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt

从头开始训练。推荐用于大型数据集(如COCO, Objects365, OIv6)。传递你感兴趣的模型架构yaml,以及一个空的 –weights “参数: (不推荐,一般是用训练好的权重)

python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

训练设置 Training Settings

在修改任何内容之前,首先使用默认设置进行训练,以建立性能基线。可以在yolov5/train.py at master · ultralytics/yolov5 · GitHub 参数表中找到train.py设置的完整列表。

Epochs. 从300个epoch开始。如果这个过度适应的太早,那么你可以减少epoch。如果在300个epoch之后没有发生过拟合,则训练更长的时间,即600,1200等epoch。

image size. COCO在本地分辨率 -img 640 进行训练,尽管由于数据集中有大量的小对象,它可以从更高分辨率的训练中受益,如-img 1280。如果有很多小对象,那么自定义数据集将受益于本地或更高分辨率的训练。最好的推断结果是在和训练同样的 -img 下运行得到的,即,如果你在-img 1280训练,你也应该测试和检测在-img 1280。

Batch size. 使用硬件允许的最大批处理大小。小批量产生差的批标准统计,应该避免。

Hyperparameters.  默认超参数在hyper .scratch-low.yaml中。我们建议您在考虑修改任何超参数之前先使用默认超参数进行训练。一般来说,增加增强超参数会减少和延迟过拟合,允许更长的训练和更高的最终mAP。像 hyp[‘obj’] 这样的损失分量增益超参数的减少将有助于减少那些特定损失分量的过拟合。有关优化这些超参数的自动方法,请参阅我们的超参数进化教程。

延伸阅读 Further Reading

如果你想了解更多,一个好的开始是Karpathy的“Recipe for Training Neural Networks”,它对训练有很好的想法,广泛应用于所有ML领域:

A Recipe for Training Neural Networks

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年4月5日
下一篇 2023年4月5日

相关推荐