今天聊聊目標檢測NMS的發(fā)展歷程
來源:投稿 作者:王同學
編輯:學姐
1. NMS介紹
在執(zhí)行目標檢測任務時,算法可能對同一目標有多次檢測。NMS 是一種讓你確保算法只對每個對象得到一個檢測的方法,即“清理檢測”。如下圖所示:
如果用一句話概括NMS的意思就是:篩選出一定區(qū)域內(nèi)屬于同一種類別得分最大的框

2. NMS算法流程
NMS 算法的大致過程:每輪選取置信度最大的 Bounding Box ,接著關注所有剩下的 BBox 中與選取的 BBox 有著高重疊(IoU)的,它們將在這一輪被抑制。這一輪選取的 BBox 會被保留輸出,且不會在下一輪出現(xiàn)。接著開始下一輪,重復上述過程:選取置信度最大 BBox ,抑制高 IoU BBox。
NMS 算法流程:這是一般文章中介紹的 NMS,比較難懂。但實際上 NMS 的實現(xiàn)反而簡單很多。

3. NMS 過程圖例
單類別 NMS 的例子:有兩只狗,怎樣用 NMS 保證只留下兩個 BBox?
多類別 NMS 的例子,有1只狗1只貓,我們怎么用NMS將偵測到的物件框?qū)沿埡凸房虺鰜怼?/p>
3.1 單類別例子
1)理解 BBox 輸入或輸出格式,通常會見到兩種格式:
第一種,BBox 中心位置(x, y) + BBox 長寬(h, w) + Confidence Score;
第二種,BBox 左上角點(x1,y1) + BBox 右下角點(x2,y2) + Confidence Score;
兩種表達的本質(zhì)是一樣的,均為五個變量。與 BBox 相關的四個變量用于計算 IoU,Confidence Score 用于排序。
2)理解評估重疊的 IoU 指標,即“交并比”,如下圖所示:

3)步驟:
第一步:對 BBox 按置信度排序,選取置信度最高的 BBox(所以一開始置信度最高的 BBox 一定會被留下來);
第二步:對剩下的 BBox 和已經(jīng)選取的 BBox 計算 IoU,淘汰(抑制) IoU 大于設定閾值的 BBox(在圖例中這些淘汰的 BBox 的置信度被設定為0)。
第三步:重復上述兩個步驟,直到所有的 BBox 都被處理完,這時候每一輪選取的 BBox 就是最后結果。

具體流程
「確定是物體集合」= {空集合}
Run 1: 先將BBox依照置信度排序,置信度最高的BBox (紅色) 會被選入「確定是物體集合」內(nèi),其他BBox會根據(jù)這步驟選出最高的BBox進行IoU計算,如果粉紅色的IoU為0.6大于我們設定的0.5,所以將粉紅色的BBox置信度設置為0。 此時「確定是物件集合」= {紅色BBox }
Run 2: 不考慮置信度為0和已經(jīng)在「確定是物體集合」的BBox,剩下來的物體繼續(xù)選出最大置信度的BBox,將此BBox(黃色)丟入「確定是物體集合」,剩下的BBox和Run2選出的最大置信度的BBox計算IoU,其他BBox都大于0.5,所以其他的BBox置信度設置為0。 此時「確定是物件集合」= {紅色BBox; 黃色BBox}
因為沒有物體置信度>0,所以結束NMS。 「確定是物件集合」= {紅色BBox; 黃色BBox}。
在上面這個例子中,NMS 只運行了兩輪就選取出最終結果:第一輪選擇了紅色 BBox,淘汰了粉色 BBox;第二輪選擇了黃色 BBox,淘汰了紫色 BBox 和青色 BBox。注意到這里設定的 IoU 閾值是0.5,假設將閾值提高為0.7,結果又是如何?

可以看到,NMS 用了更多輪次來確定最終結果,并且最終結果保留了更多的 BBox,但結果并不是我們想要的。因此,在使用 NMS 時,IoU 閾值的確定是比較重要的,但一開始我們可以選定 default 值(論文使用的值)進行嘗試。由此可以知道,如果IoU閾值設定太高,可能會造成物件重復檢測的問題。
3.2 多類別例子
第二個例子,有1只狗1只貓,我們怎么用NMS將偵測到的物件框?qū)沿埡凸房虺鰜?/p>
前面的范例一是標準的NMS程序,這邊要搭配一下分類來看,范例二和標準NMS做法一樣,先將「確定是物件集合」選出來,此例是NMS選出的BBox是{紫色BBox ; 紅色BBox}。
這時候再搭配一下分類的機率,就可以把每個NMS選出的BBox做類別判斷了(如下圖,每個BBox都會帶有一組機率)

這邊附上實際做法,先用一個閾值先初步去掉一些候選的BBox,不然假設一張圖預選出一萬個BBox,后面用CPU計算NMS會很花時間,所以會依據(jù)BBox的confidence score先去掉一些沒用的BBox,然后再做NMS,如下圖

如果是two stage算法,通常在選出BBox只會帶有BBox中心位置(x, y)、BBox長寬(h, w)和confidence score,不會有類別的機率,因為程序是先選出BBox,在將選出BBox的feature map做rescale (一般用ROI pooling),然后再用分類器分類。 但如果是one stage作法,是直接BBox帶有BBox中心位置(x, y)、BBox長寬(h, w)和confidence score,以及相對應的分類機率,相對于two stage少了后面rescale和分類的程序,所以計算量相對小。
雖然NMS可以處理掉較多的冗余框,但傳統(tǒng)的NMS存在以下局限性:
循環(huán)步驟,GPU難以并行處理,運算效率低
以分類置信度為優(yōu)先衡量指標 分類置信度高的定位不一定最準,降低了模型的定位準確度
直接提高閾值暴力去除bbox 將得分較低的邊框強制性地去掉,如果物體出現(xiàn)較為密集時,本身屬于兩個物體的邊框,其中得分較低的框就很有可能被抑制掉,從而降低了模型的召回率,且閾值設定完全依賴自身經(jīng)驗。
4.t-NMS(ICCV2017)
NMS設定的局限性顯然,對于IOU≥NMS閾值的相鄰框,傳統(tǒng)NMS的做法是將其得分暴力置0,相當于被舍棄掉了,這就有可能造成邊框的漏檢,尤其是有遮擋的場景。
Soft-NMS解決方案對IOU大于閾值的邊框,Soft-NMS采取得分懲罰機制,降低該邊框的得分,即使用一個與IoU正相關的懲罰函數(shù)對得分進行懲罰。當鄰居檢測框b與當前框M有大的IoU時,它更應該被抑制,因此分數(shù)更低。而遠處的框不受影響。


從實驗結果來看的話,soft-NMS(紅色)能夠比較好的緩解掉傳統(tǒng)NMS(藍色)暴力剔除所帶來的物體遮擋漏檢情況。
Soft-NMS的類型
線性衰減型(不連續(xù),會發(fā)生跳變,導致檢測結果產(chǎn)生較大的波動);
指數(shù)高斯型(更為穩(wěn)定、連續(xù)、光滑)
Soft-NMS的局限性
仍采用循環(huán)遍歷處理模式,而且它的運算效率比Traditional NMS更低。
對雙階段算法友好,但在一些單階段算法上可能失效。(所以看soft-NMS論文時會發(fā)現(xiàn)它只在two-stage模型上比較,可能是因為one-stage模型在16年才提出來,之后才開始大火)soft-NMS也是一種貪心算法,并不能保證找到全局最優(yōu)的檢測框分數(shù)重置。
遮擋情況下,如果存在location與分類置信度不一致的情況,則可能導致location好而分類置信度低的框比location差分類置信度高的框懲罰更多
評判指標是IoU,即只考慮兩個框的重疊面積,這對描述box重疊關系或許不夠全面。
5.Weighted-NMS(ICMEW2017)
如果前面講的soft NMS是通過抑制機制來改善剔除結果(降低超閾值的得分策略),那么Weighted NMS(W-NMS)則是從極大值這個方面進行改進。W-NMS認為Traditional NMS每次迭代所選出的最大得分框未必是精確定位的,冗余框也有可能是定位良好的。因此,W-NMS通過分類置信度與IOU來對同類物體所有的邊框坐標進行加權平均,并歸一化。其中,加權平均的對象包括M自身以及IoU≥NMS閾值的相鄰框。
優(yōu)點:Weighted NMS通常能夠獲得更高的Precision和Recall,一般來說,只要NMS閾值選取得當,Weighted NMS均能穩(wěn)定提高AP與AR。
缺點:
(1)仍為順序處理模式,且運算效率比Traditional NMS更低。
(2)加權因子是IOU與得分,前者只考慮兩個框的重疊面積;而后者受到定位與得分不一致問題的限制。
6. 分類置信度優(yōu)先NMS總結
NMS、soft-NMS及Weighted NMS的局限性:
都是以分類置信度優(yōu)先的NMS,未考慮定位置信度,即沒有考慮定位與分類得分可能出現(xiàn)不一致的情況,特別是框的邊界有模棱兩可的情形時。
采用的都是傳統(tǒng)的IOU,只考慮兩包圍盒子之間的重疊率,未能充分反映兩包圍盒子之間相對位置關系。
7. IOU-Guided NMS/IOU-Net(ECCV2018)
前面所提到的NMS方法只將分類的預測值作為邊框排序的依據(jù)。然而在某些場景下,分類預測值高的邊框不一定擁有與真實框最接近的位置,因此這種標準不平衡可能會導致更為準確的邊框被抑制掉。

之前NMS的局限性:
分類準確率和定位準確率的誤匹配:從左下圖看,IOU與定位置信度高度相關(0.617),而與分類置信度幾乎無關(0.217)。
邊界框回歸的非單調(diào)性與非可解釋性:缺乏localization confidence使得被廣泛使用的邊界框回歸方法缺少可解釋性或可預測性。先前的工作曾指出bounding box迭代回歸的非單調(diào)性,也就是說,應用多次之后bounding box回歸可能有損bounding box定位表現(xiàn)。
在此背景下,曠視IOU-Net論文提出了IoU-Guided NMS,即一個預測框與真實框IOU的預測分支來學習定位置信度,進而使用定位置信度來引導NMS的學習。具體來說,就是使用定位置信度作為NMS的篩選依據(jù),每次迭代挑選出最大定位置信度的框M,然后將IOU≥NMS閾值的相鄰框剔除,但把冗余框及其自身的最大分類得分直接賦予M。因此,最終輸出的框必定是同時具有最大分類得分與最大定位置信度的框。
IOU-Guided NMS優(yōu)點:
通過該預測分支解決了NMS過程中分類置信度與定位置信度之間的不一致,可以與當前的物體檢測框架一起端到端地訓練,在幾乎不影響前向速度的前提下,有效提升了物體檢測的精度。
IoU-Guided NMS有助于提高嚴格指標下的精度,如AP75, AP90。(在IOU閾值較高時IOU-guided NMS算法的優(yōu)勢還是比較明顯的(比如AP90),原因就在于IOU閾值較高時需要預測框的坐標更加準確才能有較高的AP值,這正好和IOU-guided NMS的出發(fā)點吻合。)
IOU-Guided NMS缺點:
順序處理的模式,運算效率與Traditional NMS相同。
需要額外添加IoU預測分支,造成計算開銷。
評判標準為IOU,即只考慮兩個框的重疊面積。
8. softer NMS(CVPR2019)
總體概覽從Softer-NMS的公式來看,Softer-NMS可以看成是前面三種NMS變體的結合,即:其極大值的選擇/設定采用了與類似Weighted NMS(加權平均)的方差加權平均操作,其加權的方式采用了類似soft NMS的評分懲罰機制(受Soft-NMS啟發(fā),離得越近,不確定性越低,會分配更高的權重),最后,它的網(wǎng)絡構建思路與IOU-Guided NMS相類似。

與IOU-Guided NMS區(qū)別Softer-NMS與IOU-Guided NMS的出發(fā)點同樣是解決定位與分類置信度之間非正相關的問題,所采用的思路一樣是增加一個定位置信度的預測,但不一樣的是前面提到的IOU-Guided NMS采用IOU作為定位置信度來優(yōu)先排序,而這里Softer-NMS則是通過定位分布的方差來拉近預測邊框與真實物體分布,即IOU-Guided NMS采用IOU作為定位置信度而Softer-NMS采用坐標方差作為定位置信度,具體的做法就是通過KL散度來判別兩個分布的相似性。
其中,Softer NMS論文中有兩個先驗假設:
(1)Bounding box的是高斯分布
(2)ground truth bounding box是狄拉克delta分布(即標準方差為0的高斯分布極限)。
Softer-NMS的優(yōu)點:
增加了定位置信度的預測,是定位回歸更加準確與合理。
使用便捷,可以與Traditional NMS或Soft-NMS結合使用,得到更高的AP與AR。
Softer-NMS的缺點:
順序處理模式,且運算效率比Traditional NMS更低。
額外增加了定位置信度預測的支路來預測定位方差,造成計算開銷。
評判標準是IoU,即只考慮兩個框的重疊面積,這對描述box重疊關系或許不夠全面。
9. Adaptive NMS(CVPR2019)
背景Adaptive NMS是在行人檢測問題上來對soft NMS改進的一種自適應閾值處理方法(==即在軟化得分的前提下繼續(xù)軟化閾值==)。行人檢測任務中,一個最大的問題就是目標在常規(guī)場景下一般處于密集狀態(tài)。如何在解決密集檢測以及密集檢測之中目標之間相互遮擋的問題是行人檢測的一大問題。在以往的研究中,NMS都采用單一閾值的處理方式。使用單一閾值的NMS會面臨以下困境:較低的閾值會導致丟失高度重疊的對象(圖中藍框是未檢測出來的目標),而較高的閾值會導致更多的誤報(紅框是檢測錯誤的目標)。

所以,在密集檢測場景中,我們希望:(1)在目標密集時,可以使用較大的閾值以保證更高的召回率;(2)在目標稀疏時,可以使用較小的閾值來剔除掉更多冗余的檢測框。
思路與方法基于上述背景,Adaptive NMS應用了動態(tài)抑制策略,通過設計計了一個Density-subnet網(wǎng)絡預測目標周邊的密集和稀疏的程度,引入密度監(jiān)督信息,使閾值隨著目標周邊的密稀程度而對應呈現(xiàn)上升或衰減。具體做法:
當鄰框遠離M時(即IoU<Nt),保持si不變;對于遠離M的檢測框,它們被誤報的可能性較小,因此應該保留它們。
對于高度重疊的相鄰檢測,抑制策略不僅取決于與M的重疊,還取決于M是否位于擁擠區(qū)域。
當M處于密集區(qū)域時(即Nm>Nt),目標密度dM作為NMS的抑制閾值;若M處于密集區(qū)域,其高度重疊的相鄰框很可能是另一目標的真正框,因此,應該分配較輕的懲罰或保留。
當M處于稀疏區(qū)域時(即Nm≤Nt),初始閾值Nt作為NMS的抑制閾值。若M處于稀疏區(qū)域,懲罰應該更高以修剪誤報。
Adaptive NMS優(yōu)點:
可以與前面所述的各種NMS結合使用。
對遮擋案例更加友好。
雙階段和單階段的檢測器都有效果。(CVPR2019 Oral)
Adaptive NMS缺點:
與Soft-NMS結合使用,效果可能倒退 (受低分檢測框的影響)。
順序處理模式,運算效率低。
需要額外添加密度預測模塊,造成計算開銷。
評判標準是IoU,即只考慮兩個框的重疊面積,這對描述box重疊關系或許不夠全面。
10. DIOU-NMS(AAAI2020)
在以往的NMS中使用的評判指標都是IOU,但就像前面對IOU的介紹,IOU雖然簡單直觀,但它只考慮兩個框的重疊面積(比如下圖第一種相比于第三種越不太可能是冗余框)。因此,后面研究相繼耶提出了許多IOU變體來使兩框之間的相對位置關系描述更加準確。比如DIOU-NMS就直接將IOU指標換為DIOU。當然結合前面對IOU的介紹,這種換掉IOU指標的NMS變體也可以有很多。

DIOU-NMS優(yōu)點:
從幾何直觀的角度,將中心點考慮進來有助于緩解遮擋案例。
可以與前述NMS變體結合使用。
保持NMS閾值不變的情況下,必然能夠獲得更高recall (因為保留的框增多了)。
DIOU-NMS缺點:
順序處理模式,計算更復雜,運算效率更低。
NMS總結
實際上NMS的變體不止上面提到的方法,還有其他的變體,比如從文本場景中,NMS變體主要是一種基于shape的改變;而在遙感等實時場景中,NMS變體主要是加速策略的改變,提高的的計算效率。
從以上NMS的介紹,可以看出:目前,NMS對傳統(tǒng)NMS算法的改進主要是從極大值的選擇機制,抑制冗余框的機制,IOU的評價指標,anchor的形態(tài)、位置及其所處的環(huán)境(周邊的密度)等方面來進行優(yōu)化。雖然NMS算法一直在不斷的優(yōu)化,但未來更主流的方式是nms-free。
參考文獻:
https://chih-sheng-huang821.medium.com
https://mp.weixin.qq.com/s/jLnde0Xms-99g4z16OE9VQ
DIoU-NMS:Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
soft-NMS(ICCV2017):Soft-NMS -- Improving Object Detection With One Line of Code
Weighted-NMS(ICMEW2017):Inception Single Shot MultiBox Detector for object detection
IOU-Guided NMS/IOU-Net(ECCV2018):Acquisition of Localization Confidence for Accurate Object Detection
softer NMS(CVPR2019):Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection.
Adaptive NMS(CVPR2019):Adaptive NMS: Refining Pedestrian Detection in a Crowd
DIOU-NMS(AAAI2020):Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression.
需要目標檢測相關論文的同學
可以關注【學姐帶你玩AI】公眾號回復“CVPR”
領取學姐整理的500多篇論文(包含CV各個方向)