Mask-RCNN中的ROIAlign, ROIPooling及ROIWarp对比

RoI Pooling

实现从原图ROI区域映射到卷积区域最后pooling到固定大小的功能,然后通过池化把该区域的尺寸归一化成卷积网络输入的尺寸。

ROIAlign

上面RoI Pooling从原图ROI映射到卷积区域,即原图ROI与特征图ROI之间的映射,使用了stride间隔的取整,使得特征图ROI再映射回原图ROI的时候有stride的误差。尤其经过最大值池化后的特征与原ROI之间的空间不对齐就更加明显了。
因此,ROIAlign从原图到特征图直接的ROI映射直接使用双线性插值,不取整,这样误差会小很多,经过池化后再对应回原图的准确性也更高些。
这里假设得到的浮点型坐标为(x,y),取其周围最近的四个点,在Y方向内插两次,再在X方向内插一次,得到新的值。ROI的形状是不变化的。
但是下面的warp是先改变形状的,这也是这两种操作的不同之处。

RoI Warping Layer

在pooling层前面,添加一层,将特征图crop一块,然后warp到固定的尺寸,这里的warp采用长度和宽度两个方向的双线性插值。
具体参考如下网址:http://dubur.github.io/

这里写图片描述

align?一致吗?个人觉得信息的降维,必然会有一定的损失即使是ROIAlign也不可能完全对齐,只能相对精确罢了。

你可能感兴趣的:(mask-rcnn,Deep,Learning,Tensorflow)