PaddlePaddle / PaddleYOLO

🚀🚀🚀 YOLO series of PaddlePaddle implementation, PP-YOLOE+, RT-DETR, YOLOv5, YOLOv6, YOLOv7, YOLOv8, YOLOv10, YOLOX, YOLOv5u, YOLOv7u, YOLOv6Lite, RTMDet and so on. 🚀🚀🚀
https://github.com/PaddlePaddle/PaddleYOLO
GNU General Public License v3.0
547 stars 133 forks source link

yolov5训练在自定义数据集上比原版收敛慢太多,可能是哪方面原因导致的呢? #139

Closed hengyanchen closed 6 months ago

hengyanchen commented 1 year ago

问题确认 Search before asking

请提出你的问题 Please ask your question

同样的数据集,同样的超参,paddle版的yolov5在自定义数据集上比原版收敛慢太多,可能是哪方面原因导致的呢? 是否是预训练模型不同导致的? 预训练模型是根据原yolo预训练模型转的还是paddle团队自己训练的呢? 或者是其他什么原因导致的?

nemonameless commented 1 year ago

最终精度差别大吗?收敛慢可能是需要调参,原版yolov5会有很多自适应的参数调整,这边没有。预训练权重是自训的,P6的是转的。此外原版yolov5的边训边eval打印的mAP不是标准的cocoapi的AP。

Guiltytrees commented 1 year ago

同问,精度很低,请问是预训练模型的原因吗,我调用Paddle提供的在COCO上训练好的模型作为预训练模型精度也很低,很低很低。除了YOLOv3代码里本身加载了预训练模型之外之外,其余YOLO系列精度都很低很低。

nemonameless commented 1 year ago

同问,精度很低,请问是预训练模型的原因吗,我调用Paddle提供的在COCO上训练好的模型作为预训练模型精度也很低,很低很低。除了YOLOv3代码里本身加载了预训练模型之外之外,其余YOLO系列精度都很低很低。

大概率是你使用和调参问题,实际项目业务上我们也用的很正常,注意看loss趋势,可以再详细点提问或发代码改动看看。先排除掉GPU不够而把bs改的很小去训导致不收敛或精度差,如果真是这样,你得增加GPU资源。

hengyanchen commented 1 year ago

最终精度差别大吗?收敛慢可能是需要调参,原版yolov5会有很多自适应的参数调整,这边没有。预训练权重是自训的,P6的是转的。此外原版yolov5的边训边eval打印的mAP不是标准的cocoapi的AP。

最终精度还不知道,因为我训练了900轮都没收敛完,不过看趋势就是收敛慢

hengyanchen commented 1 year ago

分别在两批数据集上测试发现yolov5 相较于官方yolov5 收敛慢很多,最终精度也差很多,rtdert 效果好一点,但是收敛也慢,最终精度也比yolov5 差一点

nemonameless commented 6 months ago

数据增强也可能会影响,自定义数据集差别太大,paddle实现和torch的数据增强不是完全一样的,官方yolov5一直在更新,paddle这边可能是参照的很老的torch版本。