文章目录
所有代码已上传到本人github repository:https://github.com/zgcr/pytorch-ImageNet-CIFAR-COCO-VOC-training
如果觉得有用,请点个star哟!
代码均在pytorch1.4版本中测试过,确认正确无误。
之前有同学提出从零实现RetinaNet(二)中与原论文点数对标的换算方式不太合理,应该按照最终输入网络的图片大小来换算对标分辨率,因为只要最终输入的网络图片大小一样,那么计算量(这里指FLOPS)就完全一样。如果按照这种换算方式,那么我的resize方法与RetinaNet原始resize方法对标分辨率如下:
retinanet_resize=400,my_resize=667
retinanet_resize=500,my_resize=833
retinanet_resize=600,my_resize=1000
retinanet_resize=700,my_resize=1166
retinanet_resize=800,my_resize=1333
根据新的分辨率对标,我使用my_resize=667和1000在COCO数据集上分别训练了不同分辨率下的RetinaNet。除了下表列出的超参数外,模型的其他超参数设置与从零实现RetinaNet(七)中ResNet50-RetinaNet-aug-iscrowd的参数设置完全一样。
模型表现如下:
Network | batch | gpu-num | apex | syncbn | epoch5-mAP-loss | epoch5-mAP-loss | epoch12-mAP-loss |
---|---|---|---|---|---|---|---|
ResNet50-RetinaNet-myresize667 | 24 | 2 | yes | no | 0.264,0.61 | 0.298,0.51 | 0.302,0.49 |
ResNet101-RetinaNet-myresize667 | 24 | 2 | yes | no | 0.269,0.61 | 0.293,0.51 | 0.298,0.49 |
ResNet50-RetinaNet-myresize1000 | 16 | 4 | yes | no | |||
ResNet101-RetinaNet-myresize1000 | 16 | 4 | yes | no |
可以看到如果采用这种方式对标,我实现的RetinaNet和论文中的点数基本一致,在论文中resize=400的情况下只比论文报告点数(0.305)低了0.3个百分点。