Soft-NMS: Improving object detection with one line of code

Improving object detection with one line of code 是ICCV2017的文章,主要是優化解決目標檢測後處理中非極大值抑制(NMS,Non Maximum Suppression)的問題。算法

NMS:

在解析本文主旨以前,先回顧下當前目標檢測算法中必不可少的NMS。當前,不管是兩階段的Faster-RCNN或者one-stage的SSD、YOLO等目標檢測模型,最終獲得的目標的候選框很是多,然而圖片中實際的目標很少,遠遠小於候選框的數量。然而對於同一目標,可能產生多個候選框,相互之間的重合度很高,所以爲了消除多餘重複的,獲得最終的候選框,下降false positive,NMS被普遍地應用。ide

其主要思想與步驟以下:函數

  1. 對於同屬一類的檢測候選框,按照其confidence score進行排序;
  2. 選擇score最高的檢測框,加入最終的檢測結果中,而後計算其他各框與其的overlap,若是大於所設閾值,則將對應的框刪除,即進行抑制;小於則保留進入下一此迭代選擇;
  3. 對於剩餘的框的重複步驟1和2;

其僞代碼如圖1所示:優化

                    

    圖1  算法流程               spa

紅色即爲傳統非極大值抑制的算法流程。NMS很是依賴於overlap的預設閾值T, T過大,則起不到抑制做用,產生FP;T太小,則抑制做用太強,miss_rate會提升,產生漏檢。目前,通常將其設置爲0.3。其次,當兩個同類目標臨近時,也易形成漏檢。以下圖2所示,綠色框內的目標會被抑制形成漏檢。設計

    圖2   NMS缺陷說明 code

Soft-NMS:

基於NMS的上述缺陷,做者提出了Soft-NMS的想法,即當重疊度知足必定閾值後,不是直接將其抑制,而是將其confidence score 下降進入下一次迭代選擇(如圖1綠色虛框所示)。經過overlap的大小下降候選框的置信度來改善上述缺陷,重疊度越大,score下降越多,由於它們更有可能成爲FP。 blog

所以做者首先設計了以下的score decaying公式:排序

上式經過一個線性關係根據overlap的大小對score進行降低和懲罰。然而上式並非一個連續,所以做者又提出了一種基於高斯函數的rescore function:圖片

此函數中\sigma爲預設值,做者嘗試了[0.1, 0.3, 0.5, 0.7, 0.9 ,1.1]等值。(higher \sigma better localization

根據圖1綠色虛框所示,Soft-NMS算法的時間複雜度與NMS相同,也是O(N^{2})。可是根據做者大量實驗能夠得出,Soft-NMS相比於NMS,在同等計算複雜度的狀況下,會獲得更高的準確率和定位精度,以下圖所示。

以上爲本人對Soft-NMS拙見,歡迎討論。下篇博客會分享曠世ECCV2018的新做IOU-Net,也是去優化NMS,歡迎閱讀。