什麼是 非極大值抑制(Non-Maximum Suppression)?
非極大值抑制 (NMS) 是一種在物件偵測中用於消除重複框的技術,它會保留置信度最高的框,並抑制與之高度重疊的其他框。
核心概念
非極大值抑制 (NMS) 的核心概念是基於這樣一個假設:對於同一個物件,物件偵測模型可能會產生多個偵測框,但只有一個框應該是最準確的。NMS 的目標是從這些候選框中選擇最佳框,並消除其他冗餘框。這個過程依賴於兩個關鍵指標:
- 置信度 (Confidence Score): 模型為每個偵測框分配的置信度分數,表示該框包含物件的概率。
- Intersection over Union (IoU): 用於衡量兩個偵測框重疊程度的指標。IoU 定義為兩個框的交集面積除以它們的並集面積。IoU 值越高,表示兩個框的重疊程度越高。
運作原理
NMS 的運作原理可以概括為以下步驟:
- 按照置信度排序: 首先,將所有偵測框按照置信度分數從高到低排序。
- 選擇置信度最高的框: 選擇置信度最高的框作為當前最佳框,並將其添加到最終的偵測結果列表中。
- 計算 IoU: 計算當前最佳框與其他所有偵測框的 IoU。
- 抑制重疊框: 對於 IoU 值大於預先設定的閾值 (例如 0.5) 的偵測框,將其抑制(即從候選框列表中移除)。這些框被認為是與最佳框重複的。
- 重複步驟 2-4: 重複步驟 2-4,直到候選框列表為空。
詳細步驟範例:
假設我們有以下 5 個偵測框,以及它們的置信度分數和 IoU 閾值為 0.5:
| 框 ID | 置信度 |
|---|---|
| A | 0.9 |
| B | 0.8 |
| C | 0.7 |
| D | 0.6 |
| E | 0.5 |
- 排序: 按照置信度排序:A (0.9) > B (0.8) > C (0.7) > D (0.6) > E (0.5)。
- 選擇最佳框: 選擇 A 作為最佳框,並將其添加到結果列表中。
- 計算 IoU: 計算 A 與 B, C, D, E 的 IoU。假設 A 與 B 的 IoU 為 0.7,A 與 C 的 IoU 為 0.3,A 與 D 的 IoU 為 0.6,A 與 E 的 IoU 為 0.2。
- 抑制重疊框: 由於 A 與 B 和 D 的 IoU 大於閾值 0.5,因此抑制 B 和 D。
- 重複: 選擇剩餘框中置信度最高的 C 作為最佳框,並將其添加到結果列表中。計算 C 與 E 的 IoU。假設 C 與 E 的 IoU 為 0.1,小於閾值 0.5,因此保留 E。
- 完成: 最終結果列表包含 A, C 和 E。
實際應用
NMS 廣泛應用於各種物件偵測任務中,包括:
- 人臉偵測: 在人臉偵測中,NMS 用於消除對同一張臉的多個偵測框。
- 車輛偵測: 在自動駕駛系統中,NMS 用於消除對同一輛車的多個偵測框。
- 行人偵測: 在安全監控系統中,NMS 用於消除對同一個行人的多個偵測框。
- 通用物件偵測: 在 COCO 和 Pascal VOC 等通用物件偵測數據集中,NMS 是標準的後處理步驟。
除了物件偵測,NMS 的概念也可以應用於其他領域,例如:
- 關鍵點偵測: 在關鍵點偵測中,NMS 可以用於消除對同一個關鍵點的多個偵測。
- 文本偵測: 在文本偵測中,NMS 可以用於消除對同一個文本區域的多個偵測。
常見誤區
- IoU 閾值的選擇: IoU 閾值的選擇是一個重要的超參數。如果閾值太高,可能會錯誤地抑制一些有效的偵測框。如果閾值太低,可能會導致結果中存在過多的重複框。通常需要根據具體任務和數據集進行調整。
- NMS 並非完美: NMS 並不能完全消除所有重複框。在某些情況下,例如物件高度重疊時,NMS 可能會錯誤地抑制一些有效的偵測框。
- NMS 的變體: 存在許多 NMS 的變體,例如 Soft-NMS 和 Adaptive NMS。這些變體旨在解決標準 NMS 的一些缺點,例如容易抑制高度重疊的物件。
- NMS 是後處理步驟: NMS 是一個後處理步驟,它在物件偵測模型的輸出之後執行。因此,NMS 的性能受到物件偵測模型性能的限制。如果物件偵測模型的性能較差,NMS 也無法顯著改善結果。
相關術語
常見問題
延伸學習
想看 非極大值抑制 的完整影片教學?前往 美第奇 AI 學院