本文编译自英文原文 https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results,文章解释了如何提高Yolov5的mAP和训练效果。
大多数时间,在没有改变模型或是训练配置的情况下,如果能够提供足够多的数据集以及好的标注,也是能够获得好的效果的。如果你刚开始训练的时候,得到的效果不太尽如人意,那么你就会想采取措施来改善,在你采取措施之前,我们还是建议你最好还是采用默认的设置。这有助于建立一个改善的基准,以及找出需要改善的地方。
以下是官方提供的一份完整的指南——如何在YOLOv5训练中获得好的结果的。
数据集
每个类别的图像
建议≥1500张图片。
每个类别的实例
建议每个类别≥10000实例。
图像的多样性
建议图像来自不同的时间段、不同的季节、不同的天气、不同的光照、不同的角度、不同的
来源(在线收集、本地收集、不同的相机)等.
标注的一致性
必须要标注所有图像中所有类的所有实例。
标注的准确性
标注必须要紧紧地围绕对象。对象与其边界框之间不应该存在空间。任何对象都不能缺少标注。
标注的验证
查看train/exp文件夹里的train_batch和val_batch图片。
背景图像
将那些没有包含对象的图像作为背景图像,添加到数据集中,以减少False Positives(FP)。建议使用0-10%的背景图像来帮助减少FPs。背景图像不需要标注。
模型的选择
像YOLOv5和YOLOv5x6这些大模型,几乎在所有的案例中,都能产生更好的结果,但是由于参数也更多,需要占用更多的CUDA内存进行训练,训练速度也更慢。移动部署,推荐使用YOLOv5s/m;云端部署,推荐使用YOLOv5l/x。
从预训练的权重开始
适用于中、小规模的数据集(VOC, VisDrone, GlobalWheat)。把模型名称传递给参数--weight。
模型下载
python train.py --data custom.yaml --weights yolov5s.pt
从头开始
适用大的数据集(COCO, Objects365, Olv6)。传入感兴趣的模型架构,紧接着传入一个空的--weights参数:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
训练设置
在修改任何内容之前,第一次训练采用默认的设置,以建立一个性能的基准。完整的设置列表在train.py中能查询到。
Epochs 训练次数
默认300,如果过早出现过拟合,可以适当减少epochs,如果没有出现过拟合,则可以设置600、1200.
Image size 图片尺寸
--img 默认为640,如果数据集中包含大量的小对象,建议采用--img 1280。如果训练设置--img为1280,那么测试和检测也要设为1280。
Batch size 批量大小
建议使用硬件允许的最大值。小批量会带来较差的批量数值统计。
Hyperparameters 超参数
默认超参数为hyp.scratch-low.yaml。建议首次训练采用默认值训练。