NonMaxSuppression¶
バージョン名: NonMaxSuppression-5
カテゴリー: ソートと最大化
簡単な説明: NonMaxSuppression は、予測スコアを持つボックスの非最大抑制を実行します。
詳細な説明: NonMaxSuppression は、以下で説明する非最大抑制アルゴリズムを実行します。
B = [b_0,...,b_n]
を初期検出ボックスのリスト、S = [s_0,...,s_N]
を対応するスコアのリストとします。D = []
を結果として得られるボックスの初期収集とします。B
が空の場合は、ステップ 8 に進みます。最もスコアの高いボックスを選択してください。例えば、それがスコア
s
のボックスb
であるとします。B
からb
を削除します。スコア
s
がscore_threshold
以上の場合は、b
をD
に追加します。それ以外はステップ 8 に進みます。B
の各入力ボックスb_i
と対応するスコアs_i
に対して、s_i = s_i * func(IOU(b_i, b))
を設定し、ステップ 3 に進みます。D
を返します。これは、対応するスコアS
のコレクション、およびD
の要素の数です。
ここで、soft_nms_sigma == 0
の場合は func(iou) = 1 if iou <= iou_threshold else 0
、そうでない場合は func(iou) = exp(-0.5 * iou * iou / soft_nms_sigma) if iou <= iou_threshold else 0
。
このアルゴリズムは、各バッチ要素の各クラスに独立して適用されます。各クラスの出力ボックスの合計数は、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 の 1 要素を持つスカラーまたは 1D テンソル。オプション、デフォルト値は 0 です。6:
soft_nms_sigma
- Soft-NMS (Bodla らを参照) のシグマ・パラメーターを指定する T_THRESHOLDS タイプの 1 要素を持つスカラーまたは 1D テンソル。オプション、デフォルト値は 0 です。
出力:
1:
selected_indices
- タイプ T_IND および形状[number of selected boxes, 3]
のテンソル。選択されたボックスに関する情報はトリプレット[batch_index, class_index, box_index]
として含まれます。2:
selected_scores
- タイプ T_THRESHOLDS および形状[選択されたボックスの数、3]
のテンソル。選択された各ボックスのスコアに関する情報がトリプレット[batch_index, class_index, box_score]
として含まれます。3:
valid_outputs
- 選択されたボックスの総数を表すタイプ T_IND の 1 要素を持つ 1D テンソル。
動的出力テンソルをサポートしないプラグインは、選択可能なボックスの数の上限である形状 [min(num_boxes, max_output_boxes_per_class) * num_batches * num_classes, 3]
の selected_indices
テンソルと selected_scores
テンソルを生成します。実際に選択されたボックスに続く出力テンソル要素は、値 -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>3</dim>
<dim>100</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>3</dim>
<dim>5</dim>
<dim>100</dim>
</port>
<port id="2"/> <!-- 10 -->
<port id="3"/>
<port id="4"/>
</input>
<output>
<port id="5" precision="I64">
<dim>150</dim> <!-- min(100, 10) * 3 * 5 -->
<dim>3</dim>
</port>
<port id="6" precision="FP32">
<dim>150</dim> <!-- min(100, 10) * 3 * 5 -->
<dim>3</dim>
</port>
<port id="7" precision="I64">
<dim>1</dim>
</port>
</output>
</layer>