NMSとは

NMSは、画像処理コンピュータビジョン、特に物体検出(Object Detection)タスクにおいて、一つの物体に対して複数の重複した検出結果(バウンディングボックス)が生成された際、最も確信度の高い一つだけを残し、残りの検出結果を抑制・除去するための後処理アルゴリズムのことです。

NMSの概要と物体検出における役割

NMS(Non-Maximum Suppression、非最大値抑制)は、畳み込みニューラルネットワーク(CNN)ベースの物体検出モデル(例:YOLO、R-CNN系)の出力層において必須となる技術です。

物体検出モデルは、入力画像に対して、多数の可能性のある領域(アンカーボックスやリージョンプロポーザル)を評価し、それぞれの領域に対して「そこに物体が存在する確率(確信度)」と「物体の正確な位置とサイズ(バウンディングボックス)」を出力します。

この処理の結果、一つの実際にある物体に対して、位置がわずかにずれた複数のバウンディングボックスが、いずれも高い確信度で検出されるという現象が頻繁に発生します。

NMSの役割は、これらの冗長な検出結果を整理し、「一物体一検出」という望ましい最終結果を生成することです。

主な目的は、重複する検出ボックス群の中から、最も信頼できるボックスのみを選び出し、検出結果の精度と簡潔性を向上させることです。

NMSの動作原理とアルゴリズムの手順

NMSアルゴリズムは、通常、特定のクラス(例:「犬」「車」)ごとに独立して実行されます。

1. 検出結果のソート

まず、対象クラスの検出されたすべてのバウンディングボックスを、モデルが出力した確信度(スコア)の降順にソートします。

2. 最大スコアのボックスの選択

ソートされたリストの先頭にある、最も高い確信度を持つボックス $B_{\text{best}}$ を選択し、これを最終的な検出結果リストに追加します。

3. 重複するボックスの抑制(除去)

選択された $B_{\text{best}}$ と、リストに残っている他のすべてのボックス $B_i$ との間で、重複度(Intersection over Union: IoU)を計算します。

IoUは、二つのボックス $B_{\text{best}}$ と $B_i$ の共通部分の面積を、二つのボックスの結合部分の面積で割った値です。

\text{IoU}(B_{\text{best}}, B_i) = \frac{\text{Area}(B_{\text{best}} \cap B_i)}{\text{Area}(B_{\text{best}} \cup B_i)}

4. しきい値による抑制

計算された IoU が、事前に設定された抑制しきい値(NMS Threshold)を超えている場合、そのボックス $B_i$ は $B_{\text{best}}$ と過度に重複していると見なし、リストから除去(抑制)されます。

5. 繰り返し

残りのボックスリストに対して、ステップ2とステップ3を繰り返します。リストが空になるまで、最高確信度のボックスを選び、それに重なるボックスを抑制し続けることで、冗長な検出結果が全て排除されます。

NMSのパラメータと課題

NMS しきい値の重要性

NMSの性能は、抑制しきい値の設定に大きく依存します。

  • しきい値が高い(例:0.7): 抑制が緩やかになり、わずかに重複しているボックスが多く残る可能性があります。
  • しきい値が低い(例:0.3): 抑制が厳しくなりすぎ、一つの大きな物体が複数のクラスにまたがるなど、わずかな位置ずれでも、正しい検出ボックスまで除去してしまう(誤って抑制する)可能性があります。

NMSの課題(Crowding Problem)

NMSの最大の課題は、密接した物体(Crowded Objects)、特に同じクラスの物体が非常に接近している状況(例:群衆の中の複数の人物)で発生します。

一つの人物 $A$ の検出ボックス $B_A$ が、隣接する人物 $B$ の検出ボックス $B_B$ と大きく重なっている場合、NMSは $B_A$ の確信度が高ければ、本来残すべき $B_B$ を重複と見なして誤って抑制してしまう可能性があります。この問題に対処するため、より高度な後処理手法としてSoft-NMSなどが開発されています。

関連用語

画像処理 | 今更聞けないIT用語集
コンピュータビジョン | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。