YOLOv3 迁移学习性能比官方权重差

YOLOv3 transfer learning performance is worse than its official weight

最近用迁移学习的方法训练yolov3

我使用以下命令来训练我的 yolov3 权重。

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74  -gpus 0,1,2,3 -map | tee -a yolov3-official-transfer-learning.log

将 500200 个批次权重提交给 CodaLab 以测试 COCO 数据集的性能后,

我得到以下结果:

AP: 0.321
AP_50: 0.541
AP_75: 0.339
AP_small: 0.143
AP_medium: 0.332
AP_large: 0.450
AR_max_1: 0.284
AR_max_10: 0.434
AR_max_100: 0.454
AR_small: 0.257
AR_medium: 0.473
AR_large: 0.617

对比CodaLab官方体重

AP: 0.315
AP_50: 0.560
AP_75: 0.324
AP_small: 0.153
AP_medium: 0.334
AP_large: 0.430
AR_max_1: 0.278
AR_max_10: 0.433
AR_max_100: 0.456
AR_small: 0.267
AR_medium: 0.484
AR_large: 0.610

可以很明显的看到官方权重中的AP_50比我自己训练的版本高了1.9%

顺便说一句,

[1] 我用 AlexeyAB/darknet, not pjreddie/darknet/ 训练了 YOLOv3.

[2] 我使用 COCO2014 作为我的训练数据集。

有人知道怎么解释这种情况吗?还是可以重现官方结果?

mAP在评价上更有说服力,也就是你问题中的AP指标

其实你的mAP(0.321)比官方verison(0.315)略高

AP_50只是IOU阈值设置为0.5时的AP,而mAP在IOU阈值设置为0.5:0.95:0.05(总共10个IOU)时分别考虑了多个AP。

您的 AP_50 较低。购买您可能会注意到您的 AP_75 更高。这就解释了为什么你的mAP比官方版本略高

您可以参考coco官网了解更多评价指标信息。

你用的是默认配置吗?如果是这样,您可能以比作者更低的分辨率 and/or 和更小的小批量训练,这意味着更多的随机训练 -> 更低的 AP。

训练 DNN 也有一定程度的 运行domness,我已经看到网络训练到具有相同配置的略有不同的 AP。 Yolov3 的作者 运行 可能进行了多次训练试验并选择了最好的结果进行发表,因此平均而言,完全模仿他们的训练可能会产生稍差的结果。