EfficientDet:可扩展的高效目标检测
文章目錄
- 摘要
- 1、介紹
- 2、相關工作
- 3、BiFPN
- 3.1、提出問題
- 3.2、多尺度連接
- 3.3、加權特征融合
- 4、EfficientDet
- 4.1、EfficientDet架構
- 4.2、復合縮放
- 5、實驗部分
- 5.1、用于對象檢測的EfficientDet
- 5.2、語義分割
- 6、消融研究(Ablation Study)
- 6.1、Disentangling Backbone and BiFPN(解開主干和BiFPN)
- 6.2、BiFPN跨尺度連接
- 6.3、SoftMax與快速歸一化融合
- 6.4、復合縮放
摘要
本文主要研究如何提高模型的效率,并提出了EfficientDet新的目標檢測器。
首先,我們提出了一種 weighted bi-directional feature pyramid network (加權雙向特征金字塔網絡——BiFPN),它可以方便、快速地進行多尺度特征融合;
其次,我們提出了一種 compound scaling method(復合縮放方法),可以同時對所有主干、特征網絡和盒/類預測網絡的分辨率、深度和寬度進行統一縮放。
其中EfficientDet-D7采用單模和單標度,在COCO test-dev上達到了55.1 AP,具有77M參數和410B FLOPs(FLOPs表示乘加次數),比以前的探測器小4倍-9倍,使用的觸發器少13倍-42倍。
代碼請點擊鏈接
1、介紹
上面兩張圖展示的是模型計算量和COCO上的準確率關系圖
我們確定了兩個主要挑戰:
我們將提出的兩個方法與EfficientNets網絡相結合,命名為EfficientDet。它可以以更少的參數和FLOPs(觸發器)來獲得更好的精度。
2、相關工作
- One-Stage Detectors——單階段檢測器
- Multi-Scale Feature Representations——多尺度特征表示
- Model Scaling——模型縮放
3、BiFPN
3.1、提出問題
多尺度特征融合旨在聚合不同分辨率的特征。
有多尺度特征列表:P?in=(Pl1in,Pl2in,...)\vec{P}^{in}=(P^{in}_{l_1},P^{in}_{l_2},...)Pin=(Pl1?in?,Pl2?in?,...),其中 PliinP^{in}_{l_i}Pli?in? 表示第 lil_ili? 層的特征。
我們的目標是能夠找到一個可以有效的聚合不同特征的函數fff,并能夠輸出一個新的特征列表:P?out=f(P?in)\vec{P}^{out}=f(\vec P^{in})Pout=f(Pin)。
上面Figure2中的(a)是傳統的自上向下的FPN網絡。它需要第三到七層的輸入特征P?in=(P3in,...,P7in)\vec{P}^{in}=(P^{in}_{3},...,P^{in}_{7})Pin=(P3in?,...,P7in?),其中PiinP^{in}_{i}Piin?代表分辨率為輸入圖像分辨率的1/2i1/2^i1/2i的特征層。舉個例子,如果輸入分辨率是640?640640*640640?640,那么P3inP^{in}_{3}P3in?就是分辨率為80?8080*8080?80(640/23640/2^3640/23)的特征層3,那么P7inP^{in}_{7}P7in?就是分辨率為5?55*55?5的特征層7,常規FPN以自頂向下的方式聚合多尺度特征:
P7out=Conv(P7in)P6out=Conv(P6in+Resize(P7out))...P3out=Conv(P3in+Resize(P4out))P^{out}_7=Conv(P^{in}_7) \\ P^{out}_6=Conv(P^{in}_6+Resize(P^{out}_7)) \\ ... \\ P^{out}_3=Conv(P^{in}_3+Resize(P^{out}_4)) P7out?=Conv(P7in?)P6out?=Conv(P6in?+Resize(P7out?))...P3out?=Conv(P3in?+Resize(P4out?))
其中ResizeResizeResize通常是用于分辨率匹配的上采樣或下采樣操作,而Conv通常是用于特征處理的卷積操作。
3.2、多尺度連接
傳統的自上而下的FPN限制在單向信息流。為了解決這個問題,PANet添加了一個自下而上的路徑聚合網絡,如上圖(b)。
NAS-FPN 使用神經架構搜索來搜索更好的跨尺度特征網絡拓撲,但是在搜索過程中需要數千個GPU小時,并且發現的網絡不規則且難以解釋或修改,如上圖(c)所示。
上圖顯示出,PANet的精度比FPN和NAS-FPN更好,但是需要更多的參數和計算。
針對此問題,對跨尺度連接提出了幾點優化方案:
3.3、加權特征融合
當融合具有不同分辨率的特征時,一種常見的方法是先將它們的大小調整為相同的分辨率,然后再對其求和。以前的方法對輸入特征同等對待,沒有設置每個特征的權重,由于不同的輸入特性具有不同的分辨率,它們對輸出特性的貢獻通常是不相等的。現在我們根據每個輸入特征的貢獻大小設置不同的權重,并讓網絡學習自動調整權重?;诖怂枷?#xff0c;我們考慮了三種加權融合方法:
最終的BiFPN集成了雙向跨尺度連接和快速歸一化融合。
在這里我們描述上圖(d)所示的BiFPN在6級的兩個融合特征:
P6td=Conv(w1?P6in+w2?Resize(P7in)w1+w2+?)P6out=Conv(w1′?P6in+w2′?P6td+w3′?Resize(P5out)w1′+w2′+w3′+?)P^{td}_6=Conv(\cfrac{w_1 \cdot P^{in}_6+w_2 \cdot Resize(P^{in}_7)}{w_1+w_2+\epsilon})\\P^{out}_6=Conv(\cfrac{w'_1 \cdot P^{in}_6+w'_2 \cdot P^{td}_6 + w'_3 \cdot Resize(P^{out}_5)}{w'_1+w'_2+w'_3+\epsilon}) P6td?=Conv(w1?+w2?+?w1??P6in?+w2??Resize(P7in?)?)P6out?=Conv(w1′?+w2′?+w3′?+?w1′??P6in?+w2′??P6td?+w3′??Resize(P5out?)?)
其中P6tdP^{td}_6P6td?是自上而下路徑上第6層的中間特征,P6outP^{out} _6P6out?是自下而上路徑上第6層的輸出特征。所有其他特征均以類似方式構造。我們使用depthwise separable convolution(深度可分離卷積) 進行特征融合,并在每次卷積后添加批量歸一化和激活。
4、EfficientDet
4.1、EfficientDet架構
上圖是EfficientDet的總體架構。
- 采用ImageNet預訓練的EfficientNets作為骨干網絡。
- BiFPN用作特征網絡。它從骨干網中獲取3-7層特征{P3,P4,P5,P6,P7P3,P4,P5,P6,P7P3,P4,P5,P6,P7},并反復應用自上而下和自下而上的雙向特征融合。這些融合的特征被送到類和盒網絡,分別生成對象類和邊界盒預測。類和盒網絡權重在所有級別的功能之間共享。
4.2、復合縮放
我們提出了一種新的復合尺度目標檢測方法,該方法使用一個簡單的復合系數?\phi? 來聯合放大主干、BiFPN、類/盒網絡和分辨率的所有維度。
- 骨干網——我們重用了EfficientNet-B0到B6 相同的寬度/深度縮放系數,因此我們可以輕松地重用ImageNet預訓練的檢查點。
- BiFPN 網絡——我們線性增加BiFPN深度 DbifpnDbifpnDbifpn(#layers),因為深度需要四舍五入為小整數。對于BiFPN的寬度 WbifpnWbifpnWbifpn(#channels),指數級增長的BiFPN的寬度 WbifpnWbifpnWbifpn(#channels)和Efficientnet: Rethinking
model scaling for convolutional neural networks很類似。具體來說,我們對值列表{1.2、1.25、1.3、1.35、1.4、1.45}執行網格搜索,并選擇最佳值1.35作為BiFPN寬度縮放比例。BiFPN的寬度和深度通過以下公式縮放:
Wbifpn=64?(1.35?),Dbifpn=3+?(1)W_{bifpn}=64 \cdot (1.35^{\phi}),D_{bifpn}=3+\phi \qquad(1) Wbifpn?=64?(1.35?),Dbifpn?=3+?(1) - 盒/類預測網絡——寬度設置為與BiFPN相同(即Wpred=WbifpnW_{pred} = W_{bifpn}Wpred?=Wbifpn?);深度(#layers)使用等式線性增加Dbox=Dclass=3+??/3?(2)D_{box}= D_{class}= 3 + \lfloor \phi /3 \rfloor \qquad(2)Dbox?=Dclass?=3+??/3?(2)。
- 輸入圖像分辨率——由于BiFPN使用了3-7層的特征,輸入分辨率必須可被27=1282^7 = 12827=128整除,因此,用方程式線性增加分辨率:Rinput=512+??128(3)R_{input}=512+\phi \cdot128 \qquad(3)Rinput?=512+??128(3)
如上表所示,按照具有不同?\phi?的方程(1),(2),(3),我們開發了EfficientDet-D0(?\phi?=0)至D7(?\phi?=7),其中D7和D7x具有相同的BiFPN和頭部,但D7使用更高的分辨率,而D7x使用更大的骨干網和多了一個特征層(從P3到P8)。
5、實驗部分
5.1、用于對象檢測的EfficientDet
- 在COCO 2017檢測數據集使用118K訓練圖像評估EfficientDet。
- 使用動量值為0.9(momentum 0.9)和權重衰減為4e-5(weight decay 4e-5)的SGD優化器訓練每個模型。
- 在第一個訓練時期,學習率從0線性增加到0.16,然后使用余弦衰減規則進行退火。
- 在每次卷積之后添加同步批量范數(Synchronized batch norm),其中批量范數衰減為0.99(batch norm decay 0.99),epsilon 為1e-3。
- 使用SiLU(Swish-1)激活函數;衰退率為0.9998的指數移動平均數(exponential moving average with
decay 0.9998)。 - 采用了常用的焦損(focal loss):α=0.25,γ=1.5\alpha=0.25,\gamma=1.5α=0.25,γ=1.5,寬高比為{1/2,1,2}
- 在訓練過程中,我們應用水平翻轉(horizontal flipping)和縮放抖動(scale jittering)[0.1,2.0],在裁剪之前將圖像隨機調整為原始大小的0.1x到2.0x。
- 采用soft-NMS進行評估。
- 對于D0-D6,每個模型在32個TPUv3核上訓練300個時期,總批次大小為128個,但為了突破極限,我們在128個TPUv3核上訓練600個時期的D7/D7x。
在沒有測試時間增加的單一模型、單尺度設置下,上表比較了EfficientDet與其他對象檢測器。
我們報告了test-dev(20K測試圖像,沒有ground-truth)和VAL(5K驗證圖像)的準確性。
上圖說明了模型大小和GPU/CPU延遲的比較。為了進行公平比較,這些數字僅包括在同一臺機器上使用相同設置測量的結果。
5.2、語義分割
6、消融研究(Ablation Study)
6.1、Disentangling Backbone and BiFPN(解開主干和BiFPN)
從帶有ResNet-50的主干和自上而下的FPN的RetinaNet探測器[24]開始,我們首先用EfficientNetB3代替主干,它以稍少的參數和觸發器將準確度提高了約3AP。通過用我們提出的BiFPN進一步取代FPN,我們可以用更少的參數和觸發器獲得額外的4AP增益。
6.2、BiFPN跨尺度連接
表5顯示了圖2中列出的具有不同跨范圍連接的功能網絡的準確性和模型復雜性。注意,原始的FPN和PANET只有一個自上而下或自下而上的流,我們在這里多次重復它們,并用與BiFPN相同的縱向可分離的對流替換所有對流。
從上可以看出,傳統的自上而下FPN受單向信息流的限制,精度最低。復FPN+PANET實現的精度略高于NASFPN,但它也需要更多的參數和觸發器。我們的BiFPN實現了與重復FPN+PANET類似的精度,但使用的參數和FLOP要少得多。通過額外的加權特征融合,我們的BiFPN以更少的參數和觸發器進一步獲得了最好的準確率。
6.3、SoftMax與快速歸一化融合
上表比較了三種不同型號探測器中的Softmax和快速歸一化融合方法。結果表明,我們的快速歸一化融合方法達到了與基于Softmax的融合方法相似的精度,但在GPU上的運行速度要快1.26倍-1.31倍。
為了進一步了解基于Softmax的快速歸一化融合的行為,上圖說明了從EfficientDet-D3中的BiFPN層中隨機選擇的三個特征融合節點的學習權重。注意:歸一化權重(基于softmax融合的ewi/∑jewie^{w_i}/ \sum_je^{w_i}ewi?/∑j?ewi?以及用于快速歸一化融合的wi/(?+∑jwj)w_i/(\epsilon+\sum_jw_j)wi?/(?+∑j?wj?))的總和總是為1。歸一化權值在訓練過程中變化很快,這表明不同的特征對特征融合的貢獻是不相等的。盡管變化很快,但對于所有三個節點,我們的快速歸一化融合方法總是表現出與基于Softmax的融合非常相似的學習行為。
6.4、復合縮放
總結
以上是生活随笔為你收集整理的EfficientDet:可扩展的高效目标检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018hdu个人排位赛:涮羊肉
- 下一篇: unity3D游戏-打飞碟游戏改进版