《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
《一文搞懂NMS發(fā)展歷程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
文章目錄
- 《一文搞懂NMS發(fā)展歷程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
- 1. NMS介紹
- 2. NMS算法流程
- 3. NMS 過(guò)程圖例
- 3.1 單類(lèi)別例子
- 3.2 多類(lèi)別例子
- 4. Soft-NMS(ICCV2017)
- 5. Weighted-NMS(ICMEW2017)
- 6. 分類(lèi)置信度優(yōu)先NMS總結(jié)
- 7. IOU-Guided NMS/IOU-Net(ECCV2018)
- 8. Softer NMS(CVPR2019)
- 9. Adaptive NMS(CVPR2019)
- 10. DIOU-NMS(AAAI2020)
- NMS總結(jié)
- 參考文獻(xiàn)
1. NMS介紹
在執(zhí)行目標(biāo)檢測(cè)任務(wù)時(shí),算法可能對(duì)同一目標(biāo)有多次檢測(cè)。NMS是一種讓你確保算法只對(duì)每個(gè)對(duì)象得到一個(gè)檢測(cè)的方法,即“清理檢測(cè)”。如下圖所示:
如果用一句話(huà)概括NMS的意思就是:篩選出一定區(qū)域內(nèi)屬于同一種類(lèi)別得分最大的框
2. NMS算法流程
NMS 算法的大致過(guò)程:每輪選取置信度最大的 Bounding Box ,接著關(guān)注所有剩下的 BBox 中與選取的 BBox 有著高重疊(IoU)的,它們將在這一輪被抑制。這一輪選取的 BBox 會(huì)被保留輸出,且不會(huì)在下一輪出現(xiàn)。接著開(kāi)始下一輪,重復(fù)上述過(guò)程:選取置信度最大 BBox ,抑制高 IoU BBox。
NMS 算法流程:這是一般文章中介紹的 NMS,比較難懂。但實(shí)際上 NMS 的實(shí)現(xiàn)反而簡(jiǎn)單很多。
3. NMS 過(guò)程圖例
- 單類(lèi)別 NMS 的例子:有兩只狗,怎樣用 NMS 保證只留下兩個(gè) BBox?
- 多類(lèi)別 NMS 的例子,有1只狗1只貓,我們?cè)趺从肗MS將偵測(cè)到的物件框?qū)沿埡凸房虺鰜?lái)。
3.1 單類(lèi)別例子
1)理解 BBox 輸入或輸出格式,通常會(huì)見(jiàn)到兩種格式:
-
第一種,BBox 中心位置(x, y) + BBox 長(zhǎng)寬(h, w) + Confidence Score;
-
第二種,BBox 左上角點(diǎn)(x1,y1) + BBox 右下角點(diǎn)(x2,y2) + Confidence Score;
兩種表達(dá)的本質(zhì)是一樣的,均為五個(gè)變量。與 BBox 相關(guān)的四個(gè)變量用于計(jì)算 IoU,Confidence Score 用于排序。
2)理解評(píng)估重疊的 IoU 指標(biāo),即“交并比”,如下圖所示:
3)步驟:
第一步:對(duì) BBox 按置信度排序,選取置信度最高的 BBox(所以一開(kāi)始置信度最高的 BBox 一定會(huì)被留下來(lái));
第二步:對(duì)剩下的 BBox 和已經(jīng)選取的 BBox 計(jì)算 IoU,淘汰(抑制) IoU 大于設(shè)定閾值的 BBox(在圖例中這些淘汰的 BBox 的置信度被設(shè)定為0)。
第三步:重復(fù)上述兩個(gè)步驟,直到所有的 BBox 都被處理完,這時(shí)候每一輪選取的 BBox 就是最后結(jié)果。
具體流程
「確定是物體集合」= {空集合}
Run 1: 先將BBox依照置信度排序,置信度最高的BBox (紅色) 會(huì)被選入「確定是物體集合」內(nèi),其他BBox會(huì)根據(jù)這步驟選出最高的BBox進(jìn)行IoU計(jì)算,如果粉紅色的IoU為0.6大于我們?cè)O(shè)定的0.5,所以將粉紅色的BBox置信度設(shè)置為0。
此時(shí)「確定是物件集合」= {紅色BBox }
Run 2: 不考慮置信度為0和已經(jīng)在「確定是物體集合」的BBox,剩下來(lái)的物體繼續(xù)選出最大置信度的BBox,將此BBox(黃色)丟入「確定是物體集合」,剩下的BBox和Run2選出的最大置信度的BBox計(jì)算IoU,其他BBox都大于0.5,所以其他的BBox置信度設(shè)置為0。
此時(shí)「確定是物件集合」= {紅色BBox; 黃色BBox}
因?yàn)闆](méi)有物體置信度>0,所以結(jié)束NMS。
「確定是物件集合」= {紅色BBox; 黃色BBox}。
在上面這個(gè)例子中,NMS 只運(yùn)行了兩輪就選取出最終結(jié)果:第一輪選擇了紅色 BBox,淘汰了粉色 BBox;第二輪選擇了黃色 BBox,淘汰了紫色 BBox 和青色 BBox。注意到這里設(shè)定的 IoU 閾值是0.5,假設(shè)將閾值提高為0.7,結(jié)果又是如何?
可以看到,NMS 用了更多輪次來(lái)確定最終結(jié)果,并且最終結(jié)果保留了更多的 BBox,但結(jié)果并不是我們想要的。因此,在使用 NMS 時(shí),IoU 閾值的確定是比較重要的,但一開(kāi)始我們可以選定 default 值(論文使用的值)進(jìn)行嘗試。由此可以知道,如果IoU閾值設(shè)定太高,可能會(huì)造成物件重復(fù)檢測(cè)的問(wèn)題。
3.2 多類(lèi)別例子
第二個(gè)例子,有1只狗1只貓,我們?cè)趺从肗MS將偵測(cè)到的物件框?qū)沿埡凸房虺鰜?lái)
前面的范例一是標(biāo)準(zhǔn)的NMS程序,這邊要搭配一下分類(lèi)來(lái)看,范例二和標(biāo)準(zhǔn)NMS做法一樣,先將「確定是物件集合」選出來(lái),此例是NMS選出的BBox是{紫色BBox ; 紅色BBox}。
這時(shí)候再搭配一下分類(lèi)的機(jī)率,就可以把每個(gè)NMS選出的BBox做類(lèi)別判斷了(如下圖,每個(gè)BBox都會(huì)帶有一組機(jī)率)
這邊附上實(shí)際做法,先用一個(gè)閾值先初步去掉一些候選的BBox,不然假設(shè)一張圖預(yù)選出一萬(wàn)個(gè)BBox,后面用CPU計(jì)算NMS會(huì)很花時(shí)間,所以會(huì)依據(jù)BBox的confidence score先去掉一些沒(méi)用的BBox,然后再做NMS,如下圖
如果是two stage算法,通常在選出BBox只會(huì)帶有BBox中心位置(x, y)、BBox長(zhǎng)寬(h, w)和confidence score,不會(huì)有類(lèi)別的機(jī)率,因?yàn)槌绦蚴窍冗x出BBox,在將選出BBox的feature map做rescale (一般用ROI pooling),然后再用分類(lèi)器分類(lèi)。
但如果是one stage作法,是直接BBox帶有BBox中心位置(x, y)、BBox長(zhǎng)寬(h, w)和confidence score,以及相對(duì)應(yīng)的分類(lèi)機(jī)率,相對(duì)于two stage少了后面rescale和分類(lèi)的程序,所以計(jì)算量相對(duì)小。
雖然NMS可以處理掉較多的冗余框,但傳統(tǒng)的NMS存在以下局限性:
- 循環(huán)步驟,GPU難以并行處理,運(yùn)算效率低
- 以分類(lèi)置信度為優(yōu)先衡量指標(biāo) 分類(lèi)置信度高的定位不一定最準(zhǔn),降低了模型的定位準(zhǔn)確度
- 直接提高閾值暴力去除bbox 將得分較低的邊框強(qiáng)制性地去掉,如果物體出現(xiàn)較為密集時(shí),本身屬于兩個(gè)物體的邊框,其中得分較低的框就很有可能被抑制掉,從而降低了模型的召回率,且閾值設(shè)定完全依賴(lài)自身經(jīng)驗(yàn)。
4. Soft-NMS(ICCV2017)
- NMS設(shè)定的局限性顯然,對(duì)于IoU≥NMS閾值的相鄰框,傳統(tǒng)NMS的做法是將其得分暴力置0,相當(dāng)于被舍棄掉了,這就有可能造成邊框的漏檢,尤其是有遮擋的場(chǎng)景。
- Soft-NMS解決方案對(duì)IoU大于閾值的邊框,Soft-NMS采取得分懲罰機(jī)制,降低該邊框的得分,即使用一個(gè)與IoU正相關(guān)的懲罰函數(shù)對(duì)得分進(jìn)行懲罰。當(dāng)鄰居檢測(cè)框b與當(dāng)前框M有大的IoU時(shí),它更應(yīng)該被抑制,因此分?jǐn)?shù)更低。而遠(yuǎn)處的框不受影響。
從實(shí)驗(yàn)結(jié)果來(lái)看的話(huà),soft-NMS(紅色)能夠比較好的緩解掉傳統(tǒng)NMS(藍(lán)色)暴力剔除所帶來(lái)的物體遮擋漏檢情況。
Soft-NMS的類(lèi)型
Soft-NMS的局限性
5. Weighted-NMS(ICMEW2017)
如果前面講的Soft NMS是通過(guò)抑制機(jī)制來(lái)改善剔除結(jié)果(降低超閾值的得分策略),那么Weighted NMS(W-NMS)則是從極大值這個(gè)方面進(jìn)行改進(jìn)。W-NMS認(rèn)為T(mén)raditional NMS每次迭代所選出的最大得分框未必是精確定位的,冗余框也有可能是定位良好的。因此,W-NMS通過(guò)分類(lèi)置信度與IoU來(lái)對(duì)同類(lèi)物體所有的邊框坐標(biāo)進(jìn)行加權(quán)平均,并歸一化。其中,加權(quán)平均的對(duì)象包括M自身以及IoU≥NMS閾值的相鄰框。
-
優(yōu)點(diǎn):Weighted NMS通常能夠獲得更高的Precision和Recall,一般來(lái)說(shuō),只要NMS閾值選取得當(dāng),Weighted NMS均能穩(wěn)定提高AP與AR。
-
缺點(diǎn):
(1)仍為順序處理模式,且運(yùn)算效率比Traditional NMS更低。
(2)加權(quán)因子是IoU與得分,前者只考慮兩個(gè)框的重疊面積;而后者受到定位與得分不一致問(wèn)題的限制。
6. 分類(lèi)置信度優(yōu)先NMS總結(jié)
NMS、Soft-NMS及Weighted NMS的局限性:
- 都是以分類(lèi)置信度優(yōu)先的NMS,未考慮定位置信度,即沒(méi)有考慮定位與分類(lèi)得分可能出現(xiàn)不一致的情況,特別是框的邊界有模棱兩可的情形時(shí)。
- 采用的都是傳統(tǒng)的IoU,只考慮兩包圍盒子之間的重疊率,未能充分反映兩包圍盒子之間相對(duì)位置關(guān)系。
7. IOU-Guided NMS/IOU-Net(ECCV2018)
前面所提到的NMS方法只將分類(lèi)的預(yù)測(cè)值作為邊框排序的依據(jù)。然而在某些場(chǎng)景下,分類(lèi)預(yù)測(cè)值高的邊框不一定擁有與真實(shí)框最接近的位置,因此這種標(biāo)準(zhǔn)不平衡可能會(huì)導(dǎo)致更為準(zhǔn)確的邊框被抑制掉。
之前NMS的局限性:
- 分類(lèi)準(zhǔn)確率和定位準(zhǔn)確率的誤匹配:從左下圖看,IoU與定位置信度高度相關(guān)(0.617),而與分類(lèi)置信度幾乎無(wú)關(guān)(0.217)。
- 邊界框回歸的非單調(diào)性與非可解釋性:缺乏localization confidence使得被廣泛使用的邊界框回歸方法缺少可解釋性或可預(yù)測(cè)性。先前的工作曾指出bounding box迭代回歸的非單調(diào)性,也就是說(shuō),應(yīng)用多次之后bounding box回歸可能有損bounding box定位表現(xiàn)。
在此背景下,曠視IOU-Net論文提出了IoU-Guided NMS,即一個(gè)預(yù)測(cè)框與真實(shí)框IoU的預(yù)測(cè)分支來(lái)學(xué)習(xí)定位置信度,進(jìn)而使用定位置信度來(lái)引導(dǎo)NMS的學(xué)習(xí)。具體來(lái)說(shuō),就是使用定位置信度作為NMS的篩選依據(jù),每次迭代挑選出最大定位置信度的框M,然后將IoU≥NMS閾值的相鄰框剔除,但把冗余框及其自身的最大分類(lèi)得分直接賦予M。因此,最終輸出的框必定是同時(shí)具有最大分類(lèi)得分與最大定位置信度的框。
IOU-Guided NMS優(yōu)點(diǎn):
- 通過(guò)該預(yù)測(cè)分解決了NMS過(guò)程中分類(lèi)置信度與定位置信度之間的不一致,可以與當(dāng)前的物體檢測(cè)框架一起端到端地訓(xùn)練,在幾乎不影響前向速度的前提下,有效提升了物體檢測(cè)的精度。
- IoU-Guided NMS有助于提高嚴(yán)格指標(biāo)下的精度,如AP75, AP90。(在IoU閾值較高時(shí)IoU-guided NMS算法的優(yōu)勢(shì)還是比較明顯的(比如AP90),原因就在于IoU閾值較高時(shí)需要預(yù)測(cè)框的坐標(biāo)更加準(zhǔn)確才能有較高的AP值,這正好和IoU-guided NMS的出發(fā)點(diǎn)吻合。)
IoU-Guided NMS缺點(diǎn):
- 順序處理的模式,運(yùn)算效率與Traditional NMS相同。
- 需要額外添加IoU預(yù)測(cè)分支,造成計(jì)算開(kāi)銷(xiāo)。
- 評(píng)判標(biāo)準(zhǔn)為IoU,即只考慮兩個(gè)框的重疊面積。
8. Softer NMS(CVPR2019)
總體概覽從Softer-NMS的公式來(lái)看,Softer-NMS可以看成是前面三種NMS變體的結(jié)合,即:其極大值的選擇/設(shè)定采用了與類(lèi)似Weighted NMS(加權(quán)平均)的方差加權(quán)平均操作,其加權(quán)的方式采用了類(lèi)似Soft NMS的評(píng)分懲罰機(jī)制(受Soft-NMS啟發(fā),離得越近,不確定性越低,會(huì)分配更高的權(quán)重),最后,它的網(wǎng)絡(luò)構(gòu)建思路與IOU-Guided NMS相類(lèi)似。
與IOU-Guided NMS區(qū)別Softer-NMS與IOU-Guided NMS的出發(fā)點(diǎn)同樣是解決定位與分類(lèi)置信度之間非正相關(guān)的問(wèn)題,所采用的思路一樣是增加一個(gè)定位置信度的預(yù)測(cè),但不一樣的是前面提到的IoU-Guided NMS采用IoU作為定位置信度來(lái)優(yōu)先排序,而這里Softer-NMS則是通過(guò)定位分布的方差來(lái)拉近預(yù)測(cè)邊框與真實(shí)物體分布,即IoU-Guided NMS采用IoU作為定位置信度而Softer-NMS采用坐標(biāo)方差作為定位置信度,具體的做法就是通過(guò)KL散度來(lái)判別兩個(gè)分布的相似性。
其中,Softer NMS論文中有兩個(gè)先驗(yàn)假設(shè):
(1)Bounding box的是高斯分布
(2)ground truth bounding box是狄拉克delta分布(即標(biāo)準(zhǔn)方差為0的高斯分布極限)。
Softer-NMS的優(yōu)點(diǎn):
- 增加了定位置信度的預(yù)測(cè),是定位回歸更加準(zhǔn)確與合理。
- 使用便捷,可以與Traditional NMS或Soft-NMS結(jié)合使用,得到更高的AP與AR。
Softer-NMS的缺點(diǎn):
- 順序處理模式,且運(yùn)算效率比Traditional NMS更低。
- 額外增加了定位置信度預(yù)測(cè)的支路來(lái)預(yù)測(cè)定位方差,造成計(jì)算開(kāi)銷(xiāo)。
- 評(píng)判標(biāo)準(zhǔn)是IoU,即只考慮兩個(gè)框的重疊面積,這對(duì)描述box重疊關(guān)系或許不夠全面。
9. Adaptive NMS(CVPR2019)
背景Adaptive NMS是在行人檢測(cè)問(wèn)題上來(lái)對(duì)Soft NMS改進(jìn)的一種自適應(yīng)閾值處理方法(即在軟化得分的前提下繼續(xù)軟化閾值)。行人檢測(cè)任務(wù)中,一個(gè)最大的問(wèn)題就是目標(biāo)在常規(guī)場(chǎng)景下一般處于密集狀態(tài)。如何在解決密集檢測(cè)以及密集檢測(cè)之中目標(biāo)之間相互遮擋的問(wèn)題是行人檢測(cè)的一大問(wèn)題。在以往的研究中,NMS都采用單一閾值的處理方式。使用單一閾值的NMS會(huì)面臨以下困境:較低的閾值會(huì)導(dǎo)致丟失高度重疊的對(duì)象(圖中藍(lán)框是未檢測(cè)出來(lái)的目標(biāo)),而較高的閾值會(huì)導(dǎo)致更多的誤報(bào)(紅框是檢測(cè)錯(cuò)誤的目標(biāo))。
所以,在密集檢測(cè)場(chǎng)景中,我們希望:(1)在目標(biāo)密集時(shí),可以使用較大的閾值以保證更高的召回率;(2)在目標(biāo)稀疏時(shí),可以使用較小的閾值來(lái)剔除掉更多冗余的檢測(cè)框。
思路與方法基于上述背景,Adaptive NMS應(yīng)用了動(dòng)態(tài)抑制策略,通過(guò)設(shè)計(jì)計(jì)了一個(gè)Density-subnet網(wǎng)絡(luò)預(yù)測(cè)目標(biāo)周邊的密集和稀疏的程度,引入密度監(jiān)督信息,使閾值隨著目標(biāo)周邊的密稀程度而對(duì)應(yīng)呈現(xiàn)上升或衰減。具體做法:
- 當(dāng)鄰框遠(yuǎn)離M時(shí)(即IoU<Nt),保持si不變;對(duì)于遠(yuǎn)離M的檢測(cè)框,它們被誤報(bào)的可能性較小,因此應(yīng)該保留它們。
- 對(duì)于高度重疊的相鄰檢測(cè),抑制策略不僅取決于與M的重疊,還取決于M是否位于擁擠區(qū)域。
- 當(dāng)M處于密集區(qū)域時(shí)(即Nm>Nt),目標(biāo)密度dM作為NMS的抑制閾值;若M處于密集區(qū)域,其高度重疊的相鄰框很可能是另一目標(biāo)的真正框,因此,應(yīng)該分配較輕的懲罰或保留。
- 當(dāng)M處于稀疏區(qū)域時(shí)(即Nm≤Nt),初始閾值Nt作為NMS的抑制閾值。若M處于稀疏區(qū)域,懲罰應(yīng)該更高以修剪誤報(bào)。
Adaptive NMS優(yōu)點(diǎn):
Adaptive NMS缺點(diǎn):
10. DIOU-NMS(AAAI2020)
在以往的NMS中使用的評(píng)判指標(biāo)都是IoU,但就像前面對(duì)IoU的介紹,IoU雖然簡(jiǎn)單直觀,但它只考慮兩個(gè)框的重疊面積(比如下圖第一種相比于第三種越不太可能是冗余框)。因此,后面研究相繼耶提出了許多IoU變體來(lái)使兩框之間的相對(duì)位置關(guān)系描述更加準(zhǔn)確。比如DIoU-NMS就直接將IoU指標(biāo)換為DIoU。當(dāng)然結(jié)合前面對(duì)IoU的介紹,這種換掉IoU指標(biāo)的NMS變體也可以有很多。
DIOU-NMS優(yōu)點(diǎn):
DIOU-NMS缺點(diǎn):
順序處理模式,計(jì)算更復(fù)雜,運(yùn)算效率更低。
NMS總結(jié)
實(shí)際上NMS的變體不止上面提到的方法,還有其他的變體,比如從文本場(chǎng)景中,NMS變體主要是一種基于shape的改變;而在遙感等實(shí)時(shí)場(chǎng)景中,NMS變體主要是加速策略的改變,提高的的計(jì)算效率。
從以上NMS的介紹,可以看出:目前,NMS對(duì)傳統(tǒng)NMS算法的改進(jìn)主要是從極大值的選擇機(jī)制,抑制冗余框的機(jī)制,IoU的評(píng)價(jià)指標(biāo),anchor的形態(tài)、位置及其所處的環(huán)境(周邊的密度)等方面來(lái)進(jìn)行優(yōu)化。雖然NMS算法一直在不斷的優(yōu)化,但未來(lái)更主流的方式是NMS-free。
參考文獻(xiàn)
機(jī)器/深度學(xué)習(xí): 物件偵測(cè) Non-Maximum Suppression (NMS) | by Tommy Huang | Medium
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.
總結(jié)
以上是生活随笔為你收集整理的《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于mfc常用系统函数的使用及说明
- 下一篇: iOS开发工具