非極大值抑制 是什麼?

Non-Maximum Suppression:非極大值抑制 的完整解釋

非極大值抑制 (NMS) 是一種在物件偵測中用於消除重複框的技術,它會保留置信度最高的框,並抑制與之高度重疊的其他框。

容易混淆

NMS vs IoU NMS:後處理流程,用來刪重複框 IoU:衡量兩個框重疊多少的指標 最關鍵的區別:先看它是在比什麼,再看它怎麼做。

NMS vs Soft-NMS NMS:超過閾值就直接壓掉 Soft-NMS:不是刪除,而是慢慢降分數 最關鍵的區別:先看它是在比什麼,再看它怎麼做。

記住這句就好

重疊太多的框,只留最好的。

實際案例

車輛偵測 模型同時框到同一台車的前半和後半,NMS 會保留最可信的框。

人臉偵測 多人臉場景裡,重疊框很多,NMS 讓畫面不會亂掉。

算法與應用

NMS 通常先依分數排序,再逐一比較 IoU,將高度重疊的框刪掉。 閾值設太高,可能留下太多重複框;設太低,又可能誤刪正確框。 它是物件偵測裡最典型的後處理步驟之一。

中英對照與常見說法

說法 出現場合
非極大值抑制 台灣正式用語
非极大值抑制 簡體寫法
Non-Maximum Suppression 英文原名
NMS 標準縮寫
非最大抑制 少見變體,意思相同

演算法本身只有四步

物件偵測模型對同一個目標常常吐出好幾個高度重疊的框。NMS 的工作就是每個目標只留一個。

第一步,把所有候選框依信心分數由高到低排序。

第二步,取出分數最高的框,放進最終結果。

第三步,計算剩下每個框跟它的 IoU(交集面積除以聯集面積),IoU 超過門檻的全部刪掉,因為它們被視為在框同一個目標。

第四步,回到第二步,處理剩下的框,直到沒有框為止。

這個流程要對每個類別分開做,否則一隻狗身上的框會把牠旁邊的貓的框刪掉。

門檻怎麼選,以及兩個典型失敗

IoU 門檻常見設在 0.5 到 0.7 之間。

門檻太低:只要稍微重疊就刪,密集場景(人群、車陣)裡真正相鄰的兩個目標會被誤刪,變成漏檢。

門檻太高:同一個目標留下多個框,重複偵測。

這個兩難是 NMS 的本質限制:它只看框的幾何重疊,不知道底下是不是同一個物體。

Soft-NMS 是常見的改良:不直接刪掉重疊的框,而是按照 IoU 大小把它的分數調低。這樣密集場景裡被壓低的框仍有機會保留,通常能提升幾個百分點的 mAP,而且不需要重新訓練。

其他方向包括 DIoU-NMS(把兩個框中心點的距離也納入判斷)與直接讓模型學會不要輸出重複框的做法。DETR 這類端到端偵測架構用集合預測搭配匈牙利匹配,訓練時就強制一個目標對一個預測,因此完全不需要 NMS,這是它常被強調的特點之一。

情境判斷

Q1(直覺題):模型對同一隻狗畫了四個框,你想保留最好的那個,該用什麼? → 非極大值抑制。

Q2(判斷題):如果框與框幾乎不重疊,NMS 還會刪很多嗎? → 不會,因為它主要針對重疊很高的候選框。

相關術語

常見問題

NMS 會不會把真實框刪掉?

有可能,所以閾值要調得剛好。

它只用在物件偵測嗎?

主要是,但只要有重疊候選要篩選的任務,都可能借用這個概念。

Soft-NMS 比較好嗎?

常常更平滑,但速度和實作會稍微複雜。