Yolov3 中作者列出了使用coco数据集训练的数据结果,其中显示在输入图片大小为416x416的时候,模型的mAP大小为31%,当输入图片大小为608x608的时候,模型的mAP达到33%,论文中结果截图如下:
我们做了个实验,目的是验证当我们自己训练的时候能否达到论文中的给出的结果,判断我们平时训练的方法是否有问题。
这里使用了3块TITAN X显卡进行实验,batch设置为128,subdivision为32,其他max_batches没有改,按原来的设为500200,其他的不变。计算mAP使用的是cocoAPI(估计作者也是用的这个,使用detector valid这个命令可以直接将测试结果生成为cocoAPI所需要的json格式,thresh设置为0.001)
1、前期训练:
./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74 -gpus 0,1,2 | tee -a yolov3-coco-log.txt
PS: 保存log会拖慢训练的速度
然后提取log中的loss,解析并画出loss的曲线,曲线如下:
可以看到训练到后面的时候loss 基本就不在降低了,但是模型的mAP 只有25左右,远远还没达到论文中写的31%
2、不保存log,边训练边测试mAP
测试的结果如下:
Steps | AP | AP50 | AP75 | APS | APM | APL |
105700 | 26 | 50.1 | 24.8 | 9.3 | 27.3 | 40.5 |
120000 | 26.7 | 50 | 26.6 | 9.9 | 28 | 41.3 |
123000 | 26.4 | 50.3 | 25.4 | 9.3 | 28 | 40.5 |
126000 | 26.9 | 50.7 | 26.3 | 10 | 28.8 | 41.3 |
129000 | 26.1 | 49.3 | 25.2 | 9.6 | 28 | 39.7 |
132000 | 26.7 | 50.5 | 25.8 | 10.6 | 28.7 | 39.9 |
135000 | 26.6 | 50.8 | 25.4 | 9.8 | 28 | 41.3 |
136600 | 25.8 | 48.5 | 24.9 | 8.9 | 27.8 | 40.1 |
139300 | 26.8 | 50.7 | 25.9 | 9.9 | 28.7 | 41.8 |
139500 | 26.6 | 50.2 | 25.8 | 10 | 27.5 | 42.3 |
141000 | 27.2 | 50.9 | 26.8 | 10.7 | 28.6 | 42 |
144500 | 26.2 | 51.5 | 24.2 | 11 | 28.5 | 39.1 |
148500 | 27.1 | 51.1 | 26.3 | 10.2 | 29.1 | 41.4 |
152500 | 26.7 | 49.8 | 26 | 10.4 | 27.2 | 42.5 |
156500 | 26.9 | 50.8 |