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