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
552 stars 133 forks source link

yolov5无法复现PaddleYOLO官方结果 #205

Closed Wanglm2TC closed 2 months ago

Wanglm2TC commented 10 months ago

问题确认 Search before asking

请提出你的问题 Please ask your question

你好,我最近在尝试复现yolov5m的官方结果,但mAP仅有0.418(官方0.454),使用release2.6的版本,环境如下:

paddle版本paddlepaddle-gpu 2.5.2.post117 GPU为8张NVIDIA A100-SXM4-80GB GPU Compute Capability: 8.0, Driver API Version: 11.7, Runtime API Version: 11.7

运行命令: python -m paddle.distributed.launch --log_dir=./offical_log \ --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/yolov5/yolov5_m_300e_coco.yml \ --eval --amp --enable_ce True -o use_gpu=True log_iter=1 snapshot_epoch=1

除数据路径未对代码做修改,请问需要使用预训练权重吗,或者有什么没注意到的地方导致无法复现官方结果? image

另外,实测性能也比较差,八卡A100独占需要训练3天,这个性能是正常的吗 image

nemonameless commented 10 months ago

不要加enable_ce,使用develop分支去训,或这个 https://github.com/nemonameless/PaddleYOLO/tree/yolov5_old 。可能是因之前CI benchmark 动转静等问题的改动而导致精度略低,训练速度慢是因为mosaic预处理慢和paddle的tensor索引慢,有空会尽快排查。如无特殊需要,建议使用ppyoloe+或者rt-detr,这两个不需mosaic,训练快周期短精度更高。

Wanglm2TC commented 10 months ago

不要加enable_ce,使用develop分支去训,或这个 https://github.com/nemonameless/PaddleYOLO/tree/yolov5_old 。可能是因之前CI benchmark 动转静等问题的改动而导致精度略低,训练速度慢是因为mosaic预处理慢和paddle的tensor索引慢,有空会尽快排查。如无特殊需要,建议使用ppyoloe+或者rt-detr,这两个不需mosaic,训练快周期短精度更高。

好的,感谢!我按照建议重新测试一下

Wanglm2TC commented 10 months ago

@nemonameless 你好,按照建议重新测试了一下,结果为0.438,精度有提升但还是复现不了。

测试分支: image 仅修改数据集路径: image 测试脚本:

python -m paddle.distributed.launch --log_dir=../paddle/offical_log \
    --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/yolov5/yolov5_m_300e_coco.yml \
    --eval --amp -o use_gpu=True log_iter=1 snapshot_epoch=1 

300epoch的结果: image gpu和paddle版本和之前一致,请问还有需要注意的地方吗?

nemonameless commented 7 months ago

谢谢建议,后续会进行下排查修复。

nemonameless commented 2 months ago

https://bj.bcebos.com/v1/paddledet/data/coco/yolov5_m_300e_coco_mAP45.3.log https://bj.bcebos.com/v1/paddledet/data/coco/instances_val2017_rand24.json https://bj.bcebos.com/v1/paddledet/data/coco/yolov5_m_300e_coco_mAP45.3.pdparams 已提供权重和log,用现在develop分支代码训练即可复现。log里是为了快速eval用的100张图的instances_val2017_rand24.json,实际eval标准的instances_val2017.json精度就是45.3。