我们做了个实验,目的是验证当我们自己训练的时候能否达到论文中的给出的结果,判断我们平时训练的方法是否有问题。
这里使用了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
测试的结果如下:

StepsAPAP50AP75APSAPMAPL

由结果可以看到loss其实还是慢慢在降的,只是降的幅度较小,作者采用的是迂回往前的方式,慢慢爬出来的,并且可以看到基本在320000 iteration的时候,mAP就基本不在升高了,所以yolov3.cfg中作者设置在400000 的时候learning rate 乘0.1,之后可以看到mAP一下就升高到32.4%。
以下是结果的对比:

Steps
AP
AP50
AP75
APS
APM
APL
Paper
Paper 608x608
Author
416x416
608x608

收藏
一键三连
扫一扫,分享海报
专栏目录