NMS:Non-Maximum Suppression(非極大值抑制)

假設從一個圖像中得到了2000個region proposals,通過在RCNN和SPP-net之後我們會得到2000*4096的一個特徵矩陣,然後通過N個SVM來判斷每一個region屬於N個類的scores。其中,SVM的權重矩陣大小為4096*N,最後得到2000*N的一個score矩陣(其中,N為類別的數量)。

 Non-Maximum Suppression就是需要根據score矩陣和region的座標信息,從中找到置信度比較高的bounding box。

首先,NMS計算出每一個bounding box的面積,然後根據score進行排序,把score最大的bounding box作為隊列中。接下來,計算其餘bounding box與當前最大score與box的IoU,去除IoU大於設定的閾值的bounding box。然後重複上面的過程,直至候選bounding box為空。最終,檢測了bounding box的過程中有兩個閾值,一個就是IoU,另一個是在過程之後,從候選的bounding box中剔除score小於閾值的bounding box。需要注意的是:Non-Maximum Suppression一次處理一個類別,如果有N個類別,Non-Maximum Suppression就需要執行N次。

RPN網絡得到的大約2萬個anchor不是都直接給Fast-RCNN,因為有很多重疊的框。文章通過非極大值抑制的方法,設定IoU為0.7的閾值,即僅保留覆蓋率不超過0.7的局部最大分數的box(粗篩)。最後留下大約2000個anchor,然後再取前N個box(比如300個)給Fast-RCNN。Fast-RCNN將輸出300個判定類別及其box,對類別分數採用閾值為0.3的非極大值抑制(精篩),並僅取分數大於detect_th的目標結果(比如,只取分數60分以上的結果)。