当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.ndarray.ROIPooling用法及代码示例


用法:

mxnet.ndarray.ROIPooling(data=None, rois=None, pooled_size=_Null, spatial_scale=_Null, out=None, name=None, **kwargs)

参数

  • data(NDArray) - 池化算子的输入数组,一个 4D 特征图
  • rois(NDArray) - 边界框坐标,[[batch_index, x1, y1, x2, y2]] 的二维数组,其中 (x1, y1) 和 (x2, y2) 是指定感兴趣区域的左上角和右下角.batch_index表示输入数组中对应图像的索引
  • pooled_size(Shape(tuple), required) - ROI 池化输出形状 (h,w)
  • spatial_scale(float, required) - 输入特征图高度(或 w)与原始图像高度(或 w)的比率。等于卷积层中总步幅的倒数
  • out(NDArray, optional) - 输出 NDArray 来保存结果。

返回

out- 此函数的输出。

返回类型

NDArray 或 NDArray 列表

对输入数组执行感兴趣区域 (ROI) 池化。

ROI 池化是最大池化层的变体,其中输出大小是固定的,感兴趣区域是一个参数。其目的是对大小不均匀的输入进行最大池化,以获得固定大小的特征图。 ROI pooling 是一个neural-net 层,主要用于训练Fast R-CNN 网络以进行对象检测。

该算子将 4D 特征图作为输入数组,将区域建议作为 rois ,然后汇集 sub-regions 的输入并生成 fixed-sized 输出数组,而不考虑 ROI 大小。

要相应地裁剪特征图,您可以通过更改参数 roisspatial_scale 来调整边界框坐标的大小。

裁剪后的特征图通过标准最大池化操作池化到由pooled_size 参数指示的固定大小的输出。 batch_size 将更改为 ROIPooling 之后的区域边界框数。

每个感兴趣区域的大小不必完全被池化部分的数量(pooled_size)整除。

例子:

x = [[[[  0.,   1.,   2.,   3.,   4.,   5.],
       [  6.,   7.,   8.,   9.,  10.,  11.],
       [ 12.,  13.,  14.,  15.,  16.,  17.],
       [ 18.,  19.,  20.,  21.,  22.,  23.],
       [ 24.,  25.,  26.,  27.,  28.,  29.],
       [ 30.,  31.,  32.,  33.,  34.,  35.],
       [ 36.,  37.,  38.,  39.,  40.,  41.],
       [ 42.,  43.,  44.,  45.,  46.,  47.]]]]

// region of interest i.e. bounding box coordinates.
y = [[0,0,0,4,4]]

// returns array of shape (2,2) according to the given roi with max pooling.
ROIPooling(x, y, (2,2), 1.0) = [[[[ 14.,  16.],
                                  [ 26.,  28.]]]]

// region of interest is changed due to the change in `spacial_scale` parameter.
ROIPooling(x, y, (2,2), 0.7) = [[[[  7.,   9.],
                                  [ 19.,  21.]]]]

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.ndarray.ROIPooling。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。