1. 程式人生 > >Soft NMS

Soft NMS

() pro gre iou 去除 大致 mar box style

論文:Improving Object DetectionWith One Line of Code
論文鏈接:https://arxiv.org/abs/1704.04503

這篇ICCV2017的文章,是NMS算法的改進,從論文題目可以看出,改進僅僅花了一行代碼!首先NMS(Non maximum suppression)是在object detection算法中必備的後處理步驟,目的是用來去除重復框,也就是降低誤檢(false positives)。NMS算法的大致過程可以看原文這段話:First, it sorts all detection boxes on the basis of their scores. The detection box M with the maximum score is selected and all other detection boxes with a significant overlap (using a pre-defined threshold) with M are suppressed. This process is recursively applied on the remaining boxes.

那麽傳統的NMS算法存在什麽問題呢?可以看Figure1。在Fiugre1中,檢測算法本來應該輸出兩個框,但是傳統的NMS算法可能會把score較低的綠框過濾掉(如果綠框和紅框的IOU大於設定的閾值就會被過濾掉),導致只檢測出一個object(一個馬),顯然這樣object的recall就比較低了。
技術分享圖片

可以看出NMS算法是略顯粗暴(hard),因為NMS直接將和得分最大的box的IOU大於某個閾值的box的得分置零,那麽有沒有soft一點的方法呢?這就是本文提出Soft NMS。那麽Soft-NMS算法到底是什麽樣呢?簡單講就是:An algorithm which decays the detection scores of all other objects as a continuous function of their overlap with M.

換句話說就是用稍低一點的分數來代替原有的分數,而不是直接置零。另外由於Soft NMS可以很方便地引入到object detection算法中,不需要重新訓練原有的模型,因此這是該算法的一大優點。

Figure2是Soft NMS算法的偽代碼。首先是關於三個輸入B、S、Nt,在FIgure2中已經介紹很清楚了。D集合用來放最終的box,在boxes集合B非空的前提下,搜索score集合S中數值最大的數,假設其下標為m,那麽bm(也是M)就是對應的box。然後將M和D集合合並,並從B集合中去除M。再循環集合B中的每個box,這個時候就有差別了,如果是傳統的NMS操作,那麽當B中的box bi和M的IOU值大於閾值Nt,那麽就從B和S中去除該box;如果是Soft NMS,則對於B中的box bi也是先計算其和M的IOU,然後該IOU值作為函數f()的輸入,最後和box bi的score si相乘作為最後該box bi的score。就是這麽簡單!


技術分享圖片

接下來得重點就是如何確定函數f()了。
首先NMS算法可以用下面的式子表示:
技術分享圖片

為了改變NMS這種hard threshold做法,並遵循iou越大,得分越低的原則(iou越大,越有可能是false positive),自然而然想到可以用下面這個公式來表示Soft NMS:
技術分享圖片

但是上面這個公式是不連續的,這樣會導致box集合中的score出現斷層,因此就有了下面這個Soft NMS式子(也是大部分實驗中采用的式子):
技術分享圖片
這個式子滿足了:A continuous penalty function should have no penalty when there is no overlap and very high penalty at a high overlap.

實驗結果:
Table1是在MS-COCO數據集上的結果對比。表中的G表示上面連續的Soft NMS公式,L表示上面不連續的Soft NMS公式,從實驗對比可以看出二者之間的差別並不大。對於G類型的Soft NMS,參數a取0.5,對於L類型的Soft NMS,參數Nt取0.3(感覺這個參數取的有點偏低)。
技術分享圖片

Table2是在VOC 2007數據集上的結果對比。
技術分享圖片

Table3是一個很不錯的對比圖。左邊一半是NMS,右邊一半是Soft NMS。在NMS部分,相同Ot條件下(Ot較小的情況下),基本上Nt值越大,其AP值越小,這主要是因為有越多的重復框沒有過濾掉。
技術分享圖片

Soft NMS