RoIAlign 介绍
RoIAlign 用于将任意尺寸感兴趣区域的特征图,都转换为具有固定尺寸 H×W 的小特征图。
其方法原理参考博客:https://blog.youkuaiyun.com/Bit_Coders/article/details/121203584
ops.roi_align 参数介绍
ops.roi_align是一种在计算机视觉中常用的操作,用于将感兴趣区域 (Region of Interest, ROI) 对齐到固定大小的特征图上。该操作通常用于目标检测、目标识别和姿态估计等任务中。它在torchvision做成了一个接口:
1.输入参数:
- input:输入特征图,形状为 (N, C, H, W),其中 N 是批量大小,C 是通道数,H 是特征图的高度,W 是特征图的宽度。
- rois:感兴趣区域的坐标,形状为 (R, 5),其中 R 是感兴趣区域的数量。每个感兴趣区域由 [batch_index, x1, y1, x2, y2] 组成,其中 batch_index 是感兴趣区域所属的批量索引,(x1, y1) 是感兴趣区域左上角的坐标,(x2, y2) 是感兴趣区域右下角的坐标。
- output_size:输出特征图的大小,形状为 (oh, ow),其中 oh 是输出特征图的高度,ow 是输出特征图的宽度。
2.可选参数:
-
spatial_scale:感兴趣区域相对于输入特征图的缩放比例。默认为 1.0(和output_size功能相同,两个参数指定一个即可)。
-
sampling_ratio:ROI池化操作的采样比率。默认为 -1,表示使用自适应采样。
输出: -
output:对齐后的感兴趣区域特征图,形状为 (R, C, oh, ow),其中 R 是感兴趣区域的数量,C 是通道数,oh 是输出特征图的高度,ow 是输出特征图的宽度。
总结来说,ops.roi_align 是将输入特征图中的感兴趣区域按照给定的输出大小进行对齐操作(把input通过roi对齐为output_size或者spatial_scale的格式大小),输出对齐后的感兴趣区域特征图。通过调整参数,可以控制感兴趣区域的尺寸和对齐方式,从而适应不同的视觉任务需求。
应用举例
比如我在应用中:
feat_aligned=ops.roi_align(seg_logits_tem.unsqueeze(0),boxes[i].float(),(int(h_c/8),int(w_c/8)))
作用是将输入的 seg_logits_tem.unsqueeze(0) 特征图中的感兴趣区域 boxes[i] 对齐到输出大小为 (int(h_c/8), int(w_c/8)) 的特征图上。