Improving object detection with one line of code 是ICCV2017的文章,主要是優化解決目標檢測後處理中非極大值抑制(NMS,Non Maximum Suppression)的問題。算法
在解析本文主旨以前,先回顧下當前目標檢測算法中必不可少的NMS。當前,不管是兩階段的Faster-RCNN或者one-stage的SSD、YOLO等目標檢測模型,最終獲得的目標的候選框很是多,然而圖片中實際的目標很少,遠遠小於候選框的數量。然而對於同一目標,可能產生多個候選框,相互之間的重合度很高,所以爲了消除多餘重複的,獲得最終的候選框,下降false positive,NMS被普遍地應用。ide
其主要思想與步驟以下:函數
其僞代碼如圖1所示:優化
圖1 算法流程 spa
紅色即爲傳統非極大值抑制的算法流程。NMS很是依賴於overlap的預設閾值T, T過大,則起不到抑制做用,產生FP;T太小,則抑制做用太強,miss_rate會提升,產生漏檢。目前,通常將其設置爲0.3。其次,當兩個同類目標臨近時,也易形成漏檢。以下圖2所示,綠色框內的目標會被抑制形成漏檢。設計
圖2 NMS缺陷說明 code
基於NMS的上述缺陷,做者提出了Soft-NMS的想法,即當重疊度知足必定閾值後,不是直接將其抑制,而是將其confidence score 下降進入下一次迭代選擇(如圖1綠色虛框所示)。經過overlap的大小下降候選框的置信度來改善上述缺陷,重疊度越大,score下降越多,由於它們更有可能成爲FP。 blog
所以做者首先設計了以下的score decaying公式:排序
上式經過一個線性關係根據overlap的大小對score進行降低和懲罰。然而上式並非一個連續,所以做者又提出了一種基於高斯函數的rescore function:圖片
此函數中爲預設值,做者嘗試了[0.1, 0.3, 0.5, 0.7, 0.9 ,1.1]等值。(higher better localization)
根據圖1綠色虛框所示,Soft-NMS算法的時間複雜度與NMS相同,也是。可是根據做者大量實驗能夠得出,Soft-NMS相比於NMS,在同等計算複雜度的狀況下,會獲得更高的準確率和定位精度,以下圖所示。
以上爲本人對Soft-NMS拙見,歡迎討論。下篇博客會分享曠世ECCV2018的新做IOU-Net,也是去優化NMS,歡迎閱讀。