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のセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

クラウドネイティブ技術とアジャイル手法を駆使し、市場投入スピード(Time-to-Market)を最大化。「進化し続けるアプリケーション」を開発します。初期リリースを最速化し、拡張性と柔軟性を備えた、ビジネスの成長に追従できるアプリケーションを開発します。

DX・AI戦略支援

「何から手を付けるべきか分からない」「AIを導入したいが、費用対効果が見えない」といった経営課題に対し、技術とビジネスの両面から解を導き出します。 絵に描いた餅で終わる戦略ではなく、エンジニアリングの実装能力に基づいた、「実現可能で、勝てる技術戦略」を策定します。


リファクタリング・リアーキテクチャ

「システムが古くて改修できない」「障害が頻発する」といった技術的負債を解消します。既存資産の徹底的な診断に基づき、コードのクリーン化(リファクタリング)や、クラウドへの移行(リアーキテクチャ)を行い、システムの寿命を延ばしコストを最適化します。