roi_align¶
- torchvision.ops.roi_align(input: Tensor, boxes: Union[Tensor, list[torch.Tensor]], output_size: None, spatial_scale: float = 1.0, sampling_ratio: int = - 1, aligned: bool = False) Tensor [源代码]¶
执行 RoI Align 算子,使用平均池化,如 Mask R-CNN 中所述。
- 参数:
input (Tensor[N, C, H, W]) – 输入张量,即包含
N
个元素的批次。每个元素包含C
个维度为H x W
的特征图。如果张量已量化,则我们期望批次大小为N == 1
。boxes (Tensor[K, 5] or List[Tensor[L, 4]]) – 区域的边界框坐标,格式为 (x1, y1, x2, y2)。坐标必须满足
0 <= x1 < x2
和0 <= y1 < y2
。如果传递单个张量,则第一列应包含对应批次元素的索引,即[0, N - 1]
中的数字。如果传递张量列表,则每个张量对应于批次中元素 i 的边界框。output_size (int or Tuple[int, int]) – 池化操作后输出的大小(以 bin 或像素为单位),格式为 (height, width)。
spatial_scale (float) – 将边界框坐标映射到输入坐标的缩放因子。例如,如果您的边界框定义在 224x224 图像的尺度上,而您的输入是 112x112 的特征图(由于原始图像缩放了 0.5 倍),您应该将此设置为 0.5。默认值:1.0
sampling_ratio (int) – 用于计算每个池化输出 bin 的输出值的插值网格中的采样点数。如果大于 0,则每个 bin 使用
sampling_ratio x sampling_ratio
个采样点。如果小于等于 0,则使用自适应数量的网格点(计算方式为ceil(roi_width / output_width)
,高度同理)。默认值:-1aligned (bool) – 如果为 False,则使用旧实现。如果为 True,则将边界框坐标进行像素偏移 -0.5,以便更好地与相邻的两个像素索引对齐。此版本用于 Detectron2
- 返回:
池化后的 RoI。
- 返回类型:
Tensor[K, C, output_size[0], output_size[1]]