NonMaxSuppression

バージョン名: NonMaxSuppression-1

カテゴリー: ソートと最大化

簡単な説明: NonMaxSuppression は、予測スコアを持つボックスの非最大抑制を実行します。

詳細な説明: NonMaxSuppression レイヤーは、以下で説明する非最大抑制アルゴリズムを実行します。

  1. 最もスコアの高いボックスを選択してください。スコアが score_threshold 未満の場合は停止します。それ以外は、ボックスを出力に追加し、次のステップに進みます。

  2. 各入力ボックスについて、前の手順で追加したボックスを使用して IOU (和集合に対する交差) を計算します。値が iou_threshold しきい値より大きい場合は、入力ボックスを以降の考慮事項から削除します。

  3. ステップ 1 に戻ります。

このアルゴリズムは、各バッチ要素の各クラスに独立して適用されます。各クラスの出力ボックスの合計数は、max_output_boxes_per_class を超えてはなりません。

属性:

  • box_encoding

    • 説明: box_encoding は、ボックスデータのエンコード形式を指定します。

    • 値の範囲: “corner” または “center”

      • corner - ボックスデータは [y1, x1, y2, x2] として指定されます。ここで (y1, x1)(y2, x2) は、ボックスの角の対角のペアの座標です。

      • center - ボックスデータは [x_center, y_center, width, height] として指定されます。

    • タイプ: 文字列

    • デフォルト値: “corner”

    • 必須: いいえ

  • sort_result_descending

    • 説明: sort_result_descending は、選択したボックスをバッチ間で並べ替えるか指定するフラグです。

    • 値の範囲: true または false

      • true - 選択したボックスをバッチ間で並べ替えます。

      • false - 選択したボックスをバッチ間で並べ替えません (ボックスはクラスごとに並べ替えられます)。

    • タイプ: ブール値

    • デフォルト値: true

    • 必須: いいえ

入力:

  • 1: boxes - ボックス座標を持つ形状 [num_batches, num_boxes, 4] の浮動小数点テンソル。必須。

  • 2: scores - ボックススコアを含む形状 [num_batches, num_classes, num_boxes] の浮動小数点テンソル。必須。

  • 3: max_output_boxes_per_class - クラスごとに選択されるボックスの最大数を指定する整数スカラーテンソル。オプションで、デフォルト値 0 はボックスを選択しません。

  • 4: iou_threshold - 和集合しきい値を超える交差を指定する浮動小数点スカラーテンソル。オプションで、デフォルト値 0 はすべてのボックスを保持します。

  • 5: score_threshold - 処理のボックスを考慮する最小スコアを指定する浮動小数点スカラーテンソル。オプション、デフォルト値は 0 です。

出力:

  • 1: selected_indices - 選択されたボックスに関する情報をトリプレット [batch_index, class_index, box_index] として含む、形状 [min(num_boxes, max_output_boxes_per_class * num_classes), 3] の整数テンソル。

選択されたボックスの合計数が出力テンソルサイズより小さい場合、出力テンソルには出力テンソル要素の -1 が埋められます。

例:

<layer ... type="NonMaxSuppression" ... >
    <data box_encoding="corner" sort_result_descending="1"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>1000</dim>
            <dim>4</dim>
        </port>
        <port id="1">
            <dim>1</dim>
            <dim>1</dim>
            <dim>1000</dim>
        </port>
        <port id="2"/>
        <port id="3"/>
        <port id="4"/>
    </input>
    <output>
        <port id="5" precision="I32">
            <dim>1000</dim>
            <dim>3</dim>
        </port>
    </output>
</layer>