论文地址

内容

  • 经典的基于区域的检测器faster-rcnn,可以看成以ROI pooling为界的两个部分组成的网络: 一个部分是ROI pooling层之前的特征提取部分以及RPN候选框提取部分,该部分计算共享;另外一个部分是ROI之后,用于目标检测,该部分对于每个proposal框都需要进行一遍计算。后半部分由于是per-ROI的,所以比较费时。
  • 另外关于ROI pooling插入的位置
    1. 越靠近输入,检测部分的网络就越深,检测的效果会越好,但是相应带来的坏处是费时
    2. 越远离输入,检测部分的网络就越浅,检测的效果相对会差一点,但是速度快。
  • 在基于resnet的faster-rcnn中ROI pooling层是插在最后一个residual block前面的,以换到较好的检测结果。同时在卷积block前插入ROI pooling能够打破后面网络的平移不变性,使得后序网络对目标的位移会更敏感
  • 基于前面内容,作者提出了一种全卷积网络,所有的计算基本上是共享的。并且讲检测部分网络的深度压缩到了0. 从下图可以看到,RFCN前101层全是一个共享的subnet,ROI-wise的子网络深度为0
    RFCN论文阅读笔记

网络结构

  • overview
    RFCN论文阅读笔记

  • backbone结构

    • resnet101,在原始的100个卷积层后面加了一个1024-d 1*1的卷积核,将原来最后卷积出来的2048维降低到1024维。
    • 同时为了使得出来的score map的分辨率高一点,将原始res101的有效stride从32降低到16(修改部分,在conv5的这个block里面将stride从2改到1,前面部分都不动;同时为了补偿,在conv5 block这个阶段的卷积都采用hole algorithm, 其实就是dilation卷积?扩大感受野)
  • Position sensitive score maps & Position sensitive RoI pooling

    • backbone出来的feature map通过一个k*k*(C+1)的1*1卷积核得到score map,尺度为(~, k*k*(C+1), H, W).
    • 每个ROI划分为k*k的网格,每个网格对应不同的位置
    • 每个proposal框通过ROI Pooling后得到(C+1, k, k)的score map,第i行第j列位置对应的是k*k*(C+1)通道中的某一个(C+1)通道的score maps位置的average pooling,(i,j都属于1到k)。
    • 然后k*k维度进行投票(论文中是取均值)可以得到一个1*(C+1)的向量,然后经过softmax可以得到分类概率
    • 对于坐标回归也类似,不过feature maps的通道数变成k*k*4.对于坐标回归,论文中没有区分不同类别的坐标,其实作者也提到跟faster rcnn一样采用k*k*4*C维度也是applicable的。

RFCN论文阅读笔记

  • 训练
    • 总的损失为交叉熵损失加上回归损失(smooth1)
    • 与gt框IOU超过0.5的ROI为正的样例,否则为负样例

总结

  • faster-rcnn在ROI pooling之前的部分是共享计算的,但是之后的部分,是对每个ROI分别进行计算的,所以会比较耗时。
  • 而RFCN的整个网络都是共享计算的,因此速度更快;同时引入了位置信息,因此检测效果会更好。

参考

  1. Faster R-CNN改进篇(二): RFCN ● RON

相关文章: