1. 程式人生 > >目標檢測演算法中檢測框合併策略技術綜述

目標檢測演算法中檢測框合併策略技術綜述

物體檢測(Object Detection)的任務是找出影象或視訊中的感興趣目標,同時實現輸出檢測目標的位置和類別,是機器視覺領域的核心問題之一,學術界已有將近二十年的研究歷史。隨著深度學習技術的火熱發展,目標檢測演算法也從基於手工特徵的傳統演算法轉向了基於深度神經網路的檢測技術。從最初 2013 年提出的 R-CNN、OverFeat,到後面的 Fast/Faster R-CNN、SSD、YOLO 系列,以及Mask R-CNN、RefineDet、RFBNet等(圖 1,完整論文列表參見[1])。短短不到五年時間,基於深度學習的目標檢測技術,在網路結構上,從 two stage 到 one stage,從 bottom-up only 到 Top-Down,從 single scale network 到 feature pyramid network,從面向 PC 端到面向移動端,都湧現出許多好的演算法技術,這些演算法在開放目標檢測資料集上的檢測效果和效能都很出色。

圖 1 目標檢測領域重要論文

物體檢測過程中有很多不確定因素,如影象中物體數量不確定,物體有不同的外觀、形狀、姿態,加之物體成像時會有光照、遮擋等因素的干擾,導致檢測演算法有一定的難度。進入深度學習時代以來,物體檢測發展主要集中在兩個方向:two stage演算法如R-CNN系列和one stage演算法如YOLO、SSD等。兩者的主要區別在於two stage演算法需要先生成proposal(一個有可能包含待檢物體的預選框),然後進行細粒度的物體檢測。而one stage演算法會直接在網路中提取特徵來預測物體分類和位置。

two stage演算法以及部分one stage演算法(SSD系列),都需要對Region Proposal去重。比如經典的Faster RCNN演算法會生產2000的Region Proposal,如果對所有的檢測檢測框進行分類和處理,會造成大量無效計算。使用某些演算法對檢測框去重,是目標檢測領域的一個重要方向。

本文主要介紹在目標檢測中使用的檢測框去重,包括NMS,Soft-NMS,Softer-NMS,以及Relation Netwrok,ConvNMS,NMS Network,Yes-Net等,詳細講述NMS演算法的演變和最新進展。

 

1、傳統NMS演算法

1.1 NMS介紹

在目標檢測中,常會利用非極大值抑制演算法(NMS,non maximum suppression)對生成的大量候選框進行後處理,去除冗餘的候選框,得到最佳檢測框,以加快目標檢測的效率。其本質思想是其思想是搜素區域性最大值,抑制非極大值。非極大值抑制,在計算機視覺任務中得到了廣泛的應用,例如邊緣檢測、人臉檢測、目標檢測(DPM,YOLO,SSD,Faster R-CNN)等。即如圖 2所示實現效果,消除多餘的候選框,找到最佳的bbox。

圖 2 NMS消除冗餘候選框

以圖 2為例,每個選出來的Bounding Box檢測框(既BBox)用(x,y,h,w, confidence score,Pdog,Pcat)表示,confidence score表示background和foreground的置信度得分,取值範圍[0,1]。Pdog,Pcat分佈代表類別是狗和貓的概率。如果是100類的目標檢測模型,BBox輸出向量為5+100=105。

值得注意的是,RCNN有一句話的NMS介紹,Fast-RCNN無任何NMS的解釋,Faster有大量篇幅對NMS的效果分析。

 

1.2 NMS演算法過程

NMS主要就是通過迭代的形式,不斷的以最大得分的框去與其他框做IoU操作,並過濾那些IoU較大(即交集較大)的框。如圖 3圖 4所示NMS的計算過程。

1、根據候選框的類別分類概率做排序,假如有4個 BBox ,其置信度A>B>C>D。

2、先標記最大概率矩形框A是演算法要保留的BBox;

3、從最大概率矩形框A開始,分別判斷ABC與D的重疊度IOU(兩框的交併比)是否大於某個設定的閾值(0.5),假設D與A的重疊度超過閾值,那麼就捨棄D;

4、從剩下的矩形框BC中,選擇概率最大的B,標記為保留,然後判讀C與B的重疊度,扔掉重疊度超過設定閾值的矩形框;

5、一直重複進行,標記完所有要保留下來的矩形框。

圖 3貓和狗兩類目標檢測

圖 4 NMS演算法過程

如果是two stage演算法,通常在選出BBox有BBox位置(x,y,h,w)和confidence score,沒有類別的概率。因為程式是生成BBox,再將選擇的BBox的feature map做rescale (一般用ROI pooling),然後再用分類器分類。NMS一般只能在CPU計算,這也是two stage相對耗時的原因。

但如果是one stage作法,BBox有位置資訊(x,y,h,w)、confidence score,以及類別概率,相對於two stage少了後面的rescale和分類程式,所以計算量相對少。

 

1.3 優缺點分析

NMS缺點:

1、NMS演算法中的最大問題就是它將相鄰檢測框的分數均強制歸零(既將重疊部分大於重疊閾值Nt的檢測框移除)。在這種情況下,如果一個真實物體在重疊區域出現,則將導致對該物體的檢測失敗並降低了演算法的平均檢測率(average precision, AP)。

2、NMS的閾值也不太容易確定,設定過小會出現誤刪,設定過高又容易增大誤檢。

3、NMS一般只能使用CPU計算,無法使用GPU計算。

 

2、Soft-NMS

這篇ICCV2017的文章,是NMS演算法的改進,論文題目很霸氣:一行程式碼改進目標檢測,既《Improving Object Detection With One Line of Code》[2]由UMIACS大學提出。

2.1 演算法過程

NMS演算法是略顯粗暴,因為NMS直接將刪除所有IoU大於閾值的框。soft-NMS吸取了NMS的教訓,在演算法執行過程中不是簡單的對IoU大於閾值的檢測框刪除,而是降低得分。演算法流程同NMS相同,但是對原置信度得分使用函式運算,目標是降低置信度得分,其虛擬碼如圖 5所示:

 

圖 5 soft虛擬碼

b_{i} 為待處理BBox框,B為待處理BBox框集合,s_{i}b_{i}框更新得分,Nt是NMS的閾值,D集合用來放最終的BBox,f是置信度得分的重置函式。b_{i}和M的IOU越大,b_{i}的得分si就下降的越厲害。

經典的NMS演算法將IOU大於閾值的視窗的得分全部置為0,可表述如下:

論文置信度重置函式有兩種形式改進,一種是線性加權的:

一種是高斯加權的:

 

2.2 程式碼實現

論文作者提供 R-FCN 和Faster-RCNN整合soft-NMS的程式碼實現https://github.com/bharatsingh430/soft-nms

其實最重要的改變在soft-nms/lib/nms/cpu_nms.pyx 81行到92行:

 

圖 6 soft-NMS主要程式碼實現

可以明顯看到soft-NMS最重要是更新weight變數的值。採用線性加權時,更新為1-ov,高斯加權時引入sigma引數,而原始NMS演算法時,直接取0或1。

 

2.3 效能分析

 

圖 7 soft虛擬碼

論文中對比實驗中資料集採用VOC 2007,COCO,基礎模型包括R-FCN,Faster-RCNN可以看到效能的變化。但是個人覺得在圖 7(原論文中圖4)顯示δ全範圍取值均對AP有明顯提升,證明soft-NMS不是依靠猜測某些超引數才有效。

 

2.4 優缺點分析

soft-NMS優點:

1、Soft-NMS可以很方便地引入到object detection演算法中,不需要重新訓練原有的模型、程式碼容易實現,不增加計算量(計算量相比整個object detection演算法可忽略)。並且很容易整合到目前所有使用NMS的目標檢測演算法。

2、soft-NMS在訓練中採用傳統的NMS方法,僅在推斷程式碼中實現soft-NMS。作者應該做過對比試驗,在訓練過程中採用soft-NMS沒有顯著提高。

3、NMS是Soft-NMS特殊形式,當得分重置函式採用二值化函式時,Soft-NMS和NMS是相同的。soft-NMS演算法是一種更加通用的非最大抑制演算法。

soft-NMS缺點:

soft-NMS也是一種貪心演算法,並不能保證找到全域性最優的檢測框分數重置。除了以上這兩種分數重置函式,我們也可以考慮開發其他包含更多引數的分數重置函式,比如Gompertz函式等。但是它們在完成分數重置的過程中增加了額外的引數。

3、Softer-NMS

卡內基梅隆大學與曠視科技的研究人員提出了一種新的非極大抑制演算法Softer-NMS[3],其方法是在Soft-NMS和NMS基礎上改進,也算是一脈相承。論文不是簡單的更改CNN結構或調整引數,引入高斯分佈,狄拉克delta分佈,KL 散度等數學知識,建議首先閱讀維基百科/百度百科對相應的概念做基本瞭解。

3.1 演算法思想

論文的motivation來自於NMS時用到的score僅僅是分類置信度得分,不能反映Bounding box的定位精準度,既分類置信度和定位置信非正相關的。NMS只能解決分類置信度和定位置信度都很高的,但是對其它三種類型:“分類置信度低-定位置信度低”,“分類置信度高-定位置信度低”,“分類置信度低-定位置信度高“都無法解決。

 

圖 8 分類置信度和定位置信度


論文首先假設Bounding box的是高斯分佈,round truth bounding box是狄拉克delta分佈(既標準方差為0的高斯分佈極限)。

KL 散度用來衡量兩個概率分佈的非對稱性度量,KL散度越接近0代表兩個概率分佈越相似。

論文提出的KL loss,即為最小化Bounding box regression loss,既Bounding box的高斯分佈和ground truth的狄拉克delta分佈的KL散度。直觀上解釋,KL Loss使得Bounding box預測呈高斯分佈,且與ground truth相近。而將包圍框預測的標準差看作置信度。

論文提出的Softer-NMS,基於soft-NMS,對預測標註方差範圍內的候選框加權平均,使得高定位置信度的bounding box具有較高的分類置信度。

 

3.2 網路結構與演算法實現

圖 9 R-CNN和Softer-NMS異同

 

如所示Softer-NMS網路結構,與R-CNN不同的是引入absolute value layer(圖中AbsVal),實現標註方差的預測。

論文假設Bounding box為高斯分佈:

ground truth符合delta分佈:

KL散度可以表示為:

推倒過程詳見原論文,重點看看作者推倒的KL loss:

是不是和L1正則化很像?是不是預測的Bounding box與ground truth的曼哈頓距離的一維表示?

圖 10 Softer-NMS實現過程

如圖 10所示Softer-NMS的實現過程,其實很簡單,預測的四個頂點座標,分別對IoU>N_{t}的預測加權平均計算,得到新的4個座標點。第i個box的x1計算公式如下(j表示所有IoU>N_{t}的box):

考慮特殊情況,可以認為是預測座標點之間求平均值。

 

3.3 程式碼分析

softerNMS的開原始碼在https://github.com/yihui-he/softerNMS

在softer-NMS/detectron/core/test.py有Softer-NMS(配置cfg.STD_NMS), Soft-NMS(配置cfg.TEST.SOFT_NMS.ENABLED)以及NMS的實現。

在softer-NMS/detectron/utils/py_cpu_nms.py檔案有Softer-NMS的具體實現,加權求平均在47-48行程式碼實現:

3.4 效能分析

圖 11對比交叉實驗

圖 12 softer-NMS效果對比

論文的實驗過程,實驗結果可以參考原論文的第四節Experiments。

作者測試了在MS-COCO資料庫上的推斷延遲,發現Softer-NMS只是輕微增加了一點時間,可以忽略不計。

如圖 12所示,論文對預測的座標4個座標點具有平均化的效果,使得各個box幾乎完全重合。

 

3.5 優缺點分析

1、個人認為論文提出的KL loss就是曼哈頓距離,但是通過KL散度去證明,讓數學不太好的同學不明覺厲。

2、論文提出的Softer-NMS,本質是對預測的檢測框加權求平均,為什麼要這樣,以及為什麼讓box高度重疊?個人認為Softer-NMS的理論沒有在應該什麼的地方深入。

4、IoU-guided NMS

IoU-Net是曠視的另外一篇論文[4],是ECCV2018接收並做口頭報告(清華和北大的學生在曠視實習時完成提交),和Softer-NMS一樣,基於 CNN 的目標檢測方法存在的分類置信度和定位置信度不匹配的問題。

 

4.1 演算法思想

傳統的NMS演算法缺失定位置信度,帶來了兩個缺點:

(1)在抑制重複檢測時,由於定位置信度的缺失,分類分數通常被用作給檢測框排名的指標。

(2)缺乏定位置信度使得被廣泛使用的邊界框迴歸方法缺少可解釋性或可預測性。

論文提出的IoU-Net,通過預測檢測框和ground truth的IOU實現:

1、IOU-guided NMS,也就是在NMS階段引入定位得分(localization confidence)作為排序指標而不是採用傳統的分類得分。

2、提出基於優化的bbox refinement替換傳統的regression-based方法,提高了迴歸部分的可解釋性。論文同時還提出了Precise ROI Pooling(PrROI Pooling),通過積分方式計算ROI特徵,使得前向計算的誤差進一步降低,同時反向傳播時基於連續輸入值計算梯度使得反向傳播連續可導,相比之下ROI Pooling和ROI Align由於採用量化或幾個點插值方式求ROI特徵,不可避免地帶來一些噪聲,而且在反向求導時只對特定輸入回傳梯度。

 

4.2 模型框架

圖 13 IoU模型架構

如圖 13所示IoU-Net 的完整架構,使用使用了 ResNet-FPN作為骨幹網路。輸入影象首先輸入一個 FPN 骨幹網路,經過RPN和PrRoI 池化層,特徵分別傳送到 IoU 預測器和分類迴歸分支(虛線框表示標註的IoU-Net實現)。

IoU-Net模型整體上是在FPN網路中嵌入了IOU預測支路,IOU預測支路的監督資訊就是ground truth和預測框的IOU值,該支路在結構設計上和FPN網路原有的迴歸和分類支路類似,另外將ROI pooling替換成PrROI pooling(precise ROI Pooling)。這裡虛線框圈起來的部分表示standalone IOU-Net,在後續驗證optimation-based bbox refinement演算法優勢時會將這部分結構應用在已有演算法的預測結果上,相當於用IoU的監督資訊對預測框做進一步的refinement。

 

4.3 IoU-guided NMS

如圖 15所示分類置信度和定位置信度,分別和IOU with ground truth視覺化分析,從(a)可以直觀看出IOU值和分類得分之間沒有明顯的正相關,但是從(b)可以看出IOU值和迴歸得分之間有明顯的正相關,除了直觀上看以外,作者還計算了兩張圖各自的皮爾遜相關係數(Pearson correlation coefficient),分別是(a):0.217,(b):0.617,這也符合直觀的視覺感受。這說明用分類得分作為依據判斷一個預測框是否準確預測對ground truth是不合理的。因此作者提出了IoU-guided NMS,也就是NMS操作以預測的IOU為依據而不是傳統的以預測框的分類得分為依據來解決這個問題。

圖 14 分類置信度、定位置信度和IOU with ground truth相關性

圖 15 IOU-guided NMS演算法流程

IOU-guided NMS 和NMS和主要的不同點在於用predicted IoU(localization confidence)來做排序。B表示檢測框集合,S是分類置信度函式(CNN實現),I是定位置信度函式,Ωnms是NMS閾值。

選擇當前定位置信度最高的box ,記為bm,和其他box計算IOU,當大於閾值Ωnms時,取這些box最大的classification confidence,記為s,那麼就<bm,s>為當前迭代的結果。簡單總結一下,就是將當前擁有最高IoU得分的bbox為聚類中心,然後去找聚類中最高的classification confidence作為聚類中心的classification confidence。

截止發稿日IoU-Net還未公佈原始碼,論文復現有一定難度。

 

4.4 PrRoI Pooling

論文提出Precise RoI Pooling(PrRoI Pooling)用於bounding box修訂。相比RoI Pooling,RoI Align,都是基於ROI座標和特徵圖進行特徵提取的過程,但是計算方式不同,如圖 16所示。

RoI Pooling:在Fast R-CNN首先提出,將特徵圖上的RoI劃分成固定數目的網格區域(如7*7),對每個網格區域的邊界點座標(算出來可能是非整數)進行量化後再對各區域網格執行池化操作。

RoI Align:在Mask RCNN首先提出,對特徵圖上RoI被劃分後的各網格區域選取固定數目的等間隔取樣點,根據取樣點鄰近特徵值利用雙線性插值計算取樣點的特徵值,然後對取樣點的特徵值進行池化操作

區別:RoI Pooling是對劃分後的各網格區域進行池化,計算區域網格邊界點座標的時候存在量化誤差;RoI Align採用對網格區域取樣的方式進行池化,且使用了插值計算取樣點的特徵值,要更精確。

 

PrROI Pooling:PrROI Pooling採用積分方式計算每個bin的值。這種計算方式和ROI Align最大的區別在於計算一個bin的值時不僅僅考慮該bin中4個插值點的均值,而是將bin中的插值看作是連續的,這樣就可以通過對該bin中所有插值點求積分得到該bin所包圍點的總和,最後除以面積就得到該bin的值,因此結果更加準確。

個人認為PrROI Pooling是為了在bbox refinement過程方便導數計算。

圖 16 Pool方式對比

 

4.5 bbox refinement

圖 17 bbox refinement演算法過程

bbox refinement是IoU-Net最難理解的部分。因為沒有論文的原始碼,這裡僅對演算法過程進行說明。在第六行可以看到bbox bj的更改是通過梯度上升的方式更新定位得分,而停止停止條件是Ω1(提前停止閾值)和Ω2(定位方差),故bbox refinement本質上是個無監督的優化演算法,不斷優化detected box的位置實現。

4.6 效能分析

IoU-Net 可與目標檢測框架一起並行地端到端優化。論文將 IoU-Net新增到網路中有助於網路學習更具判別性的特徵,這能分別將 ResNet50-FPN 和 ResNet101-FPN 的整體 AP 提升 0.6% 和 0.4%。IoU 引導式 NMS 和邊界框修正還能進一步提升表現。論文使用 ResNet101-FPN 得到了 40.6% 的 AP,相比而言基準為 38.5%,提升了 2.1%。IoU-Net的推理速度在顯著提升檢測水平基礎上實現推理速度無明顯差異。

圖 18 IoU-Net在MS-COCO最終實驗

 

4.7 優缺點分析

1、如圖 18所示,IoU-Net的AP提升收益來自於AP70- AP90,在低閾值的時候表現一般。在圖 14也可以觀察到,在低閾值,定位置信度和IoU with ground truth非正相關。

2、IoU-Net網路架構清晰明瞭,但是在bounding box優化時不是很清晰。

3、IoU-Net利用定位置信度提出了IoU-Guided NMS及基於優化的bounding box的新演算法, MS-COCO 實驗結果表明了該方法的有效性和實際應用潛力。

5、其它去重演算法

本章簡要介紹基於NMS演算法的其他創新點。

5.1 Relation Network

Relation Network(CVPR 2018 oral)是由MSRA提出。

 

當下主流的目標檢測的方法還是對各個物體進行單獨的檢測,本文基於Attention,提出了一種object relation module,通過引入不同物體之間的外觀和geometry特徵做interaction,實現對物體之間relation的建模,提高檢測效果,並且將關係模組運用在duplicate remove中,進行可學習的NMS(提出了一種特別的代替NMS的去重模組,可以避免NMS需要手動設定引數的問題),實現了第一個完全end-to-end的目標檢測系統。

圖 19 Relation Networks網路架構

這篇文章對關係的建模還有改進的空間,學出來的所謂“關係”並不清晰,(論文最後宣告:our understanding of how relation module works is preliminary and left as future work.欲知後事如何,且聽下回分解),更像是把Attention強行套入目標檢測系統中。不過可學習的nms是很大的創新。

 

5.2 ConvNMS

其主要考慮IoU閾值設定得高一些,則可能抑制得不夠充分,而將IoU閾值設定得低一些,又可能多個ture positive被merge到一起。ConvNMS[6]其設計一個卷積網路組合具有不同overlap閾值的greedyNMS結果,通過學習的方法來獲得最佳的輸出。

5.3 NMS Network

考慮目標間具有高遮擋的密集場景,其提出一個新的網路架構來執行NMS。經分析,檢測器對於每個目標僅產生一個檢測結果有兩個關鍵點是必要的,一是一個loss懲罰double detections以告訴檢測器我們對於每個目標僅需一個檢測結果,二是相鄰檢測結果的joint processing以使得檢測器具有必要的資訊來分辨一個目標是否被多次檢測。論文提出Gnet[7],基於CNN實現NMS網路。

5.4 Yes-Net

不同於NMS,其主要有兩個缺點,一是閾值必須人工設定,而在固定閾值下選擇所有目標的輸出邊框是很難的,二是當檢測器利用NMS時其假設輸出邊框都是獨立的,但這些邊框很可能是共享一些邏輯關係的。因此Yes-Net考慮利用RNN作為濾波器以得到最好的檢測邊框[8],其能提升檢測器泛化能力。

以上僅為個人閱讀論文以及專案實踐過程中的理解,總結和一些思考,觀點難免偏差,望讀者以懷疑的態度閱讀,歡迎交流指正。

 

參考文獻

[1] https://github.com/hoya012/deep_learning_object_detection

[2] Bodla N, Singh B, Chellappa R, et al. Soft-nms—improving object detection with one line of code[C]//Computer Vision (ICCV), 2017 IEEE International Conference on. IEEE, 2017: 5562-5570.

[3] He Y, Zhang X, Savvides M, et al. Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection[J]. arXiv preprint arXiv:1809.08545, 2018.

[4] Borui Jiang, Ruixuan Luo,et al. Acquisition of Localization Confidence for Accurate Object Detection. arXiv preprint arXiv: 1807.11590, 2018.

[5] Han Hu, Jiayuan Gu,Zheng Zhang,et al.Relation Networks for Object Detection. arXiv preprint arXiv: 1711.11575, 2017.

[6] Jan Hosang, Rodrigo Benenson, Bernt Schiele.A Convnet for Non-maximum Suppression. arXiv preprint arXiv: 1511.06437, 2015.

[7] J. H. Hosang, R. Benenson, and B. Schiele. Learning nonmaximum suppression. In CVPR, pages 6469–6477, 2017

[8] Liangzhuang Ma,Xin Kan,Qianjiang Xiao.An effective Detector Based on Global Information. arXiv preprint arXiv:1706.09180.2017