EfficientNet與EfficientDet論文解讀

這兩項工作均來自Google Brain的大佬,EfficientDet可以看做EfficientNet的工作拓展。目前EfficientNet的代碼已經開源,EfficientDet已經被複現。這兩項工作的紙面效果看起來特別優秀,與其他工作相比,在差不多的精度下,參數量和計算量均大幅度低於其他做。而且都是家族系方法,各位可以根據自己的需求選擇。

先介紹第一篇:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

Paper:EfficientNet: Rethinking Model Scaling for Convolutional Neural  

Code:https://link.zhihu.com/?target=https%3A//github.com/qubvel/efficientnet

文章摘要:卷積神經網絡(CNN)通常是在特定資源預算下開發的,如果有更多的資源可用,則會進行擴展以獲得更高的精度。在論文中,我們系統地研究了模型縮放,並發現精細平衡網絡的深度、寬度和分別率可以獲得更多的性能。基於以上研究結果,我們提出了新的縮放方法,使用簡單而高效的compound coefficient(複合係數)來均勻地縮放深度、寬度和分別率維度。我們在ResNet和MobileNets上證明了該方法的有效性。更近一步,我們使用神經搜索網絡(NAS)設計了一個新的基線網絡,並將其擴展以獲得一系列網絡,稱爲EfficientNet。與以前的卷積神經網絡相比,它具有更高的精度和效率。

現有的大多數方法均是採用對網絡深度(depth)網絡寬度(width)輸入圖像分辨率 (resolution)中其一進行改進,來獲得更高精度。如ResNet-18到ResNet-200。但是單一的對以上維度進行擴展很容易到達飽和,如ResNet-200和ResNet-1000的精度類似。論文指出,模型擴張的各個維度之間並不是完全獨立的,比如說,對於更大的分辨率圖像,應該使用更深、更寬的網絡,這就意味着需要平衡各個擴張維度,而不是在單一維度張擴張。而手動調節三者之間的數值關係無異於天方夜譚,因此作者提出compound coefficient(複合係數)使用一組固定的縮放係數來均勻縮放網絡寬度,深度和分辨率。例如,對於一個標準的模型,如果想使用 2^{N} 倍的計算資源,作者認爲只需要對網絡寬度增加 \alpha ^{N} ,深度增加 \beta ^{N} ,以及圖像的分辨率增加 \gamma ^{N} 倍。其中 \alpha ,\beta ,\gamma 是一組固定係數,他們的值通過在原始的標準模型中使用小範圍的網格搜索(grid search)得到。通過下圖可以看出,網絡的深度是指調整網絡的層數,寬度指網絡中每一層特徵圖的通道數,分辨率則是調整輸出圖像的大小。

該方法使用一個複合係數 \phi 通過一種規範化的方式統一對網絡的深度、寬度和分辨率進行擴展。

其中 \alpha ,\beta ,\gamma 是常數,它們有小型網絡搜索確定。 \phi 則是一個由用戶指定的擴展係數,它用來控制到底有多少資源是模型擴展可用的。對於一般的卷積操作,其 FLOPS 需求與 d, w^{2}, r^{2} 是成比例的。由於卷積網絡中最消耗計算資源的通常是卷積操作,因此對網絡進行擴展會導致總 FLOPS 近似變爲 \left ( \alpha * \beta^{2} * r^{2} \right )^\phi ,本文中作者使用公式\left ( \alpha * \beta^{2} * r^{2} \right )^\phi \approx 2對這三個參數進行了約束,因此,總 FLOPS 增加 2^{\phi } 。

將以上方法應用在ResNet和MobileNet均收到了優異的效果。根據先驗知識,模型的精度與基線模型有很大關係,因此論文利用NAS設計了一個新的輕量級基線網絡 EfficientNet。

EfficientNet 的結構已經在表 1 中列出,它的主幹網絡是由 MBConv 構成,同時作者採取了 squeeze-and-excitation 操作對網絡結構進行優化。對於 Efficient-B0,若要使用複合擴展法對其進行擴大需要通過兩步來完成:

  • 第一步:首先將\phi固定爲 1,假設至少有兩倍以上的資源可用,通過公式(2)和公式(3)對\alpha ,\beta ,\gamma進行網格搜索。特別的是,對於 EfficientNet-B0,在約束條\left ( \alpha * \beta^{2} * r^{2} \right )^\phi \approx 2下,\alpha ,\beta ,\gamma分別爲 1.2,1.1 和 1.15 時網絡效果最好。
  • 第二步:\alpha ,\beta ,\gamma作爲常數固定,然後通過公式(3)使用不同 \phi 對基線網絡進行擴展,得到 EfficientNet-B1 到 EfficientNet-B7。

結果展示:

作者通過對模型擴展方法方面存在地問題進行了討論,從如何權衡網絡的深度、寬度以及分辨率方面出發提出了複合擴展方法。並在 MobileNets 和 ResNet 上對這種擴展方法進行了驗證。此外,作者還通過神經結構搜索設計了一種新的基線網絡 EfficientNet,並對其進行擴展得到了一系列的 EfficientNets。在圖像分類標準數據集上,EfficientNets 超越了之前的卷積網絡,並且 EfficientNet 參數量更少、推理速度更快。

 

第二篇:EfficientDet: Scalable and Efficient Object Detection

Paper: EfficientDet: Scalable and Efficient Object Detection

Code:待開源

文章摘要:模型效率在計算機視覺中變得越來越重要。在本文中,我們系統地研究了目標檢測中各個神經網絡體系結構的設計選擇,並提出了提高效率的優化方案。首先,我們提出了一種加權雙向特徵金字塔網絡(BiFPN),它可以方便、快速地融合多尺度特徵;其次,我們提出了一種混合縮放方法,可以同時對backbone,feature network,and box/class prediction networks的網絡深度(depth)網絡寬度(width)輸入圖像分辨率 (resolution)進行均勻縮放。本文主要研究的問題是:在大範圍約束條件下設計一組目標檢測網絡框架同時滿足高精度和高效率。話不多說,直接上效果展示圖:

創新點:

EfficientDet改進主要是借鑑了RetinaNet網絡,是一種Anchor-base的one stage目標檢測方法。

  • BiFPN:(a)原始的PFN(b)PANet引入了自底向上的融合路徑,(c)NAS-FPN則使用神經架構搜索得到不規則的特徵網絡拓撲結構,(d)爲作者提出的另一種改進,全連接FPN,(e)爲作者提出的一種簡化FPN,(f)爲論文最終在 EfficientDet 使用的BiFPN。此外,論文還提出,之前從FPN開始普遍採用的,一個特徵先 Resize ,再和另一層的特徵相加的方式不合理。因爲這樣假設這兩層的特徵有了相同的權重。從更復雜的建模角度出發,應該每一個 feature 在相加的時候都要乘一個自己的權重。這樣 weighted 的方式能漲 0.4。

  • 因爲權重沒有歸一化,會影響訓練穩定性。本文對學習的權重進行歸一化,嘗試兩種方法:Softmax  、Linear 。實驗證明,Linear可以大幅度提高訓練速度,且取得和Softmax類似的結果。
  • EfficientDet:整體框架設計沿用RetinaNet,backbone採用EfficientNet,FPN替換成堆疊的BiFPN,框架如圖。

  • EfficientNet 在 Model Scaling 的時候考慮了網絡的 width, depth, and resolution 三要素。而 EfficientDet 進一步擴展,把 EfficientNet 拿來做 backbone,這樣從 EfficientNet B0 ~ B6,就可以控制 Backbone 的規模;neck 部分,BiFPN 的 channel 數量、重複的 layer 數量也可以控制;此外還有 head 部分的層數,以及 輸入圖片的分辨率,這些組成了 EfficientDet 的 scaling config 。

展示結果:

本文最大的亮點在於提出了目標檢測網絡聯合調整複雜度的策略,從而在COCO上達到51.0 mAP的最優成績。動機源自於谷歌大腦在分類任務的另一大作EfficientNet,本文提出的EfficientDet有如此出色的效果,一部分原因也在於EfficientNet,而EfficientNet的Baseline是通過NAS得到的(也說明NAS的重要性)。聯合調整策略詳細可以看EfficientNet論文。本文第二大亮點在於堆疊FPN,通過堆疊FPN就可以漲幾個點,當然BiFPN的設計也是非常有效的,通過增加短接以及學習加權和,能達到很好效果也更符合理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章