論文閱記 EfficientDet: Scalable and Efficient Object Detection


論文題目:EfficientDet: Scalable and Efficient Object Detection

文獻地址:https://arxiv.org/pdf/1911.09070v1.pdf

(非官方)源碼地址:

  (1) Pytorch版:https://github.com/toandaominh1997/EfficientDet.Pytorch

  (2) Keras&&TensorFlow版:https://github.com/xuannianz/EfficientDet

官方源碼地址:https://github.com/google/automl

  

  在機器視覺領域,模型效率的重要性越來越高。近日,谷歌大腦團隊系統性的選擇了目標檢測神經網絡結構的設計,並提出了能夠提升模型效率的幾項關鍵優化。首先,提出了一種加權的雙向特征金字塔(weighted bi-directional feature pyramid network, BiRPN),可以輕松,快速的實現多尺度特征融合。其次,提出了一種復合縮放(compound scaling)的方法,該方法可以對所有的主干網絡(back bone)、特征網絡、邊界框/類別預測網絡的分辨率、深度、寬度進行統一縮放。基於這些優化,提出了新型的目標檢測器EfficientDet,在廣泛的資源限制范圍內,EfficientDet始終比現有模型的效率高一個數量級。具體來說,在COCO數據集上,EfficientDet-D7僅使用了52M參數和326B FLOPS,並且獲得了最優的51.0mAP。 准確率比現有最好的檢測器+0.3% mAP。  

EfficientDet在COCO數據集上的效果

  作者為不同資源受限的設備(from 3B to 300B FLOPS)設計了一個可伸縮的模型,如下圖所示,EfficientDet-D0到EfficientDet-D6,與YOLOv3、MaskRCNN、NAS-FPN等模型的對比,在准確率和運算量上EfficientDet均是一枝獨秀。

  一般而言,one-stage的檢測器,諸如YOLO,SSD等,檢測速度快,實時性好,但檢測准確性不如Mask-RCNN,RetinaNet等two-stage的檢測器。但從下圖中可以看到,EfficientDet在FLOPS和mAP之間進行了很好突破,目前既准確又快速的檢測器

  作者還在模型尺寸(參數量)、GPU延遲、CPU延遲三個方面與現有模型在准確率上進行對比,如下圖所示,無論在哪一方面,EfficientDet(D0-D6)的結果相對於其他模型都處於在非劣解前沿的位置

目標檢測的現狀

  近年來,目標檢測在結果取得更精確的方向上取得了大量進展。然而,先進的目標檢測器的成本也變得越來越高。例如,近期提出的基於AmoebaNet的NAS-FPN檢測器包含167M的參數量和3045 B的FLOPS(是RetainNet的30倍),在這樣高昂的成本下才獲得了目前最優的准確率。大規模尺度和昂貴的計算成本都會由於延遲和資源受限等原因限制這些算法模型在現實世界中的應用,例如機器人和自動駕駛。由於現實世界資源受限的問題,考慮目標檢測模型的效率的重要性正在與日俱增。

  在此之前已經有許多致力於開發更高效的檢測器結構的研究成果,例如一些one-stage模型(SSD/ YOLOv3/YOLO9000. etc),不需要錨框(anchor-free)的檢測器(CornerNet.etc),或者壓縮現有模型(YOLO-Lite.etc)。盡管這樣的方法會實現更好的效率,但通常是以犧牲精度為代價的。並且,以往的研究大多都關注於某個特定的資源需求條件下,從移動設備到數據中心,經常會有不同的資源限制。

  那么,一個自然而然的問題是:構建一個同時具有高精度、高效率的可擴展檢測架構,以應對不同的資源約束(3B to 300B FLOPS)是否可行?

  作者基於one-stage檢測器的范例,對主干網絡、特征融合方式、邊界框/類別預測網絡等幾個方面的設計進行選擇,發現兩大挑戰:

  Challenge 1: 高效的多尺度特征融合。關於不同輸入特征的融合,之前的大多數研究都是不進行區分,簡單的匯總加和起來。然而,這些不同的輸入特征往往是不來自於不同分辨率下的,它們對於輸出特征的貢獻程度應該是不相等的

  基於此,作者提出了一種簡單而高效的加權雙向特征金字塔網絡BiFPN,該模型引入了可學習的權重,用於學習不同輸入特征的重要性,同時重復使用自下而上(bottom-up)和自上而下(top-down)的多尺度特征融合。 ---- 引入權重的思想與SENet有些像

  Challenge 2:模型縮放。為了獲得高准確率,之前的研究主要依賴於比較大的主干網絡(back bone network)和尺寸較大的輸入圖像。作者注意到,考慮到准確性和效率,擴展特征網絡邊界框/類預測網絡也很關鍵。

  基於此,作者對於目標檢測的問題提出了一種混合縮放的方法,該方法可以對網絡主干backbone 、特征網絡、邊界框/類別預測網絡的分辨率、深度、寬度進行統一縮放。

  最后,作者還發現最近提出的文獻EfficientNet相較於之前普遍使用的ResNets、ResNetXt和AmoebaNet等主干結構更加高效。因此,作者將提出的BiFPN和混合縮放與EfficientNet結構相結合,命名為EfficientDet。  

網絡結構的改進

  作者首次將多尺度融合的問題公式化,然后提出了BiFPN提出的兩種思路:

  • 有效的雙向跨尺度連接
  • 加權特征融合

1. FPN公式化

  多尺度特征融合意在將不同分辨率下的特征進行聚合。對於一系列不同尺度的特征:

  l1,l2,...,li 表示不同的層級,即模型網絡的不同深度。隨着層級i的加深,特征的分辨率通常以1/2^i的速率減少。例如,輸入一個640*640分辨率的特征,經過三次轉化,分辨率會降維640/2^3=80(80*80的分辨率)。多尺度特征融合的目標就是找到一個可以有效的將一些列不同尺度的特征轉化為一個輸出的 變換,如下所示:

  如下圖所示,左圖為傳統的FPN,其僅包含自上而下的特征融合(如下圖a所示)。可以聯想YOLO v3的的網絡結構(如下圖右側所示),13*13分辨率的特征通過上采樣與26*26分辨率的特征進行融合,26*26分辨率的特征通過上采樣與52*52分辨率的特征融合。可以看出,融合的過程僅包括從低分辨率到高分辨率的融合,即從網絡深的特征到網絡淺的特征融合,也就是論文中描述的top-down模式。

  自上而下模式特征融合的FPN可以公式化為如下形式,其中Resize通常為上采樣(或降采樣)的操作,用於分辨率的匹配;Conv為常規的卷積操作。"+"表示特征在channel上的堆疊。

2. 跨尺度連接(Cross-Scale Connections)

  傳統的自上而下的FPN在本質上受到單向信息流的限制。PANet添加了一條自下而上的途徑,如下左圖所示;NAS-FPN利用神經網絡結構搜索,尋找不規則的跨尺度特征網絡拓撲,如下右圖所示。

  為了提高模型的表現的效率,谷歌大腦研究團隊針對跨尺度連接結構提出了一些優化:

  • 首先,將僅具有一個輸入的節點移除,其靈感比較簡單,一個節點如果僅包含一個輸入,並沒有進行特征融合,那么它對於特征網絡的貢獻是極小的。這樣可以生成一個簡化的PANet (Sim ple PANet),如下圖左側所示,相較於PANet,可以很明顯的看出省略了僅有一個輸入的節點

  • 其次,針對同一層級,添加了一條從起始輸入到輸出的連接,如上圖右側紫色連線。這樣可以在不增加任何參數的同時,融合更多特征。
  • 最后,與只有一條自上而下和自下而上路徑的 PANet 不同,研究者將每個雙向路徑(自上而下和自下而上)作為一個特征網絡層,並多次重復同一個層,以實現更高級的特征融合。形成最終的BiFPN。

3. 加權特征融合

  融合多個不同分辨率特征的常規方式是先將分辨率調整一致,再對其進行加和或者堆疊。金字塔注意力網絡(pyramid attention network)引入了全局自注意力上采樣來恢復像素定位。

  之前的特征融合思想對於輸入的不同特征一視同仁,然而不同分辨率的特征對於輸出特征的貢獻是不同的。為解決該問題,研究者提出在特征融合過程中為每一個輸入添加額外的權重,再讓網絡學習每個輸入特征的重要性。

  

  最后一屆ImageNet的冠軍SENet,也意識到了這樣的問題,下圖為SE-block的結構,通過全連接的方式,讓網絡學習每個尺度特征的貢獻度:

  

  作者提出了三種加權融合的方式

  • Unbounded fusion:

其中,wi是學習的權重,這個權重可以是針對每個feature的(per-feature),也可以是針對通道的(per-channel),還可以是針對像素的(per-pixel)。由於權值不受限,會造成訓練的不穩定。因此,采用權值歸一化的方式限定每個權重的范圍。

  • softmax-based fusion:

這種方式實際上也是通過softmax的方式對權重值的范圍進行限定。但是,softmax的操作對硬件GPU不是很友好,會降低運算速度(yolov3中都不使用softmax做分類)。

  • Fast normalized fusion:

這種方式在某種程度上是為了避免softmax操作的資源消耗。權重wi都使用ReLu激活函數,以保證wi≥0。避免數值的不穩定,采用一個很小的值ε = 0.0001。同樣,經過這樣的處理,最終的加權值將會歸一化到0到1。對於BiFPN的結構,加權操作如下式所示:

  其中,P6td表示P6級的中間節點的輸出特征。作者為了提升效率,使用深度可分離卷積(Mobile Net)減少參數量和運算量。

  從下表中可以看出,使用BiFPN的EfficientNet-B3要比使用FPN在准確度上提高了4個點,參數量和運算量也極大縮小。

EfficientDet

1. 網絡結構

  下圖顯示了EfficientDet網絡結構,大致采用了one-stage檢測器的范例。采用EfficientNet作為網絡的backbone;BiFPN作為特征網絡;將從backbone網絡出來的特征{P3,P4,P5,P6,P7}反復使用BiFPN進行自上而下和自下而上的特征融合。反復使用的特征通過class prediction net和box prediction net 對檢測類別和檢測框分別進行預測。

EfficientNet - B0結構:

其中,MBConv為取反的bootlenet單元,即mobilev2的瓶頸單元,並將shortcut部分改為SE-block。

2. 復合縮放

  為了優化准確性和效率,作者想要開發一系列的模型滿足廣泛的資源約束

  以前的工作主要是通過使用更大的主干網絡來擴展基線檢測器(e.g. ResNeXt),使用較大的輸入圖片或者堆疊更多的FPN層。這樣的做法往往不夠高效。

  研究者提出一種目標檢測復合縮放方法,它使用簡單的復合系數 φ 統一擴大主干網絡、BiFPN 網絡、邊界框/類別預測網絡的所有維度

 

  

  如果沒有研讀過EfficientNet,將會很難理解復合縮放的含義。對EfficientNet的思想進行簡要描述。

  下圖為模型縮放的示意圖,其中圖a描述了一個基礎的網絡結構,圖b-圖d為分別對網絡寬度、網絡深度、分辨率進行擴大。圖e為對網絡寬度、深度、分辨率統一擴大。

  對於一個卷積層,其操作可以定義為一個函數:

  其中,F表示卷積操作,Yi是輸出張量,Xi為輸入張量。

  那么,一個ConvNet N就可以表示為一個遞歸的操作:

  卷積神經網絡N可以定義為(考慮Inception的存在)

  Fi^Li:表示第i層卷積操作重復的次數。【Inception 操作,在一層會進行多次卷積操作】

  H:表示輸入特征高度

  W:表示輸入特征寬度

  C: 表示輸入特征通道數量

  X: 表示輸入張量

  因此,在運算量、資源受限的環境下,一個優化問題可以定義為

  簡單來說,就是在運算量、資源允許的情況下,通過優化網絡深度d,寬度w,分辨率r,使得准確度最大的優化問題。

  對於一個優化問題,需要限制優化變量的取值范圍,否則優化的搜索空間過大,難以尋到最優。因此,設定一個變量准則,如下所示。

  其中,α,β,γ為常量;φ為用戶定義的尺度變化參數;

  將網絡的深度d加倍,將會使得計算量變為原來的2倍,將網絡的通道寬度w和分辨率r加倍將會使得計算量變為原來的4倍。因此,設置α · β^2 · γ^2 ≈ 2,最終的計算量FLOAPS數目為2φ。

 


免責聲明!

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



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