NMSとは
NMS(Non-Maximum Suppression:非最大値抑制)とは、物体検出において重複する検出結果を除去し、最も信頼度の高い検出結果のみを残す後処理アルゴリズムです。物体検出モデルは一つの物体に対して複数のバウンディングボックスを出力する傾向があるため、NMSは不可欠な処理です。
| ひとことで言うと | 同じ物体に重なって出た枠を、一番良いもの1つに絞り込む後処理。 |
|---|---|
| なぜ必要か | 検出モデルは同じ物体に何個も枠を出すため、そのままでは数え間違える。 |
| 注意点 | しきい値が厳しすぎると、隣接する別々の物体まで消してしまう。 |
NMSのアルゴリズム
標準的なNMSの処理手順は次の通りです。まず、すべての検出結果を信頼度スコアの降順にソートします。最も信頼度の高い検出を選択し、それと大きく重なる(IoUが閾値以上の)他の検出をすべて抑制します。残った検出の中で次に信頼度の高いものを選択し、同様の処理を繰り返します。すべての検出が処理されるまでこれを続けます。IoU閾値は通常0.5程度に設定されます。
1確信度で並べるスコアの高い順
▶
21位を採用最も自信のある枠
▶
3重なる枠を削除IoUが高いものを除く
▶
4次の枠へ残りで同じ処理
↺ 候補がなくなるまで2〜4をくり返す
NMSの改良手法
標準的なNMSにはいくつかの課題があります。物体が重なっている場合に正しい検出まで抑制してしまう、閾値の設定が難しいなどです。これらを改善するため、Soft-NMSは重なるボックスを完全に抑制するのではなく、スコアを減衰させる手法です。また、DIoU-NMSはボックス中心間の距離も考慮し、より精密な重複判定を行います。学習可能なNMSやNMSフリーの検出手法(DETRなど)も研究されており、後処理に依存しないモデルの実現を目指しています。