在Two stage的目标检测算法中,需要先提取出候选框,然后对候选框作精细分类和进一步的回归。这里存在一个问题,即提取出的候选框大小不一,而后续的分类和回归网络需要固定大小的输入。在RCNN中是直接采用了resize操作将不同大小的候选框处理为同等大小,但是这样的暴力做法会使得候选框严重变形,从而造成精度损失。到了Faster-RCNN和Mask-RCNN分别采用ROI Pooling和ROI Align完成这一操作。
ROI Pooling
在Faster-RCNN中,RPN提取出一系列的候选框,经过ROI Pooling处理成大小相同的特征图输入到Fast-RCNN中做精细分类和进一步的回归。假设后续网络输入大小为w×h,ROI Pooling先是将候选框根据降采样比例映射到特征图上,此时得到的候选框对应的特征图很可能是带浮点数的,ROI Pooling选择直接取整;之后将特征图等分为w×h个单元,此时等分之后还是带浮点数的,没关系,ROI Pooling会进行第二次取整;之后在每个单元内执行max pooling得到w×h大小的特征图。
ROI Pooling两次取整执行max pooling的思路较为简单粗暴,可以使得网络进行前向和反向传播,并且大大提升了训练和推理的速度,但是同时也带来了不可避免的精度下降,因为在特征图上两次取整会造成偏移和精度损失,因为特征图上零点几的差异映射到原图上就是较大的偏移,特别是对于小目标的检测不友好。鉴于ROI Pooling的缺点,Mask-RCNN创新性地提出了ROI Align。
ROI Align
ROI Align第一步也是首先将候选框映射到特征图上,但不同于ROI Pooling的是它没有取整,而是保持浮点数的形式;下一步便是将特征图等分为w×h的单元,此时依然保留浮点数不取整。在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。这四个固定位置的选取方法是将单元等分为四个更小的单元,每个更小单元的中心点作为该固定位置,这样的话每个固定位置周围会有四个原始特征图上的值,运用双线性内插法求得每个位置得值,再执行max pooling操作得到要求大小的特征图。
ROI Align舍弃了取整的操作,更加完整地保留了原图的信息,尽可能地减小偏差,而且才用双线性内插法更多地使用了原图信息,使得结果更加准确。
总结
ROI Align和ROI Pooling在大目标检测上精度相差不大,而且ROI Pooling还要更快些;但是在小目标检测时尽量选择ROI Align,保证准确率。
一文带你吃透ROI Pooling和ROI Align
最新推荐文章于 2022-07-05 21:15:03 发布