1.RoIPooling
RoIPooling顾名思义对Roi进行Pooling操作,主要用于目标检测任务。RoI(Region of interest)指的是一张图片中认为有存在目标的区域,例如下图中的蓝色和红色区域,这里我们不用去管Roi是如何提取的。他的特性是输入特征图的大小不确定,输出的特征图的大小固定。
一般使用到RoIPooling的流程为: 输入图片->多层卷积->得到共享特征图->候选框坐标(相对于输入网络图片的坐标)在共享特征图上做映射->得到候选框区域在共享特征图上对应的区域->在对应的区域上进行max 或者average pooling操作->得到fix feature map(这个fix feature map的size是我们设定好的,例如7×7)->多层全连接(进行分类或者回归)
对Roi的max pooling操作的kernel size记作A, 即A = 多层卷积后的feature map的size / fix feature map 的size
因此这里的A有可能不是整数 ,那么该如何处理呢?
第一种办法:对A进行四舍五入(最近邻插值法),然后一次从左到右对多层卷积后的feature map进行max pooling操作,这样做相当与丢弃了feature map右边的一些值。(faster R-CNN中使用的一种方式)
第二种办法: 不直接丢弃feature map的值,即改变A的值为多个不同的整数,使得划分多层卷积后的feature map的区域的个数等于fix feature map size 例如7×7, 然后对划分的每一个区域取最大值,即得到fix feauture map, 这样做相当将池化核(正方形)a×a变成了不同的(长方形)m1×n1,m2×m2,.... 如何确定这些值,比较难以处理。
RolPooling的优点:可以重用多层卷积后的feature map,加快了训练和测试时间,可以实现end-to-end训练
2.RoIAlign
RoIAlign针对第一种方法进行改进,何凯明在Mask RCNN中指出第一种方法会损失空间对称性 ,从而将最近邻插值法替换为双线性插值,并且命令为RoIAlign。双线性插值法可以参考下面的链接。
参考链接:RoIPooling ,SPP,双线性插值