1. ROI Pooling 的局限性分析

作者提出ROI Align的初衷就是为了解决ROI 操作中两次量化造成的区域不匹配(mis-)的问题 。实验证明也很好的解决了这一问题
本文将从两个方面进行分析 。
1. ROI的局限性分析
在常见的两级检测框架(比如Fast-RCNN,-RCNN,RFCN)中,ROI的作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作 。由于预选框的位置通常是由模型回归得到的,一般来讲是浮点数 , 而池化后的特征图要求尺寸固定 。故ROI 这一操作存在两次量化的过程 。
事实上,经过上述两次量化 , 此时的候选框已经和最开始回归出来的位置有一定的偏差,这个偏差会影响检测或者分割的准确度 。在论文里 , 作者把它总结为“不匹配问题() 。
下面我们用直观的例子具体分析一下上述区域不匹配问题 。如图1所示,这是一个-RCNN检测框架 。输入一张800*800的图片 , 图片上有一个665*665的包围框(框着一只狗) 。图片经过主干网络提取特征后,特征图缩放步长()为32 。因此,图像和包围框的边长都是输入时的1/32 。800正好可以被32整除变为25 。但665除以32以后得到20.78,带有小数,于是ROI 直接将它量化成20 。接下来需要把框内的特征池化7*7的大小,因此将上述包围框平均分割成7*7个矩形区域 。显然 , 每个矩形区域的边长为2.86,又含有小数 。于是ROI 再次把它量化到2 。经过这两次量化,候选区域已经出现了较明显的偏差(如图中绿色部分所示) 。更重要的是,该层特征图上0.1个像素的偏差,缩放到原图就是3.2个像素 。那么0.8的偏差,在原图上就是接近30个像素点的差别,这一差别不容小觑 。
图1:ROI 示意图
2. ROI Align 的主要思想和具体方法
为了解决ROI 的上述缺点,作者提出了ROI Align这一改进的方法(如图2) 。ROI Align的思路很简单:取消量化操作,使用双线性内插的方法获得坐标为浮点数的像素点上的图像数值,从而将整个特征聚集过程转化为一个连续的操作,。值得注意的是,在具体的算法操作上,ROI Align并不是简单地补充出候选区域边界上的坐标点 , 然后将这些坐标点进行池化,而是重新设计了一套比较优雅的流程 , 如图4所示:
这里对上述步骤的第三点作一些说明:这个固定位置是指在每一个矩形单元(bin)中按照固定规则确定的位置 。比如,如果采样点数是1(也即是在图3中每个bin里面有1个采样点),那么就是这个单元的中心点 。如果采样点数是4(也即是在图3中每个bin里面有4个采样点),那么就是把这个单元平均分割成四个小方块以后它们分别的中心点 。显然这些采样点的坐标通常是浮点数 , 所以需要使用插值的方法得到它的像素值 。在相关实验中,作者发现将采样点设为4会获得最佳性能 , 甚至直接设为1在性能上也相差无几 。事实上,ROI Align 在遍历取样点的数量上没有那么多,但却可以获得更好的性能,这主要归功于解决了的问题 。值得一提的是,我在实验时发现,ROI Align在数据集上的提升效果并不如在COCO上明显 。经过分析,造成这种区别的原因是COCO上小目标的数量更多,而小目标受问题的影响更大(比如,同样是0.5个像素点的偏差,对于较大的目标而言显得微不足道,但是对于小目标,误差的影响就要高很多) 。

1. ROI Pooling 的局限性分析

文章插图
图2:ROI Align示意图
图3:原文图
图4
参考文献
【1. ROI Pooling 的局限性分析】@/