目标检测后处理:从nms到softer nms
文章目錄
- 1 NMS
- 1.1 動機
- 1.2 步驟
- 2 Soft-NMS
- 2.1 動機
- 2.2 算法思想
- 2.3 步驟
- 3 Softer-NMS
- 3.1 動機
- 3.1.1 現有方法的問題
- 3.1.2 本文解決辦法
- 3.2 算法部分
- 3.2.1 定位任務
- 3.2.2 定位損失
- 3.2.3 后處理
- 4 總結
- 5 參考文獻
對于目標檢測算法,它包含了三個要素:Backbone + Head + Postprocess,上一篇文章介紹了Light Head R-CNN,它是對“head”部分的優化,對于Postprocess部分,最早用的是NMS,后面出現了Soft NMS和Softer NMS,本文將分別解釋它們的動機和原理,希望能對大家有所幫助。
1 NMS
NMS,它的全稱為“non-maximum supression”。為什么要使用nms呢?因為在目標檢測任務中,不管是one-stage還是two-stage的算法,最終算法都會預測出多個proposals。在后處理部分中,需要對這些proposals做篩選。
1.1 動機
(1)優先選擇分類score較高的proposal;
(2)跟分類score重疊較多的proposals,可以視為冗余的預測框;
1.2 步驟
(1)將算法預測出的所有proposals,按照不同的類別標簽分組;
(2)對于每一個類別的所有proposals,記作BBB,篩選后的proposals集合記作DDD,執行如下操作,
????????(a)選擇score最高的proposal,記作MMM,加入到DDD中;
????????(b)計算剩余的proposals與MMM之間的Iou,若大于閾值NtN_{t}Nt?,則舍棄,否則保留;
????????(c)若步驟(b)中得到的所有proposals為空,則跳回步驟(2),否則執行步驟(a)。
(3)經過后處理之后,所有類別保留的有效proposals集合為S={D_{1}, D_{2}, …, D_{c},其中c表示目標類別的數量;
偽代碼如下圖,
2 Soft-NMS
2.1 動機
由上可見,NMS算法保留score最高的預測框,并將與當前預測框重疊較多的proposals視作冗余,顯然,在實際的檢測任務中,這種思路有明顯的缺點,比如對于稠密物體檢測,當同類的兩個目標距離較近時,如果使用原生的nms,就會導致其中一個目標不能被召回,為了提高這種情況下目標檢測的召回率,Soft-NMS應運而生。對于Faster-RCNN在MS-COCO數據集上的結果,將NMS改成Soft-NMS,mAP提升了1.1%。
2.2 算法思想
Soft-NMS,原文的標題為“Improving Object Detection With One Line of Code”。NMS采用“一刀切”的思想,將重疊較多的proposals全部視作冗余,而Soft-NMS,采用了“迂回”戰術,它認為重疊較多的proposals也有可能包含有效目標,只不過重疊區域越大可能性越小。參見下圖,NMS會將綠色框的score置0,而Soft-NMS會將綠色框的score由0.8下降到0.4,顯然Soft-NMS更加合理。
那么問題來了,怎么建立Iou和score之間的聯系呢,文章中給出的公式如下,
其中DDD表示所有保留的有效框集合,bib_{i}bi?表示待過濾的第iii個預測框,sis_{i}si?為第iii個預測框對應的分類score。這里使用了高斯函數作為懲罰項,當iou=0iou=0iou=0時,分類score不變,當0<iou<10<iou<10<iou<1時,分類score會做衰減。以上圖為例,綠色框bib_{i}bi?和紅色框MMM的iou大于0,經過Soft-NMS后該綠色框的分類score由0.8衰減到0.4,可以推斷出,如果圖中有第2個綠色框,且其與紅色框的重疊區域更大時,那么這個新的綠色框的分類score可能由0.8衰減到0.01。
2.3 步驟
因為Soft-NMS和NMS的區別很小,這里就不再詳細解釋了,引用論文中的偽代碼,如下圖,
3 Softer-NMS
(本文的一作是何宜輝,之前有讀過他在模型剪枝方面的工作,還是很厲害的?,F在在目標檢測領域,再次讀到大牛文章,也是巧了~)
3.1 動機
3.1.1 現有方法的問題
作者使用VGG-16 faster R-CNN測試了MS-COCO數據集中的圖片,論文中貼了兩張檢測失敗的代表圖片,如下圖,
左圖存在的問題:檢測出來的2個proposals,沿著y坐標軸方向的定位均不準確;
結論:檢測算法預測出來的proposals的坐標不一定準確;
右圖存在的問題:檢測出來的2個proposals,右邊的框分類score較高,但是卻沿著x坐標軸方向的定位不準確;
結論:分類score高不一定定位score高,也即classification confidence和 localization confidence不具有一致性。
3.1.2 本文解決辦法
針對上面的問題,(1)既然proposals的坐標不準確,那么即便NMS也無能為力了,所以需要重新設計坐標回歸的方式);(2)既然分類score高不一定定位score高,那么NMS和Soft-NMS的做法(只基于分類score對proposals做排序)是不準確的,所以需要同時預測出檢測框的定位score。
3.2 算法部分
Softer-NMS的算法框架如下圖,可以看出,它跟fast R-CNN是非常相似的,區別在于回歸任務中多了一個Box std分支,這里需要解釋一下,比如預測出的bounding box的坐標為$x_{1}, y_{1}, x_{2}, y_{2} $,該分支會預測出每個坐標的標準差,顯然,當坐標的標準差越小時,表明預測得到的坐標值越可信,也即Box std分支用于表征定位任務的置信度。
3.2.1 定位任務
在fast R-CNN中,作者使用的是均方誤差函數作為定位損失,總的目的是讓定位出的坐標點盡可能逼近groundtruth box。本文中為了在定位坐標同時輸出定位score,使用了高斯函數建模坐標點的位置分布,公式如下,
其中,xex_{e}xe?為預測的box位置,σ\sigmaσ表示box位置的標準差,衡量了box位置的不確定性。
因為groundtruth位置是確定的,所以groundtruth box的坐標為標準差為0的高斯分布,也即Dirac delta函數,公式如下,
其中,xgx_{g}xg?為groundtruth box的坐標。、
3.2.2 定位損失
回歸任務的目的是讓預測框盡可能逼近真實框,也即Pθ(x)P_{\theta}(x)Pθ?(x)和PD(x)P_{D}(x)PD?(x)為同一分布,衡量概率分布的相似性,自然而然會想到KL散度,關于KL散度的概念,大家可以參見維基百科,值得一提的是,KL散度本身具有不對稱性,通常,在實際應用中為了使用對稱性,使用的是KL散度的變形形式,但本文中沒有這么做。對公式做化簡后,最終的簡化形式如下,
3.2.3 后處理
經過上面的網絡部分,Class分支會輸出類別score,Box分支會輸出box的4個坐標和這4個坐標對應的標準差(定位score),符號表示如下,
基于這些信息,新的后處理算法如下圖,
顯然,softer-NMS基于回歸出的定位confidence,對所有與MMM的IoU超過閾值NtN_{t}Nt?的proposals,使用加權平均更新其位置坐標,從而達到提高定位精度的目的。因為softer-NMS關注的是單個框的定位精度,而NMS和soft-NMS關注的是單個框的冗余性,顯然關注點不同,所以softer-NMS可以和soft-NMS組合使用,此時效果更佳。
4 總結
NMS:只適用于圖片中目標比較稀疏的場景,即目標之間的間距較大;
soft-NMS:可以部分解決出現稠密目標的情況(ps:Face++提出了RepLoss,從模型的角度解決這一問題,大家感興趣也可以去讀讀該論文);
softer-NMS:該后處理方法采用"bagging"的思想,通過后處理提高定位精度,可以和soft-NMS組合使用。
5 參考文獻
https://arxiv.org/pdf/1704.04503.pdf
https://arxiv.org/pdf/1809.08545.pdf
https://megvii.com/newscenter/119
總結
以上是生活随笔為你收集整理的目标检测后处理:从nms到softer nms的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目】FT232RL设计记录
- 下一篇: ARM芯片的时钟系统详解(S5PV210