图解ROI Pooling层
图1:Fast R-CNN 网络结构
从图1可以看出,ROI Pooling层在整个Fast R-CNN中的位置
Fast R-CNN的流程是,以整张图片为输入,利用CNN得到图片的特征层(Feature Map);然后利用Selective search算法得到原始图像空间中的候选框(Proposal),并将这些候选框映射到特征层(Feature Map),这些映射区域就叫ROI(Region of Interesting)。这些ROI即作为ROI Pooling层的输入,经过ROI 池化操作,输出得到固定维度的特征表示,参考图2。
图2: Object detection pipeline with region of interest pooling
ROI Pooling将不同输入尺寸的feature map(ROI)通过分块池化的方法得到固定尺寸的输出,其思想来自于SPPNet。将SPPNet中多尺度的池化简化为单尺度,只输出固定尺寸为(pool_w*pool_h)的feature map。
和R-CNN对比可知,Fast R-CNN加入ROI Pooling层有以下两个好处:
- 解决了尺度缩放问题,接受任意尺寸的输入,warp操作不再需要,这有效避免了物体的形变扭曲,保证了特征信息的真实性。
- 不需要对每个候选区域(Proposal)都提取特征,采用映射方式从整张图片的feature map,获取固定大小(pool_w*pool_h)的特征。
Here’s a example presented in form of a nice animation:
后记:
Fast R-CNN仍然沿用了R-CNN中selective search生成proposal的方法。这一方法产生的proposal即使经过NMS也会达到2k~3k个。这种低效率的滑动窗口选择方法,生成了大量无效区域,多了造成算力的浪费,少了则导致漏检。
在后续的Faster R-CNN中提出了RPN(Region Proposal Networks)区域候选网络,实现了利用神经网络自己学习生成候选区域的策略,充分利用了feature map的价值,在目标检测中彻底去除了Selective search方法,使检测任务可以由神经网络端到端地完成。
RPN网络将候选区域的选择从图像中移到了Feature Map中,由于特征图的尺寸远小于原始图像,因此这里生成候选区域的计算量成数量级降低。
附图:
An image from the Pascal VOC dataset annotated with region proposals (the pink rectangles)
RoIPooling 的缺点
RoI pooling generates features for each region proposals, which hinders the gradients being smoothly back-propagated from region-level to convolutional feature maps.
不使用预训练模型不收敛,可能就是这个原因。
The proposal-based methods work well with pretrained network models because the parameter initialization is good for those layers before RoI pooling, while this is not
true for training from scratch.