論文:Scale-Aware Trident Networks for Object Detection
發表時間:2019
發表作者:(University of Chinese Academy of Sciences)Yuntao Chen, (TuSimple)Naiyan Wang
發表刊物/會議:ICCV
論文鏈接:論文鏈接
論文代碼:代碼鏈接
TridentNet
這篇文章主要要解決的問題便是目標檢測中最為棘手的scale variation問題。使用了非常簡單干凈的辦法在標准的COCO benchmark上,使用ResNet101單模型可以得到MAP 48.4的結果,遠遠超越了目前公開的單模型最優結果。
多尺度問題
先簡單回顧一下現有處理多尺度問題的兩大類方法。第一大類,也是從非Deep時代,乃至CV初期就被就被廣泛使用的方法叫做image pyramid。在image pyramid中,我們直接對圖像進行不同尺度的縮放,然后將這些圖像直接輸入到detector中去進行檢測。雖然這樣的方法十分簡單,但其效果仍然是最佳,也后續啟發了SNIP這一系列的工作。單論性能而言,multi-scale training/testing仍然是一個不可缺少的組件。然而其缺點也是很明顯的,測試時間大幅度提高,對於實際使用並不友好。另外一大類方法,也是Deep方法所獨有的,也就是feature pyramid。最具代表性的工作便是經典的FPN了。這一類方法的思想是直接在feature層面上來近似image pyramid。非Deep時代在檢測中便有經典的channel feature這樣的方法,這個想法在CNN中其實更加直接,因為本身CNN的feature便是分層次的。從開始的MS-CNN直接在不同downsample層上檢測大小不同的物體,再到后續TDM和FPN加入了新的top down分支補充底層的語義信息不足,都是延續類似的想法。然而實際上,這樣的近似雖然有效,但是仍然性能和image pyramid有較大差距。
總結如下:
- 圖像金字塔,傳統的檢測算法
- 特征金字塔,FPN
- 本文的三叉戟網絡,分為3個分支,所有的參數都一樣,唯一的區別就是膨脹卷積的膨脹率不一樣。
膨脹卷積Dilated convolution(空洞卷積Atrous convolution)
假設膨脹率為ds,使用的卷積核大小為\(3*3\),則使用膨脹卷積的感受野大小為\(3+2*2*(ds-1)\),
例如,假設
1、ds=1,表示不進行膨脹,感受野大小為\(3*3\)
2、ds=2,表示進行膨脹,感受野大小為\(7*7\)
3、ds=4,表示進行膨脹,感受野大小為\(15*15\)
實驗驗證,隨着感受野的增大,小目標的檢測准確性也開始下降,但是大目標的檢測准確性開始上升。
網絡結構
TridentNet 模塊主要包括3個完全一樣的分支,唯一不同的只是膨脹卷積的膨脹率。從上到下,膨脹率分別為1,2,3,分別檢測小,中,大的目標。三個分支共享權值。
每個分支的詳細結構如下,
在訓練過程中,對每一個分支都進行優化。因此,需要對目標的ground truth進行大小測試,
假設,w,h為ground truth的寬,高。Li,ui表示實驗中定義的最小的面積和最大的面積。在coco實驗中分別為\(32*32\)和\(96*96\)。
基於此公式實現小的目標走第一個分支,中等目標走第二個分支,大的目標走第三個分支。而不是所有目標都走所有分支。這樣就可以進行有針對性的訓練。
在測試階段,只使用中間的那個分支進行推斷,然后對結果進行NMS,輸出最終的結果。
當然這樣做會有一些精度的損失,但是好處就是不會引入額外的參數,不會增加額外的計算量。
實驗結果
Multi-branch ,Weight-sharing, Scale-aware有效性證明:
TridentNet 每個分支中unit個數的實驗:
TridentNet 各分支檢測結果的評估:
TridentNet 中間分支在coco測試的結果:
coco數據集結果:
總結:
TridentNet 是一種尺度敏感的檢測框架,並且訓練過程也得進行尺度敏感的訓練。檢測准確性很高,並且不會有額外的參數,額外的計算量。是對ASPP結構的一種升華。
參考:
TridentNet