1、为什么小模型的作为backbone效果会差?
在深度学习目标检测(图像分割)领域,我们发现当我们使用层数越深,并且在imagenet上表现越好的分类网络作为backbone时,它的检测和分割效果越好效果越好。比如我们使用resnet101作为backbone时候,faster_rcnn在coco2017检测数据集上的mAP可以达到40.1,而使用resnet50作为backbone时候,mAP只达到37.1。而ssd使用resnet50作为backbone时候,mAP达到30.6,使用mobilenet作为backbone只达到21.7。参看gluoncv公布的训练结果。Detection - gluoncv 0.5.0 documentationgluon-cv.mxnet.io
那为什么使用mobilenet这种小网络会比resnet101这种大网络效果差这么多呢?主流的想法是小网络的容量小、表现效果差,等等。
那到底是那么原因呢?我们可以观察gluoncv官网的ssd_mobilenet
2、你的神经网络真的收敛了么?
既然知道小网络作为backbone效果差的真正原因是模型欠拟合,那如果我们要提高小网络的效果,最主要的任务就是降低小网络的loss(当然大网络的loss如果被进一步降低效果自然越好,比如可以观看faster_rcnn+fpn+resnet101就比faster_rcnn+resnet101的loss低一点点,当然效果也就提升一点点)。
而我们不妨假设如果小网络最终”收敛“的loss如果可以达到大网络收敛的loss,那小网络能否达到大网络的效果呢?可能由于小网络的容量小,参数少,很难收敛到大网络的