图解 RoIAlign 以及在 PyTorch 中的使用(含代码示例)

您所在的位置:网站首页 roil什么意思中文 图解 RoIAlign 以及在 PyTorch 中的使用(含代码示例)

图解 RoIAlign 以及在 PyTorch 中的使用(含代码示例)

2024-07-12 02:43| 来源: 网络整理| 查看: 265

文章目录 RoIAlign 的用处RoIAlign 计算原理双线性插值(Bilinear Interpolation) pytorch中的实现简单示例在FasterRCNN中的使用示例 参考链接

RoIAlign 的用处

RoIAlign 用于将任意尺寸感兴趣区域的特征图,都转换为具有固定尺寸 H×W 的小特征图。

与RoI pooling一样,其基本原理是将 h × w h×w h×w 的特征划分为 H × W H×W H×W 网格,每个格子是大小近似为 h / H × w / W h/H×w/W h/H×w/W 的子窗口 ,然后将每个子窗口中的值最大池化到相应的输出网格单元中。想复习RoI pooling概念的可以看这篇。

RoIAlign 其实就是更精确版本的 RoIPooling,用双线性插值取代了RoIPooling中的直接取整的操作。

下面用一个具体图例看下 RoIAlign 计算原理。

RoIAlign 计算原理

输入一个feature map,对于每个不同尺寸的proposed region,需要转换成固定大小 H × W H×W H×W的 feature map,H和W是这一层的超参数。 在这里插入图片描述 黑色粗框部分是一个 7 × 5 7×5 7×5 大小的 proposed region,首先切分成 H × W H×W H×W 个sections(这里以2x2为例): 在这里插入图片描述 对每个section采样四个区域,用红色×表示其中心位置: 在这里插入图片描述 每个section中四个红色×的值,由双线性插值计算: 在这里插入图片描述 对每个 section 中四个值进行 max pooling,输出结果: 在这里插入图片描述 就是我们所需要的固定大小输出了。

这个固定大小输出可以通过全连接的层,用于边界框回归和分类,常用于检测和分割模型中。

双线性插值(Bilinear Interpolation)

借用下图从视觉上来理解双线性插值,黑点上的双线期插值是附近四个点的加权和,权值是四个点对应的颜色矩形在总面积中的占比。比如左上角黄点 ( x 1 , y 2 ) (x_1,y_2) (x1​,y2​) 对应的是右下较大的黄色矩阵面积。 在这里插入图片描述 在这里插入图片描述

pytorch中的实现

RoIAlign在pytorch中的实现是torchvision.ops.RoIAlign,torchvision.ops中实现的是计算机视觉中特定的operators。

class: torchvision.ops.RoIAlign(output_size, spatial_scale, sampling_ratio)

output_size (int or Tuple[int, int]) – 输出大小,用 (height, width) 表示。spatial_scale (float) – 将输入坐标映射到框坐标的比例因子。默认值1.0。sampling_ratio (int) – 插值网格中用于计算每个合并输出bin的输出值的采样点数目。如果> 0,则恰好使用sampling_ratio x sampling_ratio网格点。如果


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3