megengine.functional.nn.roi_pooling#

roi_pooling(inp, rois, output_shape, mode='max', scale=1.0)[源代码]#

在指定输入的感兴趣区域上执行池化,并获得固定大小的特征图, 如Faster RCNN中所述

参数:
  • inp (Tensor) – 输入的特征图,形状为 (n, c, h, w)

  • rois (Tensor) – 一个形状为 (K, 5) 的张量,其表示从坐标为 (idx, x1, y1, x2, y2) 的图像框中要提取的区域,坐标中的 (x1, y1)(x2, y2) 必须满足 0 <= x1 < x20 <= y1 < y2. 第一列 idx 应包含输入批处理中相应元素的索引,即 [0, n - 1] 中的数字。

  • mode (str) – “max” 或者 “average”, 要使用的池化方式。默认值: “max”

  • scale (float) – 将一个输出 roi 特征映射到输入特征的比例。例如,如果输出是 224*224 的图像,输入是 112*112 的特征图,则缩放值应该设置为 0.5. 默认为 1.0

返回类型:

Tensor

返回:

输出的向量。形状为 (K, C, output_shape[0], output_shape[1])

实际案例

>>> import numpy as np
>>> np.random.seed(42)
>>> inp = Tensor(np.random.randn(1, 1, 128, 128))
>>> rois = Tensor(np.random.random((4, 5)))
>>> y = F.vision.roi_pooling(inp, rois, (2, 2))
>>> y.numpy()[0].round(decimals=4)
array([[[-0.1383, -0.1383],
        [-0.5035, -0.5035]]], dtype=float32)