【目标检测】Mask RCNN中:ROI Align和ROI Pooling的具体区别?

一、前言

ROI Align和ROI Pooling都是目标检测领域中常用的操作,用于在特征图上提取目标区域的特征。它们的区别在于对于目标区域的精细度不同。

  • ROI Pooling是在目标区域上进行固定步长的池化操作,将目标区域划分成子区域,并在每个子区域内进行最大池化,得到固定大小的特征图。这种方法简单易懂,但会丢失一些目标区域的细节信息,影响检测性能。
  • 而ROI Align则是在目标区域上进行双线性插值,得到更加精细的特征图。具体地,ROI Align首先将目标区域分成若干个小格子,然后对每个小格子内的像素进行双线性插值,最后将得到的像素值按照权重分配到对应的输出像素上。这种方法相较于ROI Pooling更加精细,可以更好地保留目标区域的细节信息,因此在一些对检测精度要求较高的场景中有更好的表现。但是,由于需要进行双线性插值,ROI Align的计算量相较于ROI Pooling更大,速度也相对较慢。

二、详细理解

2.1 ROI Pooling的局限性

ROI Pooling是针对ROI的Pooling操作,整个过程中涉及的两次量化分别发生在对ROI坐标和对ROI划分为等大子区域上的量化。ROI可以有不同的获得方法,如在Faster R-CNN中是由RPN回归得到,故ROI的坐标一般为浮点数,此处需要量化为整数;ROI均分为等大的子区域时,若不能整除,则需要量化。 665 × 665 665\times 665 665×665的矩形框经主干网络后的缩放步长为32,此框的大小也变为665 / 32 = 20.78,此时ROI Pooling将其量化为20;池化层的输出大小为 7 × 7 7\times 7 7×7,等分后的子区域大小为20 / 7 = 2.86,此时将等分后的子区域大小量化为2。由缩放步长可知,该特征图上1个像素的偏差在原图上就是32个像素的差别,这对小物体的检测效果影响很大。

2.2 ROI Align的思想和实现方法

ROI Align从ROI Pooling局限性的源头上进行了改进,也就是取消了量化操作,对于量化中产生的坐标为浮点数的像素,利用双线性插值计算其像素值。值得注意的是,ROI Align并不需要对两步量化中产生的浮点数坐标的像素值都进行计算,而是设计了一套优雅的流程。

在这里插入图片描述

论文中ROI Align的实现方法如上图所示,。其中,虚线框表示feature map,实线框表示一个ROI,Pooling输出大小为 2 × 2 2\times 2 2×2,每个子区域中有四个采样点。ROI Align基于双线性插值的方法,利用feature map上距离采样点最近的四个像素得到其像素值。整个过程中没有对ROI、均分ROI产生的子区域(bins)和采样点进行量化。每个bin中采样点的数目和位置存在一定的规则,即若采样点数为1,则该点位于bin的中心位置;若采样点数为4,则采样点的位置为均分该bin为4个小矩形后各自的中心点。通常这些采样点的坐标为浮点数,所以需要用到插值的方法获得其像素值。

三、详解 Mask-RCNN 中的RoI Align作用

3.1 RoI Align的产生背景

首先设想一个场景,假设从一个图像中锚定了一个人的边界框:

在这里插入图片描述

这个时候,要提取边界框中的人的特征,显然应该用 CNN 网络来做这个工作。CNN 处理之后会形成一个特征图。按照一般的处理方式,会使用 RoI Pooling 来缩小特征图的尺寸。但是在 Mask-RCNN 中提出了一个 RoIAlign 的方式,使得得到的小特征图可以更加的精确和信息完整。

3.2 RoI Pooling

举例来说,如果我们现在得到了一个特征图,特征图尺寸是 5 × 7,要求将此区域缩小为 2 × 2。此时,因为 5 / 2 = 2.5,是个非整数,所以此时系统会对其进行取整的分割,即将 “ 5 ”分割成 “ 3 + 2 ”,将 “ 7 ” 分割成 “ 3 + 4 ”,然后取每个区域的最大值作为本区域的值,整个过程如下所示:

在这里插入图片描述

3.3 RoI Align

可以知道,使用 RoI Pooling 存在一个很大的问题:

很粗糙地选用了一个值来代替一个区域的值,而且每个区域的尺寸还有很大的差距。

ROI Align的过程如下:

  1. 因为最终要将这个 5 × 7 5\times 7 5×7的特征图处理成 2 × 2 2\times 2 2×2的特征图,所以先将要进行ROI Align的过程转换成 2 × 2 2\times 2 2×2个相同规模的范围,这个过程中不做任何量化处理。

在这里插入图片描述

  1. 将这 4 个模块(①,②,③,④)内部同样进行这样的处理,再细分成 4 个规模相同的区域(图中虚线表示)。

在这里插入图片描述
3. 然后对于每一个最小的区域(包含不止一个像素点)确定其中心点(图中的红色 × )然后使用双线性插值法得到这个 × 号所在位置的值作为 最小格子区域 的值。

在这里插入图片描述
4. 对于每一个 小区域(①,②,③,④)都会有 4 个这样的值,把这 4 个值取他们的最大值作为每个 小区域(①,②,③,④) 的值。这样最终就可以得到 4 个小区域的 4 个值,作为最终的特征图输出结果。

在这里插入图片描述

提出的这种方式可以减缓过程中丢失原特征图的信息,中间过程全程不量化来保证最大的信息完整性。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: RoIPoolingRoIAlign 是两种用于在目标检测处理 Region of Interest (RoI) 的方法。 RoIPooling 是一种将 RoI 区域采样为固定大小的特征图的方法,它通过对 RoI 区域内的像素进行 max pooling 来实现。 RoIAlign 是一种改进 RoIPooling 的方法,它通过对 RoI 区域内的像素进行双线性插值来精确定位像素位置,从而更准确地处理 RoI 区域的特征。 总的来说,RoIAlignRoIPooling 更精确,但是计算量更大。 ### 回答2: RoIPooling(Region of Interest Pooling)和RoIAlign(Region of Interest Align)是在目标检测领域常用的两种处理特征图感兴趣区域的方法。在 Faster RCNNMask RCNN、YOLO等流行的目标检测算法,都用到了RoIPoolingRoIAlignRoIPooling将图像特征分为多个像素点,然后将感兴趣的区域划分成固定尺寸的子区域,每个子区域将其的特征点聚合成一个值。这种聚合方式可以使得不同大小的感兴趣区域都可以映射为相同尺寸的特征区域,从而方便以相同尺寸进行后续处理。但是,RoIPooling采用了近似的方式来计算感兴趣区域特征点的聚合值,可能导致特征点的位置偏移,从而降低了目标检测的精度。 RoIAlign通过双线性插值的方式计算感兴趣区域每个特征点的值,能够更加准确地计算出感兴趣区域的特征,提高目标检测的精度。RoIAlign对于小目标和低分辨率的图像使用效果更好,但由于需要进行双线性插值,计算复杂度也更高,计算时间更长。 综上所述,RoIPooling虽然计算速度较快,但准确度相对较低,适用于更大的感兴趣区域。RoIAlign计算准确度更高,但计算时间更长,适用于更小的感兴趣区域。在实际应用需要根据具体情况选择和平衡二者的使用。 ### 回答3: RoIPoolingRoIAlign是在物体检测领域广泛使用的两种特征金字塔网络用于从卷积神经网络提取感兴趣区域(Region of Interest)的技术。 RoIPoolingRoIAlign最初是在Faster R-CNN提出的,Faster R-CNN是目前最优秀的物体检测算法之一。这两种方法都是为了解决R-CNN存在的空间量化问题和边界偏移问题。 RoIPooling是在特征图提取感兴趣区域时,使用划分区域(sub-region)的方法。将RoI区域内的像素均匀划分成一个固定大小的子区域,然后在每个子区域内选择最大的值作为该子区域的输出结果。然后将这些划分的子区域进行池化操作,最终形成特征向量。 但是RoIPooling的问题是对于感兴趣区域边界部分的像素容易丢失,从而造成检测结果误差增加。为了解决这一问题,RoIAlign应运而生。 RoIAlignRoIPooling相比,最显著的改善是在划分子区域时,使用双线性插值法计算划分子区域内的特征值,避免了对子区域像素的量化损失。另外,RoIAlign还使用了更为精细的采样技术,防止了积累误差的产生,更加准确地提取了感兴趣区域的特征,从而提高了检测精度。 总之,RoIPoolingRoIAlign是在物体检测提取感兴趣区域时常用的技术,通过划分子区域和采样技术来准确提取感兴趣区域内的特征,提高检测精度,是物体检测不可或缺的技术手段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值