FAST R-CNN小结


FAST RCNN与RCNN关系密切,它主要有一下方面改进:

1,Fast-RCNN将特征提取器、分类器、回归器合在了一起,都用CNN实现。

2,Fast-RCNN对整张图片进行特征提取,再根据候选区域在原图中的位置挑选特征。针对特征数目不同的问题,Fast-RCNN加入了ROI层,使得经过ROI层后,特征的数目相同,也就是图片的大小相同。

1. 步骤

         B0: 和RCNN中一样,用Selective Search 方法选取proposal

         B1&B2: 卷积和映射,除法

         B3:ROI Pooling

         B4: 全连接层 FC Layers

         B5: Multi-task Loss

    1.1 B0

    1.2 B1&B2

        即B1是将整张图进行卷积操作,得到feature map,B2相当于是将途中经过B0生成的2000个proposal映射到feature map上

用除法映射可能会得到一个小数,这时会有一个取整操作。

    1.3 B3

        ROI pooling 其实就是,每个映射到feature map上的形状都不相同,通过ROI Pooling将他们调整到同一形状,为后面fc层的输入做准备。

        1.3.1 原始ROI Pooling

          具体操作就是,打格子,比如打2*2,7*7图片都出现在feature map上,面对两个不同的大小,无论是一个小的proposal还是大的proposal,都是打7*7的格子,通过Max Pooling来得到7*7。

          这里图片上举一个打2*2格子的例子,打格子这个过程,假如图片大小是13*13,打成2*2,则是6.5,小数需取整一下。

          注意到这里有两次可能取整的地方,一是proposal映射feature上的一次取整,二是打格子过程中会有一次取整的。

因为它有两次取整操作,会对小物体检测不太友善。因此 通过1.3.2有所改进:

         1.3.2 ROI Algn

           先打出四个格子,变为2*2,重复该操作使之变为4*4,然后通过双线性插值。

           优点是这其中的操作,没有任何取整操作。

           而缺点是,其一该方法依赖于数据集,需要根据数据集作相应的调整,比如需要预测的东西是一个很长的物体则不适用,其二它忽略掉了一些特征。故又通过1.3.3改进。

            

            

          1.3.3 Precise ROI pooling

                

                红色的f(x,y)是在做双线性插值,右边分子在用积分求红色像素的面积,而分母在计算绿色框的面积。

             

    1.4 B4:全连接层 FC Layers

          拿到ROI Pooling层里的图片,得到一个feature vector

          

    1.5 B5:softmax分类与回归

             

参考目录:RCNN系列———LogM’s Blog

相关