YOLOv5的训练调优技巧

本文编译自英文原文 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。建议首次训练采用默认值训练。

猜你喜欢

转载自blog.csdn.net/Kigha/article/details/129178428