学习 YOLOX: Exceeding YOLO Series in 2021 论文,跑通原文demo代码及验证代码,并尝试使用飞桨框架复现。
- YOLOX-s 模型评估
python tools/eval.py -n yolox-s -c weights/yolox_s.pth -b 1 -d 1 --conf 0.001 --fp16 --fuse
- YOLOX-Darknet53 模型评估
python tools/eval.py -n yolov3 -c weights/yolox_darknet.pth -b 32 -d 1 --conf 0.001 [--fp16] [--fuse]
- 原论文结果
Model | size | mAPval 0.5:0.95 |
mAPtest 0.5:0.95 |
Speed V100 (ms) |
Params (M) |
FLOPs (G) |
weights |
---|---|---|---|---|---|---|---|
YOLOX-s | 640 | 40.5 | 40.5 | 9.8 | 9.0 | 26.8 | github |
YOLOX-m | 640 | 46.9 | 47.2 | 12.3 | 25.3 | 73.8 | github |
YOLOX-l | 640 | 49.7 | 50.1 | 14.5 | 54.2 | 155.6 | github |
YOLOX-x | 640 | 51.1 | 51.5 | 17.3 | 99.1 | 281.9 | github |
YOLOX-Darknet53 | 640 | 47.7 | 48.0 | 11.1 | 63.7 | 185.3 | github |
对比发现模型成功跑通,AP 值符合原论文结果。
python tools/demo.py image -n yolov3 -c weights/yolox_darknet.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu
- 预测结果
从预测图可以看出,不同类别被正确框选出来,且预测正确,具有较高的置信度。
-
复现网络结构与原论文基本一致,结果保存在 compare 文件夹下的 paddle_model.txt 和 torch_model.txt 文件中
-
单卡训练命令可以运行,随着 iter 的迭代 loss 会下降,训练命令如下
python tools/train.py -n yolox-s -d 1 -b 8
yolox-m
yolox-l
yolox-x
- 前向对齐存在问题,目前尚不清楚原因
应用 reprod_log 进行前向对齐测试,过程中发现 CSPDarknet 的 stem.BaseConv 和 dark2.BaseConv 具有同样的网络结构,如下图所示
然而 stem.BaseConv 部分前向对齐通过,比对结果如下图所示
dark2.BaseConv 部分前向对齐并未通过,比对结果如下图所示
YOLOX_convert - 飞桨AI Studio - 人工智能学习实训社区 (baidu.com)
-
原作者代码
-
参考代码
jesse01/paddle-yolox: yolox的paddle实现 (github.com)
bubbliiiing/yolox-pytorch: 这是一个yolox-pytorch的源码,可以用于训练自己的模型。 (github.com)
十分感谢百度飞桨提供的平台,感谢各位工作人员的耐心解答,同时也感谢互联网上的每个人提供的各种教程,下面列举一些参考链接,希望对后续论文复现的选手以及平台切换的开发者有所帮助。