参考:https://www.sohu.com/a/212814713_610300
论文:https://arxiv.org/abs/1711.07264
源码:https://github.com/zengarden/light_head_rcnn
Motivation:
two-stage方法的头太重,STOA的two-stage方法(Faster和R-FCN),Faster R-CNN 用两个厚重的fc做proposal的预测(ROI数目通常比较大,则非常慢),而R-FCN则通过制造了一个 (类别数x7x7)channel的大score map(在类别数多时PS score map计算量很大),除去basemodel的那部分,两个方法都引入了比较大的计算量。
提出想法:
里面最重要的点,就是把pooling的feature map变得特别薄。为什么要把它变薄呢?因为Head那一部分,复杂度有两个因素决定:pool的feature map的厚度;以及对pool出来的feature进行分类和回归的那一部分,如果这部分逻辑比较多,它依然会对于整体的网络效率有所影响。
另外,以上两个模型本身存在一些问题。Faster fc前面的GAP,为了减少计算量引入(ROI的channel数目也比较大),但是会使ROI失去位置相关信息。R-FCN直接使用GAP投票进行预测的精度不够高。
实验探索:
最早的时候在原本的R-FCN上做了一次实验。我们试过把pool的feature map的厚度压到10×P×P,相当于把原来3900多个channel,压到了490个channel。然后发现掉的点几乎没有。我们在VOC上做过一系列的实验,压成10×P×P是根本不会掉点的。在COCO上面只会掉零点几,再把它压得更多一点,压成5×P×P也只是掉零点几。
本来也想做一组基于faster R-CNN的把feature map变薄的实验。但是这个实验其实不能直接这么比。 这是为什么呢?因为第二个stage的两个全连接层计算量挺大的,不能直接把pooling的feature map给减小;即便是要减小,也要把第二个stage的计算量给砍下来。
因此在faster的基础上更改显得不那么可行(我猜的^-^)
模型创新:
作者主要是在r-fcn基础上做的改进。由于压薄pool的feature map的厚度对精度影响很小,作者用sparse convolution产生thin feature map替代了可直接投票预测的PS score map。但是由于得到的PS score map无显式的类别信息,后面需要加一个卷积层得到最后的结果。同时,因为用于pooling的feature map很薄了,所以可以上一个比较大一点的卷积层,这个也会带来一点点性能的提升。
如此,便得到了最终的子弹头模型啦!!
上图:
撒花!!!
喜欢的小伙伴们多多打赏,点赞哦~~~么么哒
网友评论