目標檢測 | 經典算法 Cascade R-CNN: Delving into High Quality Object Detection


作者從detector的overfitting at training/quality mismatch at inference問題入手,提出了基於multi-stage的Cascade R-CNN,該網絡結構清晰,效果顯著,並且能簡單移植到其它detector中,帶來2-4%的性能提升

論文: Cascade R-CNN: Delving into High Quality Object Detection

Introduction


  目前的目標檢測算法大都使用$u=0.5$的IoU閾值來定義正負樣本,這是相當寬松的閾值,導致detector產生許多干擾的bndbox。如圖(a),許多人們認為大概率是負樣本的框其實IoU都大於0.5。因此,論文希望研究出學習能盡量少包含接近負樣本的bndbox的detector,如圖(b)

  論文對不同IoU閾值的regressor和detector進行了實驗。從圖c可以看出,不同IoU閾值的detector對不同水平的bndbox的優化程度不同,bndbox IoU與detecor的訓練閾值越接近,box regress提升越高。而在圖d中,detector(u=0.5)在低IoU水平下比detector(u=0.6)表現優異,而在高IoU水平下則反之,而當u=0.7時,由於訓練正樣本的不足以及推理時輸入的樣本IoU較低,detector(u=0.7)的整體表現都降低了

  綜上可以得出以下結論:

  • 訓練后的detector幾乎總能提升Input bndbox的質量
  • 單IoU detector對接近其訓練IoU閾值的bndbox是最優的
  • 單純地增加訓練時的IoU的閾值並不能直接提高detector的質量

  因此,論文提出了Cascade R-CNN來解決上面的問題。Cascade R-CNN是一個順序的多階段extension,利用前一個階段的輸出進行下一階段的訓練,階段越往后使用更高的IoU閾值,產生更高質量的bndbox。Cascade R-CNN簡單而有效,能直接添加到其它R-CNN型detector中,帶來巨大的性能提升(2-4%)

Object Detection


Faster R-CNN

  目前經典的two-stage架構如圖3(a)。第一階段是一個提框的子網H0,用於生成初步的bndbox。第二階段為特定區域處理的檢測子網H1,給定bndbox最終的分類分數C和bndbox坐標B

Iterative BBox at inference

  有的研究者認為單次的box regress是不足以產生准確的位置信息的,因此需要進行多次迭代來精調bndbox,這就是iterative bounding box regression:

  實現如圖3(b)所示,所有的head都是一樣的,但是這個方法忽略了兩個問題:

  • 如圖1所示,detector(u=0.5)對於所有的高質量的bndbox是次優解,甚至降低了IoU大於0.85的bndbox的准確度

  • 圖2為bndbox的$(x, y, w, h)$與GT間的差值分布,從圖中可以看出,不同階段的bndbox分布是顯著不同的。若regressor對於初始化的分布是最優的,那對於在后面的階段肯定是次優的

  因此,iterative BBox需要大量的手工操作,如box voting,而其結果不是穩定提升的。通常來說,對bndbox進行多於兩次相同的regressor是幾乎沒有收益的

Integral Loss

  由於bndbox經常包含目標和一定的背景,因此很難去判定當前bndbox是否正樣本

  常用的方法是判斷其與GT的IoU,當IoU大於閾值時,則賦予其對應GT的label。但是閾值的設定是十分苦難的,當閾值過高時,正樣本包含很少的背景,但是會導致難以生成足夠多的正樣本進行訓練,反之,則會導致detecor容易產生close false positives。因此,很難找到一個單獨的classifier能一致地對所有IoU的bndbox是最優的

  一種嘗試的方法是使用一個分類器集合,如圖3(c)所示,優化針對各種質量的bndbox的loss。$U={0.5, 0.55, ..., 0.75}$是根據COCO設定IoU閾值合集,按照定義,分類器在推理時再進行組裝

  這種解決方法存在兩個問題:

  • 不同的classifer的正樣本數量是不一樣的,如圖4所示,正樣本的數量隨着u的提高顯著下降,這意味着高質量的classifiers容易過擬合
  • 在推理時,高質量的classifers需要處理相對低質量的bndbox,而他們對這些bndbox並沒有優化

  因此,Integral loss在很多IoU水平難以表現出高的准確率。相對於原始的two-stage架構,Integral loss的架構收益相對較小

Cascade R-CNN

Cascaded Bounding Box Regression

  由於很難訓練一個能應付所有IoU水平的regressor,可以把回歸任務分解成一個級聯的regression問題,架構如圖3(d)所示

  T是級聯階段數,每個regressor$f_t$對於當前的級聯輸入都是最優的,隨着階段的深入,bndbox在不斷的提升。
cascade regression與iterative BBox有以下區別:

  • iteravtive BBox是后處理的方法,而cascaded regression是能夠改變bndbox分布的重采樣過程
  • cascaded regression在訓練和推理時是一致的,不存在區別
  • cascaded regression的多個regressor對於對應階段的輸入分布是最優的,而iterative BBox僅對初始分布是最優的

  Bndbox在回歸時,為了對scale和location有不變性,將對坐標的學習轉移到對坐標差值的學習。由於坐標插值通常較小,因此將其進行歸一化$\delta'=(\delta_x-\mu_x)/\sigma$,以權衡定位與分類的loss。Cascade R-CNN在每一個stage結束后,都會馬上進行計算這些均值/方差

Cascaded Detection

  產生Cascade R-CNN的啟發點主要有兩個:

  • 如圖4的1st stage圖所示,初始的bndbox分布大多落在低質量的區域,這對於高質量classifiers來說是無效的學習。
  • 在圖1(c)實驗中可以看到,所有的曲線都高於對角線,即regressor都傾向於能夠提升bndbox的IoU。

  因此,以集合$(x_i, b_i)$作為開始,通過級聯regress來產生高IoU的集合$(x'_i, b'_i)$。如圖4所示,這種方法能在提升樣本整體IoU水平的同時,使得樣本的總數大致維持在一個水平,這會帶來兩個好處:

  • 不會存在某個閾值的regressor過擬合
  • 高階段的detector對於高IoU閾值是最優的

  從圖2可以看出,隨着階段的深入,一些離群點會被過濾,這保證了特定閾值的detector的訓練

  在每一個階段t,都獨立一個對閾值$u_t(u_t > u_{t-1})$最優的classifier $h_t$和regressor$f_t$,$bt=f_{t-1}(x{t-1}, b{t-1})$是上一階段的輸出,$\lambda=1$是權重因子,$[yt\ge1]$是指示函數,表示背景的$L_{loc}$不加入計算。與integral loss不同,公式8保證了順序地訓練detectors來逐步提高bndbox質量。在推理時,bndbox的質量是順序提高的,高質量的detectors只需要面對高質量的bndbox。

Experiment


Implementation Details

  部分實驗設置如下:

  • 所有regressor都帶分類,每一個cascade stage為相同的架構
  • 共4個stage,一個為RPN,其余為$U={0.5, 0.6, 0.7}$的檢測器。第一階段檢測器為正常的RPN,其余階段使用上一階段的輸出作為輸入
  • 使用垂直翻轉的數據增強手段以及單一圖片輸入尺寸

Quality Mismatch

  圖5展示了3個獨立訓練的detector的AP曲線,detector的IoU閾值分別為$U={0.5, 0.6, 0.7}$,detector(u=0.5)在低IoU水平表現最好,detector(u=0.6)在高IoU水平表現最好,而detector(u=0.7)則整體表現較差。為了進一步解釋圖(a)的結果,論文添加GT到proposal集合得到了圖(b)的結果,所有的detector的AP都提升,而detector(u=0.7)提升最大,且幾乎全局最優。因此,可以得出以下兩個結論:

  • $u=0.5$不是一個好的選擇,僅限於低質量bndbox
  • 高質量的detector高質量的bndbox輸入

  此外,圖5(a)對比了以Cascade R-CNN的stage輸出作為輸入時detector的表現。當提升了輸入的bndbox質量后,detector得到了明顯的提升

  圖6對比了各cascade detector在各stage上的表現。提高輸入的質量后,各detector都得到了收益,如detector(u=0.7)從原來的AP=0.256提升為AP=0.383。此外,將圖6和圖5(a)對比可以得出,cascade聯合訓練的detector比單獨訓練的detector精度要高

Comparison with Iterative BBox and Integral Loss

  論文對比Cascade R-CNN與iterative BBox和integral loss detector,Iterative BBox連續使用3次FPN+進行實現,而integral loss detector則使用$U={0.5, 0.6, 0.7}$的classification head

Localization: 如圖7(a),單檢測器的降低了高IoU輸入的精度,當regressor對bndbox回歸次數增加時,下降越明顯。相反,cascade regressor則表現越來越好,幾乎全面領先iterative BBox

Integral Loss: 圖7(b)展示了integral loss各classifier以及集成后的准確率(使用同一個regressor),classifier(u=0.6)表現最好,而集成的classifier則沒有任何收益

  Table1展示了三種優化方法與Baseline的准確率具體數值,在低IoU水平時,Cascade R-CNN的收益較少,而在高水平時收益十分顯著

Ablation Experiments

Stage-wise Comparison: Table2 總結了stage性能表現。由於multi-stage multi-task訓練,1st stage性能已經有很好地提升,2rd stage和3rd stage則都維持在一個相對高的水平,集成的classifier性能最好

IoU Thresholds: Cascade R-CNN的所有head均使用u=0.5閾值進行初始化,在后面的訓練中才使用對應的bndbox進行訓練。從Table3的第一行看出,cascade能夠提升baseline的性能,這表明使用不同的stage優化不同的輸入分布的重要性。第二行表明,隨着IoU閾值的提升,detector能產生更多高質量的bndbox,減少close false positive的產生

Regression Statistics: 漸進式地更新bndbox坐標差值的統計信息,從Table3可以看出,網絡的訓練對這些信息的統計不是十分敏感

Number of Stages: Table4總結了stage數量對性能的影響。two-stage能顯著地提升baseline的效果,而加入4th stage(u=0.75)后雖然高IoU水平的性能提升了,但卻令整體性能有所下降。因此,three-stage是最好的折中方案

Comparison with the state-of-the-art

  Table5對比了Cascade R-CNN與主流的one-stage detector和two-stage detector的性能,從表格可以看出,Cascade R-CNN的性能提升是十分明顯的,各方面都優秀

Generalization Capacity

Detection Performance: 在所有的baseline detector上,使用Cascade R-CNN均有2~4%的提升,這表明Cascade R-CNN能廣泛適用於多種檢測器架構中

Parameter and Timing: Cascade R-CNN的參數量增加跟stage數量有關,與baseline的detector head呈線性關系。此外,由於detector head的計算耗時相對於RPN是非常小的,Cascade R-CNN的額外計算開銷比較小

Conclusion


  論文提出一個高質量的多階段目標檢測架構Cascade R-CNN,這個架構解決了訓練時的過擬合問題以及推理時的IoU mismatch問題。Cascade R-CNN適用於各種detector baseline,帶來可觀的性能提升

寫作不易,未經允許不得轉載~
更多內容請關注個人微信公眾號【曉飛的算法工程筆記】

work-life balance.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM