1. 从Fast R-CNN到Fast R-CNN

transformer可以做回归吗 faster rcnn回归_卷积

 

由图可见,Faster-RCNN引入了RPN网络(region proposal network)来代替selective-search,

这使得整个网络实现了端到端,即在统一的架构处理所有问题。这也是比Fast更快的原因,避免了selective-search的过程,而全替换为CNN网络。

2. 细节

  很多相似的步骤在上一节Fast R-CNN叙述过,这节主要了解一下它的RPN的步骤和在后面它做分类与回归是怎么回归边框的。

  下面是整个流程图。

transformer可以做回归吗 faster rcnn回归_特征点_02

 

 

 

  2.1 Backbone

      也就是经过Backbone得到Feature Map的网络,其中Backbone有很多可以选择,比如Resnet,VGG等等,这里图中给的是VGG16。

      输出是1 * 256 * 38 * 50的大小

 

  2.2 FPN

    

transformer可以做回归吗 faster rcnn回归_特征点_03

      它的目的就是为了生成region proposal,

      首先,它通过3 * 3卷积,这里这个3 * 3卷积相当于是一个承接上面步骤的一个操作,可有可无,

      其次,分两条支路,上面一条做分类,下面一条做回归。

        先说上面这条,它先通过1 * 1卷积,改变特征的通道数变为 1 * 18 * 38 * 50,为什么这里是18,可理解为2 * 9 ,把每个特征点映射回映射回原图的感受野的中心点当成一个基准点,然后围绕这个基准点选取k个不同scale、aspect ratio的anchor。论文中3个scale(三种面积

transformer可以做回归吗 faster rcnn回归_transformer可以做回归吗_04

),3个aspect ratio( {1:1,1:2,2:1} ),在这一步它产生anchor,每个特征像素点要产生9种不同的anchor,然后每个anchor分类为0或者1,故为2,所以将生成2 * 9 * 38 * 50 = 17100 anchors。然后经过reshape,这里因为要方便softmax做回归,所及将它reshape成2通道的(38 * 9) * 50,可以理解为它本来是横着放的形状,通过reshape,将它竖着放,便于分类。然后第二个reshape再单纯地将它变回去1 * 18 * 38 * 50。

 

        再说下面这条回归,它也是先通过1 * 1卷积,改变特征的通道数变为 1 * 36 * 38 * 50,这里为什么是36呢, 可理解为4 * 9, 9是9个anchor,4则是4个targets,分别对应proposal的中点坐标和它的宽高即(x,y,w,h)。但这里它回归的并不是(x,y,w,h),而是它的偏移量Δx和Δy,为什么呢,因为不均衡,假如回归x和y的话,有一个大物体,预测与目标之间相距30pixel, 而小物体可能只差5 pixel,因此损失会比较偏向于大物体。

        具体回归方法:

         

transformer可以做回归吗 faster rcnn回归_特征点_05

          解释一下,粉色圈起来的是网络生成的偏移量,即predict box 对anchor的偏移,灰色的是我们自己算的偏移量,即ground truth 对anchor的偏移,称为Encode,而学习目标自然就是让前者接近后者的值。蓝色的圈则是我们想要的称为Decode。

    2.3 ROI Pooling &分类与回归

        与上一节Fast R-CNN相似,就不赘述了。

 

3. 总结

   对比Fast R-CNN,Faster现在增加的RPN网络可以与其他3个阶段共用同一个特征提取结果了,省掉了selective-search的时间。

 

 

 

 

参考目录:

      RCNN系列———LogM’s Blog

      Faster R-CNN———大熊的机器梦的文章