轉載:https://zhuanlan.zhihu.com/p/96773680
本文介紹谷歌發表於 ICML 2019的 EfficientNet 和 最近掛在arXiv上的 EfficientDet, 第一作者爲同一個人,來自谷歌大腦團隊,紙面上體現出來的效果是非常好的。
先介紹第一篇文章—— EfficientNet
論文:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
代碼:https://github.com/qubvel/efficientnet
文章摘要
卷積神經網絡(ConvNets)通常是在固定的資源預算下發展起來的,如果有更多的資源可用的話,則會擴大規模以獲得更好的精度,比如可以提高網絡深度(depth)、網絡寬度(width)和輸入圖像分辨率 (resolution)大小。但是通過人工去調整 depth, width, resolution 的放大或縮小的很困難的,在計算量受限時有放大哪個縮小哪個,這些都是很難去確定的,換句話說,這樣的組合空間太大,人力無法窮舉。基於上述背景,該論文提出了一種新的模型縮放方法,它使用一個簡單而高效的複合係數來從depth, width, resolution 三個維度放大網絡,不會像傳統的方法那樣任意縮放網絡的維度,基於神經結構搜索技術可以獲得最優的一組參數(複合係數)。從下圖可看出,EfficientNet不僅比別的網絡快很多,而且精度也更高。
Efficientnet和其他網絡對比在imagenet上的參數與精度曲線
相關介紹
對網絡的擴展可以通過增加網絡層數(depth,比如從 ResNet (He et al.)從resnet18到resnet200 ), 也可以通過增加寬度,比如WideResNet (Zagoruyko & Komodakis, 2016)和Mo-bileNets (Howard et al., 2017) 可以擴大網絡的width (#channels), 還有就是更大的輸入圖像尺寸(resolution)也可以幫助提高精度。如下圖所示: (a)是基本模型,(b)是增加寬度,(c)是增加深度,(d)是增大屬兔圖像分辨率,(d)是EfficientNet,它從三個維度均擴大了,但是擴大多少,就是通過作者提出來的複合模型擴張方法結合神經結構搜索技術獲得的。
對網絡從不同緯度擴大的對比
現在我們已經知道了,作者是要從depth, width, resolution 這三個維度去縮放模型,現在來看看具體是怎麼做的。
複合模型擴張方法
問題定義:我們將整個卷積網絡稱爲 N,它的第 i 個卷積層可以表示爲:
, 代表輸入張量, 代表輸出張量
整個卷積網絡由 k 個卷積層組成,可以表示爲:
整個卷積網絡N的表示
但是在實際中,通常會將多個結構相同的卷積層稱爲一個 stage,例如 ResNet 有5 個 stage,每個 stage 中的卷積層結構相同(除了第一層爲降採樣層),以 stage 爲單位可以將卷積網絡 N 表示爲:
以 stage 爲單位可以將卷積網絡 N 的表示
其中, 代表第i層的輸入張量的維度(爲了方便敘述忽略 batch 這個維度),下標 i(從 1 到 s) 表示的是 stage 的序號, 表示第 i 個 stage ,它由卷積層 重複 次構成。
與通常的ConvNet設計不同,通常的ConvNet設計主要關注尋找最佳的網絡層 ,模型縮放嘗試擴展網絡長度( )、寬度( )和/或分辨率( ),而不改變基線網絡中預定義的 (我個人在這裏的理解是指kernel size等每一個層內的參數,因爲模型縮放只對depth, width, resolution進行組合調整,不對每一個層內具體的方式做改變)。
所以,優化目標就是在資源有限的情況下,要最大化 Accuracy, 優化目標的公式表達如下:
優化目標定義
作者發現,更大的網絡具有更大的寬度、深度或分辨率,往往可以獲得更高的精度,但精度增益在達到80%後會迅速飽和,這表明了只對單一維度進行擴張的侷限性,實驗結果如下圖:
只對單一維度進行擴張的侷限性
作者指出,模型擴張的各個維度之間並不是完全獨立的,比如說,對於更大的分辨率圖像,應該使用更深、更寬的網絡,這就意味着需要平衡各個擴張維度,而不是在單一維度張擴張。
如下圖所示,直線上的每個點表示具有不同寬度係數(w)的模型。第一個基線網絡(d=1.0,r=1.0)有18個卷積層,分辨率224x224,而最後一個基線(d=2.0,r=1.3)有36個卷積層,分辨率299x299。這個圖說明了一個問題,爲了追求更好的精度和效率,在ConvNet縮放過程中平衡網絡寬度、深度和分辨率的所有維度是至關重要的。
所以本文提出了複合擴張方法,這也是文章核心的地方,( )是我們需要求解的一組參數,如下圖公式,帶約束的最優參數求解。( ) 分別衡量着depth, width和 resolution的比重,其中 在約束上會有平方,是因爲如果增加寬度或分辨率兩倍,其計算量是增加四倍,但是增加深度兩倍,其計算量只會增加兩倍。
求解方式:
- 固定公式中的φ=1,然後通過網格搜索(grid search)得出最優的α、β、γ,得出最基本的模型EfficientNet-B0.
- 固定α、β、γ的值,使用不同的φ,得到EfficientNet-B1, ..., EfficientNet-B7
φ的大小對應着消耗資源的大小,相當於:
- 當φ=1時,得出了一個最小的最優基礎模型;
- 增大φ時,相當於對基模型三個維度同時擴展,模型變大,性能也會提升,資源消耗也變大。
對於神經網絡搜索,作者使用了和 MnasNet: Platform-awareneural architecture search for mobile 一樣的搜索空間和優化目標。
Efficientnet網絡結構:
作者指明,由於模型縮放不會改變基線網絡中的層,但是擁有一個良好的基線網絡也是至關重要的。我們將使用現有的基礎網絡來評估我們的縮放方法,但是爲了更好地證明我們的縮放方法的有效性,我們還開發了一種新的mobile-size baseline,稱爲 EfficientNet,EfficientNet-B0的網絡結構如下 (類似於 MobileNetV2 和 MnasNet):
實驗結果
Efficientnet系列跟其他網絡的對比(計算量/精度曲線)
對現有的基礎網絡採用文章提出的方法進行模型擴張,然後跟用單一維度對該模型擴張進行對比
Efficientnet系列跟其他的基礎網絡和方法在imagenet上的對比
作者還在遷移學習上做了實驗,表明 EfficientNet 也是有效的。
下面介紹另一篇論文,在提出EfficientDet,作者接着又提出了EfficientDet
論文:EfficientDet: Scalable and Efficient Object Detection
文章摘要
模型效率在計算機視覺中的地位越來越重要,本文系統地研究了用於目標檢測的各種神經網絡結構設計選擇,並提出了幾種提高效率的關鍵優化方法。首先,我們提出了一個加權的雙向特徵金字塔網絡(BiFPN),該網絡允許簡單快速的多尺度特徵融合;其次,我們提出了一種複合尺度擴張方法,該方法可以統一地對所有主幹網、特徵網絡和預測網絡的分辨率、深度和寬度進行縮放。 基於這些優化,我們開發了一個新的對象檢測器家族,稱爲EfficientDet。
文章動機:
1、如何高效的進行多尺度特徵融合(efficient multi-scale feature fusion):提到多尺度融合,在融合不同的輸入特徵時,以往的研究(FPN以及一些對FPN的改進工作)大多隻是沒有區別的將特徵相加;然而,由於這些不同的輸入特徵具有不同的分辨率,我們觀察到它們對融合輸出特徵的貢獻往往是不平等的,爲了解決這一問題,作者提出了一種簡單而高效的加權(類似與attention)雙向特徵金字塔網絡(BiFPN),它引入可學習的權值來學習不同輸入特徵的重要性,同時反覆應用自頂向下和自下而上的多尺度特徵融合。
2、如何對模型進行擴張(參考上文 EfficientNet ,同時考慮depth、width和resolution)
作者基於EfficientNet, 提出對檢測器的backbone等網絡進行模型縮放,並且結合提出的BiFPN提出了新的檢測器家族,叫做EfficientDet。本文提出的檢測器的主要遵循one-stage的設計思想,通過優化網絡結構,可以達到更高的效率和精度。
The performance comparison on COCO dataset
BiFPN結構
如下圖所示,BiFPN在圖e的基礎上增加了shortcut,這些都是在現有的一些工作的基礎上添磚加瓦。
BiFPN與其他的特徵融合方法的比較
但是,以往的特徵融合方法對所有輸入特徵一視同仁,在BiFPN中則引入了加權策略,下邊介紹本文提出來的加權策略(類似attention機制)。
最直白的思想,加上一個可學習的權重即可,如下:
加權策略
其中 可以是一個標量(對每一個特徵),可以是一個向量(對每一個通道),也可以是一個多維度的tenor(對每一個像素)。但是如果不對 對限制容易導致訓練不穩定,於是很自然的想到對每一個權重用softmax:
對每一個權重用softmax
但是計算softmax速度較慢,於是作者提出了快速的限制方法:
快速的限制方法
爲了保證weight大於0,weight前採用relu函數。
以上圖BiFPN結構中第6層爲例:
在上圖BiFPN結構中第6層中的加權特徵融合
EfficientDet結構
組合了backbone(使用了EfficientNet)和BiFPN(特徵網絡)和Box prediction net,整個框架就是EfficientDet的基本模型,結構如下圖:
EfficientDet結構
模型複合擴張(建議先閱讀上文EfficientNet瞭解複合擴張)
對於Backbone network:
直接採用EfficientNet-B0 to B6中的符合係數,並採用 EfficientNet作爲backbone。
對於BiFPN network:
對於BiFPN network中width和depth的設置
對於Box/class prediction network:
對Box/class prediction network中的depth的設置
對於Input image resolution(文中說必須是2^7=128的倍數):
對於Input image resolution的設置
模型擴張複合係數表
實驗結果
EfficientDet performance on COCO
:Model size and inference latency comparison
Comparison of different feature fusion
Comparison of different scaling methods
分解實驗結果:
比較使用不同的特徵網絡
分離backbone和BiFPN
總結:看着很有效,但是還得等待使用之後才知道是不是真的好用,如果真的有效,對於工業界將是很友好的。
參考文獻
1、Zero黑羽楓:速度與精度的結合 - EfficientNet 詳解
2、EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks