一、什么是RoI Pooling
RoI是Region of Interest的简写,是指对一张图片的“感兴趣区域”,用于RCNN系列算法当中,输入图片在经过卷积网络得到feature maps后,利用选择搜索或者RPN算法来得到多个目标候选框,这些以输入图片为参考坐标的候选框在feature maps上的映射区域,即为目标检测中所说的RoI。
RoI Pooling的过程如上图所示,其中有两个计算细节的问题有:
问题1、以输入图片为参考坐标的候选框在feature maps上如何映射?
scale = Sf / Si, Xf = scale * Xi,Yf = scale * Yi,其中 Sf 为feature map的Size,Si 为输入image的Size,(Xf,Yf)为feature map上的坐标点,(Xi,Yi)为输入image的坐标点。
问题2、如何把形状和大小各异的候选区域归一化为固定大小的目标识别区域?
通过对feature map分块池化实现归一化到固定大小,假设ROI Pooling层的输出大小为 Wr * Hr,输入候选区域的大小为 Wi * Hi,ROI Pooling的过程包括两个步骤:
- 以Wr * Hr的尺寸大小把输入候选区域划分为多个子网格,每个窗口的大小是
( Hi / Hr) * (Wi / Wr),这里会有一个取整量化的操作;
- 对每个子网格窗口取最大元素作为输出,最终得到大小为Wr * Hr 的输出。
二、RoI Pooling存在的问题
候选框从原图坐标映射到的feature map坐标时,位置坐标可能存在浮点数,此时进行取整操作从而出现第一次量化;其次,在ROI Pooling求取每个小网格的位置时也同样存在浮点数取整的情况。这两次量化的结果都使得候选框的位置出现了偏差。
三、RoI Align
为了解决RoI Pooling两次量化问题,RoI Align不再采用取整量化操作,而是保留了浮点数的运算,并使用双线性插值的方式来求取像素值。具体的过程步骤如下:
假设需要输出2x2的fixed size feature map:
- 首先将ROI切分成2x2的单元格;
- 如果采样点数是4,将每个单元格子均分成四个小方格,以每个小方格的中心作为采样点;
- 对采样点像素进行双线性插值,得到该像素点的值;
- 对每个单元格内的四个采样点进行max pooling,得到最终的ROI Align结果。
本文暂时没有评论,来添加一个吧(●'◡'●)