一背景
一般而言,两阶段检测器在速度上有优势,在速度上相比于单阶段检测器会稍慢一点,所以,Light-Head R-CNN的设计初衷是两阶段的物体检测器也可以做的更快,而且在精度上尽可能的提高。
二 对比分析
Faster R-CNN 和R-FCN在小模型上不够快的原因。
- Faster R-CNN 用两个厚重的fc(或者resnet 的第5个stage)做proposal的预测,
R-FCN则通过制造了一个 (类别数x7x7)channel的大score map。
除去basemodel的那部分,两个方法都引入了比较大的计算量。
基于前面的观察,需要针对性的解决问题。里面最重要的点,就是把pooling的feature map变得特别薄。因为Head那一部分,复杂度有两个因素决定:pool的feature map的厚度(减少R-FCN的score map)。以及对pool出来的feature进行分类和回归的那一部分(减少Faster R-CNN)。
三主要改进
3.1pooling的feature map变薄
针对这个问题,在R-FCN上做了一次实验。尝试把R-FCN的pooling的feature map压到10×P×P,相当于把原来3900多个channel,压到了490个channel。然后发现掉的点几乎没有。并且在VOC上做过一系列的实验,压成10×P×P是根本不会掉点的。在COCO上面只会掉零点几,再把它压得更多一点,压成5×P×P也只是掉零点几。
3.1增加一层廉价的全连接
feature map被压薄了之后,是没办法直接Average voting出来最后的结果的。但是可以通过在后面加一个到81类的全连接层来出最后的结果。
四 结论
前面的baseline已经达到了37.7,然后把pooling做一个alignment,大概能涨1.3个点;我们在训练的时候用的是0.3的NMS,换成0.5之后,能涨0.5左右;然后加multiscale train也能涨一个点。也就是最后的40.8的结果。尝试了加入feature pyramid,大概是41.5。