Non-Maximum Suppression(NMS) ってなぁに
(GPTコピペ)
🐹 Non-Maximum Suppression(NMS) は、物体検出(YOLOとかFaster R-CNNとか)で超よく出てくる処理なんだ。
🧩 NMSとは?
検出モデルって、同じ物体を「ちょっとずつ違う位置のバウンディングボックス」で何個も予測しちゃうんだよ 📦📦📦 → そのままだと「1つの犬が10匹いる」みたいに見えちゃう 🐶🐶🐶
そこで登場するのが NMS。 重なり合うボックスの中から「最も確からしいやつ(スコアが高い)」を残して、他を消す(suppress)処理だよ。
⚙️ NMSの仕組み
- モデルが出したバウンディングボックス候補を スコア順に並べる。
- 一番スコアの高いボックスを「採用」。
- それと IoU (Intersection over Union) が一定以上(例: 0.5)の他のボックスは「同じ物体を指してる」と見なして削除。
- 残ったボックスについて2〜3を繰り返す。
結果:同じ物体に対して1つのボックスだけ残る✨
🚀 良いところ
- 余計な重複検出をきれいに消せる。
- シンプルで速い。
🤔 微妙なところ
IoUのしきい値をどう選ぶかが難しい。
- 高すぎると重複が残る。
- 低すぎると別の物体まで消しちゃう。
クラス間の影響(例えば「犬」と「狼」が近くにいると片方が消される)問題もある。
🌟 DETRとの関係
さっきの DETR は、このNMSすら不要! → Hungarian matchingで「予測と正解を1対1で結びつけ」るから、わざわざ重複を消す処理がいらない。 これは従来モデルと大きな違いで、DETRのシンプルさが評価される理由のひとつだよ✨