NonMaxSuppression¶
バージョン名: NonMaxSuppression-3
カテゴリー: ソートと最大化
簡単な説明: NonMaxSuppression は、予測スコアを持つボックスの非最大抑制を実行します。
詳細な説明: NonMaxSuppression は、以下で説明する非最大抑制アルゴリズムを実行します。
最もスコアの高いボックスを選択してください。スコアが
score_threshold
未満の場合は停止します。それ以外は、ボックスを出力に追加し、次のステップに進みます。各入力ボックスについて、前の手順で追加したボックスを使用して IOU (和集合に対する交差) を計算します。値が
iou_threshold
しきい値より大きい場合は、入力ボックスを以降の考慮事項から削除します。ステップ 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
必須: いいえ
-
output_type
説明: 出力テンソルのタイプ
値の範囲: “i64” または “i32”
タイプ: 文字列
デフォルト値: “i64”
必須: いいえ
入力:
1:
boxes
- タイプ T およびボックス座標を持つ形状[num_batches, num_boxes, 4]
のテンソル。必須。2:
scores
- タイプ T およびボックススコアを持つ形状[num_batches, num_classes, num_boxes]
のテンソル。必須。3:
max_output_boxes_per_class
- クラスごとに選択されるボックスの最大数を指定する T_MAX_BOXES タイプのスカラーテンソル。オプションで、デフォルト値 0 はボックスを選択しません。4:
iou_threshold
- 和集合しきい値を超える交差を指定する T_THRESHOLDS タイプのスカラーテンソル。オプションで、デフォルト値 0 はすべてのボックスを保持します。5:
score_threshold
- 処理を考慮するボックスの最小スコアを指定する T_THRESHOLDS タイプのスカラーテンソル。オプション、デフォルト値は 0 です。
出力:
1:
selected_indices
- タイプ T_IND および形状[min(num_boxes, max_output_boxes_per_class * num_classes), 3]
のテンソル。選択されたボックスに関する情報はトリプレット[batch_index, class_index, box_index]
として含まれます。選択されたボックスの合計数が出力テンソルサイズより小さい場合、出力テンソルには出力テンソル要素の -1 が埋められます。
タイプ:
T: 浮動小数点タイプ。
T_MAX_BOXES: 整数タイプ。
T_THRESHOLDS: 浮動小数点タイプ。
T_IND:
int64
またはint32
。
例:
<layer ... type="NonMaxSuppression" ... >
<data box_encoding="corner" sort_result_descending="1" output_type="i64"/>
<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="I64">
<dim>1000</dim>
<dim>3</dim>
</port>
</output>
</layer>