當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python mxnet.ndarray.contrib.box_nms用法及代碼示例


用法:

mxnet.ndarray.contrib.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, out=None, name=None, **kwargs)

參數

  • data(NDArray) - 輸入
  • 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]。
  • out(NDArray, optional) - 輸出 NDArray 來保存結果。

返回

out- 此函數的輸出。

返回類型

NDArray 或 NDArray 列表

對輸入應用非最大抑製。

輸出將根據 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.ndarray.contrib.box_nms。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。