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


Python mxnet.contrib.symbol.box_nms用法及代码示例


用法:

mxnet.contrib.symbol.box_nms(data=None, overlap_thresh=_Null, valid_thresh=_Null, topk=_Null, coord_start=_Null, score_index=_Null, id_index=_Null, background_id=_Null, force_suppress=_Null, in_format=_Null, out_format=_Null, name=None, attr=None, out=None, **kwargs)

参数

  • data(Symbol) - 输入
  • overlap_thresh(float, optional, default=0.5) - 重叠(IoU)阈值以抑制分数较小的对象。
  • valid_thresh(float, optional, default=0) - 将输入框过滤到分数大于 valid_thresh 的输入框。
  • topk(int, optional, default='-1') - 将 nms 应用于分数递减的 topk 框,-1 表示没有限制。
  • coord_start(int, optional, default='2') - 连续 4 个坐标的起始索引。
  • score_index(int, optional, default='1') - 框的分数/置信度索引。
  • id_index(int, optional, default='-1') - 可选,类类别的索引,-1 禁用。
  • background_id(int, optional, default='-1') - 可选,背景类的 id,在 nms 中将被忽略。
  • force_suppress(boolean, optional, default=0) - 可选,如果设置为 false 并提供id_index,则 nms 将仅适用于属于同一类别的框
  • in_format({'center', 'corner'},optional, default='corner') - 输入框编码类型。 “corner” 表示框编码为 [xmin, ymin, xmax, ymax],“center” 表示框编码为 [x, y, width, height]。
  • out_format({'center', 'corner'},optional, default='corner') - 输出框编码类型。 “corner” 表示框编码为 [xmin, ymin, xmax, ymax],“center” 表示框编码为 [x, y, width, height]。
  • name(string, optional.) - 结果符号的名称。

返回

结果符号。

返回类型

Symbol

对输入应用非最大抑制。

输出将根据 score 以降序排序。重叠大于 overlap_thresh 的框,较小的分数和背景框将被移除并填充 -1,将记录相应的位置以进行反向传播。

在back-propagation期间,梯度会根据输入索引复制到原来的位置。对于已被抑制的位置,in_grad 将被分配为 0。总而言之,渐变会粘在其框上,将根据其在输入中的原始索引移动或丢弃。

输入要求:

1. Input tensor have at least 2 dimensions, (n, k), any higher dims will be regarded
as batch, e.g. (a, b, c, d, n, k) == (a*b*c*d, n, k)
2. n is the number of boxes in each batch
3. k is the width of each box item.

默认情况下,框是 [id, score, xmin, ymin, xmax, ymax, ...],允许附加元素。

  • id_index :可选,使用 -1 忽略,如果 force_suppress=False 很有用,这意味着如果一个是 apple 而另一个是 car ,我们将跳过高度重叠的框。

  • background_id :可选,默认值=-1,背景框的类 id,当 id_index >= 0 时有用,这意味着具有背景 id 的框将在 nms 之前被过滤。

  • coord_start :必填,默认=2,4个坐标的起始索引。支持两种格式:

    • corner: [xmin, ymin, xmax, ymax]

    • center: [x, y, width, height]

  • score_index:必填,默认=1,盒子得分/置信度。当两个框重叠 IOU > overlap_thresh 时,分数较小的框将被抑制。

  • in_formatout_format :默认='corner',指定输入/输出框格式。

例子:

x = [[0, 0.5, 0.1, 0.1, 0.2, 0.2], [1, 0.4, 0.1, 0.1, 0.2, 0.2],
     [0, 0.3, 0.1, 0.1, 0.14, 0.14], [2, 0.6, 0.5, 0.5, 0.7, 0.8]]
box_nms(x, overlap_thresh=0.1, coord_start=2, score_index=1, id_index=0,
    force_suppress=True, in_format='corner', out_typ='corner') =
    [[2, 0.6, 0.5, 0.5, 0.7, 0.8], [0, 0.5, 0.1, 0.1, 0.2, 0.2],
     [-1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1]]
out_grad = [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2],
            [0.3, 0.3, 0.3, 0.3, 0.3, 0.3], [0.4, 0.4, 0.4, 0.4, 0.4, 0.4]]
# exe.backward
in_grad = [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 0], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]

相关用法


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