目标检测系列:light head rcnn

论文链接:https://arxiv.org/pdf/1711.07264.pdf

1. Introduction

都知道two-stage方法要比one-stage精度高,但是运行速度要慢很多,通过实验发现,faster rcnn和R-FCN在ROIPooling附近的时候计算量剧增,faster rcnn在roi后有两个全链接层,并且roi计算不共享,因此计算量大是正常的,而R-FCN则是因为会产生一个大scores map,虽然速度会比faster rcnn快,但是相对于one-stage方法还是要慢,本文提出一个light head rcnn两阶段方法,针对MSCOCO速度可以达到102FPS而精度会有30.7 mmAp。

2. Light head R-CNN

这里说的head是指主干基础网络,分为两部分:R-CNN子网和ROIPooling部分

2.1 RCNN 子网

目标检测系列:light head rcnn

  1. Faster rcnn子网:
    经过ROIPooling后,vgg16网络下会接着两个全链接层,进行分类和回归,而在Resnet网络下后面会接着几个卷积层,注意:这里的R-CNN子网是计算不共享的
  2. R-FCN
    这是faster rcnn 的一个改进,将不共享的地方前移,引入score map进行分类和回归,但是可以看出彩色的中间部分很“重”,通道数太多,通常为classppclass*p*p这么多通道数,然后每个roi都要进行都要进行操作,这里是不能共享操作的。
  • 从精度角度看: faster rcnn在ROIPooling后为了减少参数直接进行了global avg pooling,这会对空间位置坐标产生损害,而R-FCN直接在位置-敏感pooling直接产生结果,省去了不共享的卷积和全链接操作,通常效果没有那么好。
  • 从速度上看: Fater rcnn 不用说了慢。而R-FCN因为产生了大量score map,增加了时间/空间的消耗。

2.2 Light head rcnn

  • 基础的特征提取器: 我们有两种网络,一个是较为重量的网络,用L表示:采用Resnet101提取特征,另一个是较为轻量的Xception-like结构的网络,网络结构如下图。最后两个卷积块为conv4和conv5,分别用c4和c5表示
    目标检测系列:light head rcnn
  • thin feature map: 在c5卷积层上采用分离式卷积层,结构如下图,目的很简单,在保持感受野不变的同时,减少参数量,在实验中,设置k=15k = 15,而对S网络来说我们设置Cmid=64C_{mid}=64,对L网络来说设置Cmid=256C_{mid}=256。同时,我们减少输出的通道数,从原来RFCN的classppclass*p*p变成10pp10*p*p,因为kk很大,所以卷积得到特征图的感受野就很大,这对后面特征图pooling的操作有很大的影响,精度会提升。
  • 目标检测系列:light head rcnn
  • **RCNN 子网:**只使用一个全链接层,通道数是2048,然后再在这个后面接上两个子网,一个是用来分类的,一个是用来进行回归操作的。要注意一点,这里的每个box location只产生4个通道,也就是说所有类别共享坐标回归。,如下图所示。
  • 目标检测系列:light head rcnn
  • RPN: 这和faster rcnn的RPN基本相同,利用C4层产生anchors,在每个点上产生五中基本尺寸{322,642,1282,2562,5122}\{32^2,64^2,128^2,256^2,512^2\},三个方向比率的{1:2,1:1,2:1}\{1:2,1:1,2:1\}anchors,然后通过ROI预测子网,找出和真实边框的iou>0;7的作为正例标签,iou<0.3的作为负样本标签,这都和faster rcnn的操作相同。

3. 实验细节

  1. 每个mini-batch=2,训练的时候每张图片产生2000个rois,测试的时候每张图片产生1000个rois。
  2. 采用在线难例挖掘(OHEM)技术
  3. 通过对比实验发现,我们减少了score map 的通道数,从8177=396981*7*7=3969降到1077=49010*7*7=490,通道数大幅度减少,但是精度并没有明显降低,加快了速度
    目标检测系列:light head rcnn
  4. 我们在C5使用大的卷积层,但使用了Inception结构,参数并没有增多,但是增大了感受野,对精度也是有所提升
    目标检测系列:light head rcnn
  5. R-CNN子网,使用了2048通道数的全链接,同时要注意并没有使用dropout,因为我们score map非常小,实验中设置p=1,也就是说channel数为10这个速度是非常快的。同时使用了Large kernel和light head的实验结果如下
    目标检测系列:light head rcnn

4 总结

本文的目的是加速网络运行的速度,基于R-FCN和Faster RCNN进行改进,同时加入了Inception 结构的思想减少参数,并没有特别惊艳的想法,但是取得的速度和精度都还很好