【读点论文】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks网络结构要像身材一样匀称且体量和处理能力匹配
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
Abstract
- 卷積神經網絡(ConvNets)通常是在固定的資源預算下開發的,然后在有更多資源的情況下擴大規模以獲得更好的準確性。
- 在本文中,系統地研究了模型的縮放,發現仔細平衡網絡深度、寬度和分辨率可以帶來更好的性能。基于這一觀察,本文提出了一種新的縮放方法,使用一個簡單而高效的復合系數統一縮放深度/寬度/分辨率的所有維度。本文在擴大MobileNets和ResNet的規模上證明了這種方法的有效性。
- 為了更進一步,本文使用神經結構搜索來設計一個新的基線網絡,并將其擴大到獲得一個模型系列,稱為EfficientNets,它比以前的ConvNets實現了更好的準確性和效率。
- 特別是,本文的EfficientNet-B7在ImageNet上達到了當時最先進的84.3%的最高準確率,同時比現有最好的ConvNet小8.4倍,推理速度快6.1倍。本文的EfficientNets在CIFAR-100(91.7%)、Flowers(98.8%)和其他3個遷移學習數據集上也有很好的遷移效果,并取得了最先進的準確性,而參數卻少了一個數量級。
- 源代碼是在:tpu/models/official/efficientnet at master · tensorflow/tpu (github.com)
- 論文:[1905.11946] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (arxiv.org)
- EfficientNet是Google Research 發表在ICML 2019的工作。EfficientNet根據網絡從小到大,分為了B0到B7共8個網絡,其中EfficientNet-B0尺寸最小,速度最快,精度相對最低;EfficientNet是Google在2019年5月提出的網絡,在當時表現SOTA,超級強,該論文提出了一種多維度混合的模型放縮方法。
- 先用NAS搜一個較小的拓撲結構(基礎網絡),然后用一定的方法增大網絡尺寸。這樣,當基礎網絡表現超越其他同等尺寸網絡時,增大網絡尺寸后的表現也應該能夠超越其他同等尺寸的網絡。這樣就得到了EfficientNet從B0到B7的backbone家族。
Introduction
-
擴大ConvNets的規模被廣泛用于實現更好的準確性。例如,ResNet(He等人,2016)通過使用更多的層可以從ResNet-18擴展到ResNet-200;最近,GPipe(Huang等人,2018)通過將一個基線模型擴展到四倍大,實現了84.3%的ImageNet top-1精度。
-
然而,擴大ConvNets的過程一直沒有得到很好的理解,目前有很多方法可以做到這一點。最常見的方法是通過深度(He等人,2016)或寬度(Zagoruyko和Komodakis,2016)擴大ConvNets的規模。
-
另一種不太常見,但越來越流行的方法是通過圖像分辨率來放大模型(Huang等人,2018)。在以前的工作中,通常只對三個維度中的一個進行縮放–深度、寬度和圖像大小。雖然可以任意縮放兩個或三個維度,但任意縮放需要繁瑣的手工調整,而且仍然經常產生次優的精度和效率。
-
在本文中,想研究并重新思考擴大ConvNets規模的過程。特別是,本文研究了一個核心問題:是否有一種原則性的方法來擴大ConvNets的規模,以達到更好的準確性和效率?本文的實證研究表明,平衡網絡的寬度/深度/分辨率等所有維度是至關重要的\textcolor{blue}{平衡網絡的寬度/深度/分辨率等所有維度是至關重要的}平衡網絡的寬度/深度/分辨率等所有維度是至關重要的,而令人驚訝的是,這種平衡可以通過簡單地以恒定的比例擴展它們來實現\textcolor{red}{以恒定的比例擴展它們來實現}以恒定的比例擴展它們來實現。基于這一觀察,提出了一種簡單而有效的復合縮放方法。
-
這篇論文主要是用NAS(Neural Architecture Search)技術來搜索網絡的圖像輸入分辨率r ,網絡的深度depth以及channel的寬度width三個參數的合理化配置。
-
與傳統的做法不同,本文的方法是用一組固定的縮放系數來統一縮放網絡的寬度、深度和分辨率。例如,如果想使用2N2^N2N倍的計算資源,那么本文可以簡單地將網絡深度增加αNα^NαN,寬度增加βNβ^NβN,圖像大小增加γNγ^NγN,其中α、β、γ是由原始小模型上的小網絡搜索確定的常數系數。下圖說明了本文的縮放方法與傳統方法之間的區別。
-
Model Scaling.
- (a)是一個基線網絡例子;
- (b)-(d)是傳統的縮放方法,只增加網絡寬度、深度或分辨率的一個維度。
- (e)是本文提出的復合縮放方法,以一個固定的比例統一縮放所有三個維度。
-
直觀地說,復合縮放法是有意義的,因為如果輸入的圖像更大,那么網絡就需要更多的層來增加感受野和更多的通道來捕捉更大圖像上更精細的圖案。事實上,之前的理論(Raghu等人,2017;Lu等人,2018)和實證結果(Zagoruyko & Komodakis,2016)都表明,網絡寬度和深度之間存在一定的關系,但據本文所知,本文是第一個對網絡寬度、深度和分辨率這三個維度之間的關系進行實證量化的。
-
本文證明了本文的復合擴展方法在現有的MobileNets(Howard等人,2017;Sandler等人,2018)和ResNet(He等人,2016)上運行良好。
-
值得注意的是,模型擴展的有效性在很大程度上取決于基線網絡;為了更進一步,本文使用神經架構搜索(Zoph & Le, 2017; Tan et al., 2019)來開發一個新的基線網絡,并將其擴展以獲得一個模型系列,稱為EfficientNets。下圖總結了ImageNet的性能,其中本文的EfficientNets明顯優于其他ConvNets。
-
Model Size vs. ImageNet Accuracy.
-
所有數字均為single-crop, single-model。本文的EfficientNets的表現明顯優于其他ConvNets。特別是,EfficientNet-B7達到了最先進的84.3%的最高準確率,而且比GPipe小8.4倍,快6.1倍。EfficientNet-B1比ResNet-152小7.6倍,快5.7倍。
-
特別是,本文的EfficientNet-B7超過了現有最好的GPipe精度(Huang等人,2018),但使用的參數少了8.4倍,推理時運行速度快了6.1倍。與廣泛使用的ResNet-50(He等人,2016)相比,本文的EfficientNet-B4在相似的FLOPS下將top-1的準確率從76.3%提高到83.0%(+6.7%)。
-
除了ImageNet,EfficientNets也能很好地遷移泛化效果,并在8個廣泛使用的數據集中的5個上達到最先進的精度,同時比現有的ConvNets減少了21倍的參數。
-
卷積神經網絡(cnn)通常是以固定的資源成本開發,然后在更多資源加入進來時擴大規模,以達到更高精度。例如,ResNet可以通過增加層數將 ResNet-18擴展到 ResNet-200,GPipe通過將 CNN baseline擴展4倍,在 ImageNet上實現了84.3% 的準確率。
-
傳統的模型縮放實踐是任意增加 CNN 的深度或寬度,或使用更大的輸入圖像分辨率進行訓練和評估。 雖然這些方法確實提高了準確性,但它們通常需要長時間的手動調優,并且仍然會經常產生次優的性能。 ICML的一篇文章提出了一個更有原則性的方法來擴大 CNN 的規模,從而可以獲得更好的準確性和效率。
Related Work
ConvNet Accuracy
- 自從AlexNet(Krizhevsky等人,2012)贏得2012年ImageNet競賽以來,ConvNets通過變大而變得越來越準確:2014年ImageNet冠軍GoogleNet(Szegedy等人,2015)用大約6.8M的參數實現了74.8%的top-1準確率,而2017年ImageNet冠軍SENet(Hu等人,2018)用145M參數實現了82.7%的top-1準確率。
- GPipe(Huang等人,2018)使用557M的參數將最先進的ImageNet top-1驗證準確率進一步推高到84.3%:它是如此之大,以至于只能通過分割網絡并將每個部分分散到不同的加速器中,用專門的流水線并行庫來訓練。
- 雖然這些模型主要是為ImageNet設計的,但研究表明,更好的ImageNet模型在各種遷移學習數據集(Kornblith等人,2019),以及其他計算機視覺任務(如物體檢測)中也表現得更好(He等人,2016;Tan等人,2019)。
- 雖然更高的精度對許多應用來說至關重要,但已經遇到了硬件內存的限制,因此進一步提高精度需要更好的效率。
ConvNet Efficiency
- 深度ConvNets經常被過度參數化。模型壓縮(Han等人,2016;He等人,2018;Yang等人,2018)是一種常見的方法,通過用準確性換取效率來減少模型的大小。
- 隨著手機變得無處不在,手工設計高效的移動尺寸ConvNets也很常見,例如SqueezeNets(Iandola等人,2016;Gholami等人,2018)、MobileNets(Howard等人,2017;Sandler等人,2018)和ShuffleNets(Zhang et al., 2018; Ma et al., 2018)。
- 后來,神經結構搜索在設計高效的移動尺寸ConvNets方面變得越來越流行(Tan等人,2019;Cai等人,2019),通過廣泛地調整網絡寬度、深度、卷積核類型和尺寸,達到比手工制作的移動ConvNets更好的效率。
- 然而,此前的工作還不清楚如何將這些技術應用于具有更大設計空間和更昂貴調諧成本的大型模型。在本文中,本文的目標是研究超過最先進精度的超大型卷積網絡的模型效率。為了實現這一目標,本文采用了模型的縮放。
Model Scaling
- 針對不同的資源限制,有很多方法來擴展ConvNet。ResNet(He等人,2016)可以通過調整網絡深度(#層的數量)來縮小(如ResNet-18)或增加(如ResNet-200),而WideResNet(Zagoruyko和Komodakis,2016)和MobileNets(Howard等人,2017)可以通過網絡寬度(#通道)來擴展。
- 人們也清楚地認識到,更大的輸入圖像尺寸將有助于準確度,并有更多FLOPs的開銷。盡管之前的研究(Raghu等人,2017;Lin & Jegelka,2018;Sharir & Shashua,2018;Lu等人,2018)表明,網絡深度和寬度對ConvNets的表達能力都很重要,但如何有效地擴展ConvNet以實現更好的效率和準確性仍然是一個開放的問題。
- 本文的工作系統地、實證地研究了ConvNet在網絡寬度、深度和分辨率三個維度上的擴展。
Compound Model Scaling
- 本文將定義了縮放問題,研究不同的方法,并提出本文新的縮放方法。
Problem Formulation
-
一個ConvNet層 i 可以被定義為一個函數。Yi=Fi(Xi)Y_i = \mathcal{F}_i(X_i)Yi?=Fi?(Xi?),其中Fi\mathcal{F}_iFi?是算子,Yi是輸出張量,Xi是輸入張量,張量形狀為<Hi,Wi,Ci><H_i, W_i, C_i><Hi?,Wi?,Ci?>,其中Hi和Wi是空間維度,Ci是通道維度。一個ConvNet N\mathcal{N}N可以用一個組成層的列表來表示。N=Fk⊙...⊙F2⊙F1(X1)=⊙j=1...kFj(X1)\mathcal{N} = \mathcal{F}_k ⊙ ... ⊙\mathcal{F}_2 ⊙\mathcal{F}_1(X_1) = ⊙_{j=1...k}\mathcal{F}_j(X_1)N=Fk?⊙...⊙F2?⊙F1?(X1?)=⊙j=1...k?Fj?(X1?)。
-
在實踐中,ConvNet層通常被劃分為多個階段,每個階段的所有層都有相同的架構:例如,ResNet(He等人,2016)有五個階段,每個階段的所有層都有相同的卷積類型,除了第一層執行下采樣。因此,本文可以將ConvNet定義為:
-
N=⊙i=1...sFiLi(X<HI,Wi,Ci>),(1)\mathcal{N}=\odot_{i=1...s}\mathcal{F}_i^{L_i}(X_{<H_I,W_i,C_i>}),(1) N=⊙i=1...s?FiLi??(X<HI?,Wi?,Ci?>?),(1)
-
其中FiLi\mathcal{F}^{Li}_iFiLi?表示層Fi在第i階段重復Li次,<Hi,Wi,Ci><H_i, W_i, C_i><Hi?,Wi?,Ci?>表示層 i 的輸入張量X的形狀。上圖(Model Scaling.)(a)說明了一個有代表性的ConvNet,其中空間維度逐漸縮小,但通道維度卻逐層擴大,例如,從初始輸入形狀<224, 224, 3>到最終輸出形狀<7, 7, 512>。
-
-
與常規的ConvNet設計不同的是,它主要集中在尋找最佳的層結構Fi\mathcal{F}_iFi?,模型縮放試圖擴大網絡的長度(Li)、寬度(Ci)和/或分辨率(Hi,Wi)而不改變基線網絡中預定的Fi。通過固定Fi\mathcal{F}_iFi?,模型縮放簡化了新的資源約束的設計問題,但它仍然是一個很大的設計空間,以探索每一層不同的Li、Ci、Hi、Wi。為了進一步減少設計空間,本文限制所有層必須以恒定的比例統一縮放。
-
本文的目標是在任何給定的資源約束下使模型精度最大化,這可以被表述為一個優化問題:
-
max?d,w,rAccuracy(Nd,w,r)s.t.N(d,w,r)=⊙i=1...sF^id?L^i(X<r?H^I,r?W^i,w?C^i>)Memory(N)≤target_memoryFLOPs(N)≤target_FLOPs,(2)\max\limits_{d,w,r}~Accuracy(\mathcal{N}_{d,w,r})\\ s.t.~~\mathcal{N}_{(d,w,r)}=\odot_{i=1...s}\hat{\mathcal{F}}_i^{d·\hat{L}_i}(X_{<r·\hat{H}_I,r·\hat{W}_i,w·\hat{C}_i>})\\ Memory(\mathcal{N})\leq~target\_memory\\ FLOPs(\mathcal{N})\leq~target\_FLOPs,(2) d,w,rmax??Accuracy(Nd,w,r?)s.t.??N(d,w,r)?=⊙i=1...s?F^id?L^i??(X<r?H^I?,r?W^i?,w?C^i?>?)Memory(N)≤?target_memoryFLOPs(N)≤?target_FLOPs,(2)
-
其中w、d、r是縮放網絡寬度、深度和分辨率的系數;?Fi、?Li、?Hi、?Wi、?Ci是基線網絡中預定的參數,見下表。
-
EfficientNet-B0基線網絡–每一行描述一個具有L^i\hat{L}_iL^i?層的階段i,其輸入分辨率h為$ <\hat{H}_i,\hat{W}_i>,輸出通道為,輸出通道為,輸出通道為\hat{C}_i$。
-
EfficientNet-B0的網絡框架(B1-B7就是在B0的基礎上修改Resolution,Channels以及Layers),可以看出網絡總共分成了9個Stage,
- 第一個Stage就是一個卷積核大小為3x3步距為2的普通卷積層(包含BN和激活函數Swish),
- Stage2~Stage8都是在重復堆疊MBConv結構(最后一列的Layers表示該Stage重復MBConv結構多少次),
- 而Stage9由一個普通的1x1的卷積層(包含BN和激活函數Swish)一個平均池化層和一個全連接層組成。
-
表格中每個MBConv后會跟一個數字1或6,這里的1或6就是倍率因子n即MBConv中第一個1x1的卷積層會將輸入特征矩陣的channels擴充為n倍,其中k3x3或k5x5表示MBConv中Depthwise Conv所采用的卷積核大小。Channels表示通過該Stage后輸出特征矩陣的Channels。
-
Scaling Dimensions
- 問題2的主要困難是,最佳的d、w、r相互依賴,而且在不同的資源約束下,其數值會發生變化。由于這個困難,傳統的方法大多在其中一個維度上對ConvNets進行擴展。
Depth (d):
- 縮放網絡深度是許多ConvNets最常用的方式(He等人,2016;Huang等人,2017;Szegedy等人,2015;2016)。其直覺是,更深的ConvNet可以捕獲更豐富、更復雜的特征,并在新任務上有很好的概括性。
- 然而,由于梯度消失問題,更深的網絡也更難訓練(Zagoruyko & Komodakis, 2016)。盡管一些技術,如殘差連接(He等人,2016)和批量規一化(Ioffe & Szegedy,2015),緩解了訓練問題,但非常深的網絡的精度增益會減少:例如,ResNet-1000的精度與ResNet-101類似,盡管它有更多的層。下圖(中間)顯示了本文對不同深度系數d的基線模型的擴展的經驗研究,進一步表明非常深的ConvNets的準確率回報遞減。
-
Scaling Up a Baseline Model with Different Network Width (w), Depth (d), and Resolution ? Coefficients.
-
具有較大寬度、深度或分辨率的大型網絡往往能達到較高的精度,但精度的提高在達到80%后很快就飽和了,這表明了單維擴展的局限。
Width (w):
- 縮放網絡寬度通常用于小尺寸模型(Howard等人,2017;Sandler等人,2018Tan等人,2019)2。正如(Zagoruyko & Komodakis, 2016)所討論的,更寬的網絡往往能夠捕捉到更精細的特征,更容易訓練。然而,極寬但淺的網絡往往難以捕捉到更高層次的特征。本文在上圖(左)中的經驗結果顯示,當網絡變得更寬、w值更大時,準確率會迅速飽和。
Resolution ?:
-
有了更高的分辨率的輸入圖像,ConvNets有可能捕捉到更精細的模式。從早期ConvNets的224x224開始,現代ConvNets傾向于使用299x299(Szegedy等人,2016)或331x331(Zoph等人,2018)以獲得更好的準確性。最近,GPipe(Huang等人,2018)用480x480的分辨率實現了最先進的ImageNet準確性。更高的分辨率,如600x600,也被廣泛用于物體檢測ConvNets(He等人,2017;Lin等人,2017)。上圖(右)顯示了縮放網絡分辨率的結果,的確,更高的分辨率可以提高準確率,但對于非常高的分辨率來說,準確率的提高會減弱(r=1.0表示分辨率為224x224,r=2.5表示分辨率為560x560)。
-
上述分析使本文得出了第一個看法
- Observation1:擴大網絡寬度、深度或分辨率的任何維度都能提高精確度,但對于更大的模型來說,精確度的提高會減弱。\textcolor{red}{Observation 1:擴大網絡寬度、深度或分辨率的任何維度都能提高精確度,但對于更大的模型來說,精確度的提高會減弱。}Observation1:擴大網絡寬度、深度或分辨率的任何維度都能提高精確度,但對于更大的模型來說,精確度的提高會減弱。
Compound Scaling
-
本文根據經驗觀察到,不同的縮放維度是不獨立的。
-
直觀地說,對于更高分辨率的圖像,本文應該增加網絡深度,這樣更大的感受野可以幫助捕捉類似的特征,包括更大圖像中的更多像素。相應地,當分辨率較高時,本文也應該增加網絡的寬度,以便在高分辨率的圖像中捕捉到更多像素的細微模式。
-
這些直覺表明,需要協調和平衡不同的縮放維度,而不是傳統的單一維度的縮放。
-
為了驗證本文的直覺,本文比較了不同網絡深度和分辨率下的寬度縮放,如下圖所示。
-
Scaling Network Width for Different Baseline Networks.
-
每條線上的點表示一個具有不同寬度系數(w)的模型。所有基線網絡都來自表EfficientNet-B0 baseline network。第一個基線網絡(d=1.0,r=1.0)有18個卷積層,分辨率為224x224,而最后一個基線(d=2.0,r=1.3)有36層,分辨率為299x299。
-
如果只縮放網絡寬度w而不改變深度(d=1.0)和分辨率(r=1.0),準確性很快就會飽和。隨著深度(d=2.0)和分辨率(r=2.0)的提高,在相同的FLOPS成本下,寬度的擴展可以達到更好的精度。這些結果使本文得出第二個觀察結果。
- Observation2:為了追求更好的準確性和效率,在ConvNet擴展過程中,平衡網絡寬度、深度和分辨率等所有維度至關重要。\textcolor{red}{Observation 2 :為了追求更好的準確性和效率,在ConvNet擴展過程中,平衡網絡寬度、深度和分辨率等所有維度至關重要。}Observation2:為了追求更好的準確性和效率,在ConvNet擴展過程中,平衡網絡寬度、深度和分辨率等所有維度至關重要。
-
事實上,之前的一些工作(Zoph等人,2018;Real等人,2019)已經試圖任意平衡網絡寬度和深度,但都需要繁瑣的人工調整。
-
在本文中,本文提出了一種新的復合縮放方法,即使用復合系數φ以一種原則性的方式均勻地縮放網絡寬度、深度和分辨率。
-
depth:d=α?width:w=β?resolution:r=γ?s.t.α?β2?γ2≈2α≥1,β≥1,γ≥1,(3)depth:d=\alpha^\phi\\ width:w=\beta^\phi\\ resolution:r=\gamma^\phi\\ s.t.~~\alpha·\beta^2·\gamma^2≈2\\ \alpha\geq1,\beta\geq1,\gamma\geq1,(3) depth:d=α?width:w=β?resolution:r=γ?s.t.??α?β2?γ2≈2α≥1,β≥1,γ≥1,(3)
-
其中,α、β、γ是常數,可以通過小網格搜索來確定。直觀地說,φ是一個用戶指定的系數,它控制了多少更多的資源可用于模型擴展,而α、β、γ分別指定了如何將這些額外的資源分配給網絡寬度、深度和分辨率。
-
-
值得注意的是,常規卷積運算的FLOPS與d、w2、r2d、w^2、r^2d、w2、r2成正比,即網絡深度翻倍將使FLOPs翻倍,但網絡寬度或分辨率翻倍將使FLOPs增加4倍。
-
由于卷積運算通常在ConvNets的計算成本中占主導地位,用上等式3擴展ConvNet將使總FLOPs大約增加(α?β2?γ2)φ(α·β^2·γ^2)^φ(α?β2?γ2)φ。在本文中,本文約束α?β2?γ2≈2α·β^2·γ^2≈2α?β2?γ2≈2,這樣對于任何新的φ,總FLOPS將大約增加2φ2^φ2φ。
EfficientNet Architecture
-
由于模型的縮放不會改變基線網絡中的層算子?Fi,因此擁有一個好的基線網絡也是至關重要的。本文將使用現有的ConvNets來評估本文的縮放方法,但是為了更好地證明我們的縮放方法的有效性,本文還開發了一個新的適用于移動產品的基線,稱為EfficientNet。
-
受(Tan等人,2019)的啟發,本文通過利用多目標神經架構搜索來開發本文的基線網絡,以優化準確性和FLOPS。具體來說,本文使用與(Tan等人,2019)相同的搜索空間,并使用ACC(m)×[FLOPS(m)T]wACC(m)×[\frac{FLOPS(m)}{T}]^wACC(m)×[TFLOPS(m)?]w作為優化目標,其中ACC(m)和FLOPS(m)表示模型m的精度和FLOPS,T是目標FLOPS,w=-0.07是用于控制精度和FLOPS之間權衡的超參數。
-
與(Tan等人,2019;Cai等人,2019)不同,這里本文優化的是FLOPS而不是延遲,因為本文不針對任何特定的硬件設備。本文的搜索產生了一個高效的網絡,本文稱之為EfficientNet-B0。
-
由于本文使用的搜索空間與(Tan et al., 2019)相同,所以架構與MnasNet類似,只是本文的EfficientNet-B0由于FLOPS目標較大(本文的FLOPS目標是400M),所以規模稍大。上表EfficientNet-B0基線網絡顯示了EfficientNet-B0的架構。它的主要構件是移動倒置瓶頸MBConv(Sandler等人,2018;Tan等人,2019),本文還在其中加入了擠壓和激發優化(Hu等人,2018)。
-
MBConv其實就是MobileNetV3網絡中的InvertedResidualBlock,但也有些許區別。一個是采用的激活函數不一樣(EfficientNet的MBConv中使用的都是Swish激活函數),另一個是在每個MBConv中都加入了SE模塊。
-
MBConv結構主要由一個1x1的普通卷積(升維作用,包含BN和Swish),一個kxk的Depthwise Conv卷積(包含BN和Swish)k的具體值可看EfficientNet-B0的網絡框架主要有3x3和5x5兩種情況,一個SE模塊,一個1x1的普通卷積(降維作用,包含BN),一個Droupout層構成。
-
第一個升維的1x1卷積層,它的卷積核個數是輸入特征矩陣channel的n 倍,$ n \in \left{1, 6\right}$。
-
當n = 1時,不要第一個升維的1x1卷積層,即Stage2中的MBConv結構都沒有第一個升維的1x1卷積層(這和MobileNetV3網絡類似)。
-
關于shortcut連接,僅當輸入MBConv結構的特征矩陣與輸出的特征矩陣shape相同時才存在(代碼中可通過stride==1 and inputc_channels==output_channels條件來判斷)。
-
SE模塊如下所示,由一個全局平均池化,兩個全連接層組成。第一個全連接層的節點個數是輸入該MBConv特征矩陣channels的$ \frac{1}{4} $ ,且使用Swish激活函數。第二個全連接層的節點個數等于Depthwise Conv層輸出的特征矩陣channels,且使用Sigmoid激活函數。
-
只有使用shortcut的時候才有Dropout層。
-
-
Stochastic Depth(隨機深度網絡),2016年清華的黃高在ECCV發表
- 提出背景:深度(殘差)網絡中并不是所有的層都是必要的,有很多層是冗余的,有些分支里權重值相對于別的層可能非常小。
- 隨機深度:通過在訓練過程中隨機丟掉一些層,來優化深度殘差網絡的訓練過程。網絡變得簡單一點了
- 用隨機變量和線性衰減的生存概率原則來dropout
- 對于較深的網絡它能夠加快訓練時間,并提升性能。
- 在訓練時縮小的深度(隨機在ResNet的基礎上丟掉一些層),較少訓練時間,提高訓練性能
- 在預測時保持較深的深度,可以通過在訓練期間隨機丟棄整個ResBlock,并通過殘差連接繞過它們的轉換來實現這個目標。
-
Stochastic_Depth:訓練時,加入了隨機變量 b(伯努利隨機變量),把 b*f,對整個ResBlock卷積部分做了隨機丟棄。果b = 1,則簡化為原始的ResNet結構;如果b = 0,則這個ResBlock未被激活,降為恒等函數。
-
伯努利分布(0-1分布),它的隨機變量只取0或1,0頻率是1?p,1的頻率是p。
-
Hl=ReLU(blfl(Hl?1)+identy(Hl?1))H_l=ReLU(b_lf_l(H_{l-1})+identy(H_{l-1})) Hl?=ReLU(bl?fl?(Hl?1?)+identy(Hl?1?))
-
-
-
從基線EfficientNet-B0開始,應用本文的復合擴展方法,分兩步進行擴展。
-
STEP 1: 本文首先固定φ=1,假設有兩倍的可用資源,并根據上文等式2和3對α、β、γ進行小網格搜索。特別是,本文發現EfficientNet-B0的最佳值是α=1.2,β=1.1,γ=1.15,在α?β2?γ2≈2α·β^2·γ^2≈2α?β2?γ2≈2的約束條件下。
-
第2步:然后本文將α、β、γ固定為常數,用上等式3將不同φ的基線網絡放大,得到EfficientNet-B1至B7(詳見下表)。
-
EfficientNet Performance Results on ImageNet
-
所有的EfficientNet模型都是在基線EfficientNet-B0的基礎上,通過上等式3中不同的復合系數φ進行擴展。為了比較效率,本文將準確率排名前1/前5的ConvNets歸為一組。
-
與現有的ConvNets相比,本文縮放后的EfficientNet模型持續減少了一個數量級的參數和FLOPS(最多可減少8.4倍的參數,最多可減少16倍FLOPS)。
-
本文省略了集合和多目標模型(Hu等人,2018),或在3.5B Instagram圖像上預訓練的模型(Mahajan等人,2018)。
-
-
值得注意的是,通過直接在大模型周圍搜索α、β、γ,有可能獲得更好的性能,但在更大的模型上,搜索成本變得過于昂貴。本文的方法解決了這個問題,只在小型基線網絡上做一次搜索(第1步),然后對所有其他模型使用相同的縮放系數(第2步)。
Experiments
- 在本節中將首先在現有的ConvNets和新提出的EfficientNets上評估本文的縮放方法。
Scaling Up MobileNets and ResNets
- 作為一個概念證明,首先將本文的縮放方法應用于廣泛使用的MobileNets(Howard等人,2017;Sandler等人,2018)和ResNet(He等人,2016)。下表顯示了以不同方式對它們進行縮放的ImageNet結果。與其他單維縮放方法相比,本文的復合縮放方法提高了所有這些模型的準確性,表明本文提出的縮放方法對一般現有ConvNets的有效性。
-
Scaling Up MobileNets and ResNet.
ImageNet Results for EfficientNet
-
本文使用與(Tan等人,2019)類似的設置在ImageNet上訓練我們的EfficientNet模型。RMSProp優化器的衰減為0.9,動量為0.9;批量規范動量為0.99,權重衰減1e-5;初始學習率0.256,每2.4個epochs衰減0.97。
-
本文還使用SiLU(Swish-1)激活(Ramachandran等人,2018;Elfwing等人,2018;Hendrycks & Gimpel,2016)、AutoAugment(Cubuk等人,2019)和隨機深度(Huang等人,2016),生存概率為0.8。
- SiLU:按元素應用 Sigmoid 線性單元 (SiLU) 函數。SiLU 函數也稱為 swish 函數。
- silu(x)=x?σ(x),其中 σ(x) 是邏輯 sigmoid。
- SiLU:按元素應用 Sigmoid 線性單元 (SiLU) 函數。SiLU 函數也稱為 swish 函數。
-
眾所周知,更大的模型需要更多的正則化,因此本文將dropout(Srivastava等人,2014)從EfficientNet-B0的0.2線性增加到B7的0.5。本文從訓練集中隨機抽取25K圖像作為最小集,并對該最小集進行提前停止;然后在原始驗證集上評估提前停止的檢查點,以報告最終的驗證精度。
-
表EfficientNet Performance Results on ImageNet顯示了從同一基線EfficientNet-B0擴展而來的所有EfficientNet模型的性能。
-
本文的EfficientNet模型與其他具有相似精度的ConvNets相比,使用的參數和FLOPS通常要少一個數量級。特別是,本文的EfficientNet-B7以66M的參數和37B的FLOPS實現了84.3%的top1準確率,比之前最好的GPipe(Huang等人,2018)更準確,但體積小了8.4倍。這些收益既來自于更好的架構、更好的擴展,也來自于為EfficientNet定制的更好的訓練設置。
-
**圖Model Size vs. ImageNet Accuracy.**和下圖顯示了代表性ConvNets的參數-精度和FLOPS-精度曲線,與其他ConvNets相比,本文的按比例排列的EfficientNet模型以更少的參數和FLOPS獲得了更好的精度。
-
FLOPS vs. ImageNet Accuracy
-
與圖Model Size vs. ImageNet Accuracy類似,只是它比較的是FLOPS而不是模型大小。
-
值得注意的是,本文的EfficientNet模型不僅體積小,而且計算成本更低。例如,本文的EfficientNet-B3比ResNeXt101(Xie等人,2017)使用18倍的FLOPS實現了更高的精度。
-
為了驗證延遲,本文還測量了幾個有代表性的CovNets在實際CPU上的推理延遲,如下表所示,本文報告了20次運行的平均延遲。
-
Inference Latency Comparison:延時是在英特爾至強CPU E5-2690的單核上用批處理量1測得的。
-
本文的EfficientNet-B1比廣泛使用的ResNet-152快5.7倍,而EfficientNet-B7比GPipe(Huang等人,2018)快6.1倍,這表明本文的EfficientNets在實際硬件上確實很快速。
Transfer Learning Results for EfficientNet
-
本文還在一列常用的遷移學習數據集上評估了本文的EfficientNet,如下表所示。本文借用(Kornblith等人,2019)和(Huang等人,2018)的相同訓練設置,采取ImageNet預訓練的檢查點,在新的數據集上進行微調:
-
Transfer Learning Datasets.Transfer Learning Results for EfficientNet
-
下表顯示了遷移學習的性能:
-
(1)與公開的可用模型,如NASNet-A(Zoph等人,2018)和Inception-v4(Szegedy等人,2017)相比,本文的EfficientNet模型以平均4.7倍(最多21倍)的參數減少實現了更好的準確性。
-
(2)與先進的模型相比,包括動態合成訓練數據的DAT(Ngiam等人,2018)和用專門的流水線并行訓練的GPipe(Huang等人,2018),本文的EfficientNet模型在8個數據集中的5個仍然超過了它們的準確性,但使用的參數減少了9.6倍
-
- EfficientNet Performance Results on Transfer Learning Datasets.
- 本文擴展的EfficientNet模型在8個數據集中的5個取得了新的最先進的準確性,參數平均減少9.6倍。
- GPipe(Huang等人,2018)用專門的流水線并行性庫訓練巨型模型。
- DAT表示領域自適應遷移學習(Ngiam等人,2018)。這里本文只比較基于ImageNet的遷移學習結果。
- NASNet(Zoph等人,2018)、Inception-v4(Szegedy等人,2017)、ResNet-152(He等人,2016)的傳輸精度和#參數來自(Kornblith等人,2019)。
-
-
下圖比較了各種模型的準確性-參數曲線。一般來說,本文的EfficientNets在參數較少的情況下,始終比現有的模型,包括ResNet(He等人,2016)、DenseNet(Huang等人,2017)、Inception(Szegedy等人,2017)和NASNet(Zoph等人,2018)取得更好的準確性。
-
Model Parameters vs. Transfer Learning Accuracy
-
所有模型都在ImageNet上進行了預訓練,并在新數據集上進行了微調。
Discussion
- 為了區分本文提出的縮放方法與EfficientNet架構的貢獻,下圖比較了不同縮放方法對同一EfficientNet-B0基線網絡的ImageNet性能。
-
Scaling Up EfficientNet-B0 with Different Methods.
- 一般來說,所有的縮放方法都是以更多的FLOPS為代價來提高準確性,但是本文的復合縮放方法可以進一步提高準確性,比其他單一維度的縮放方法提高2.5%,這說明本文提出的復合縮放的重要性。
- 為了進一步了解為什么本文的復合縮放方法比其他方法更好,下圖比較了幾個具有代表性的模型的不同縮放方法的類激活圖(Zhou等人,2016)。
-
不同縮放方法的模型的類激活圖(CAM)(Zhou等人,2016)–本文的復合縮放方法使縮放后的模型(最后一欄)集中在更多的相關區域,有更多的物體細節。模型細節見下表。
-
上圖中使用的比例模型。
- 所有這些模型都是從同一基線上進行縮放的,它們的統計數字見上表。圖像是從ImageNet驗證集中隨機抽取的。如圖所示,復合縮放的模型傾向于關注具有更多物體細節的相關區域,而其他模型要么缺乏物體細節,要么無法捕獲圖像中的所有物體。
Conclusion
- 在本文中,本文系統地研究了ConvNet的擴展,發現仔細平衡網絡的寬度、深度和分辨率是一個重要但缺失的部分,使模型無法獲得更好的準確性和效率。
- 為了解決這個問題,本文提出了一種簡單而高效的復合擴展方法,它使我們能夠以一種更有準則的方式輕松地將基線ConvNet擴展到任何目標資源限制,同時保持模型的效率。
- 在這種復合擴展方法的支持下,本文證明了一個移動版的EfficientNet模型可以非常有效地擴展,在ImageNet和五個常用的遷移學習數據集上,以較少的參數和FLOPs超過了最先進的精度。
Appendix
- 自2017年以來,大多數研究論文只報告和比較ImageNet的驗證準確性;本文也遵循這一慣例,以便更好地進行比較。此外,還通過將本文對100k測試集圖像的預測提交到http://image-net.org,驗證了測試精度;結果見下表。正如預期的那樣,測試精度與驗證精度非常接近。
-
ImageNet驗證與測試的Top-1/5準確率。
總結
以上是生活随笔為你收集整理的【读点论文】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks网络结构要像身材一样匀称且体量和处理能力匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拥有ISO26262认证的软件工具清单
- 下一篇: 成长型企业的好帮手:超融合小身材却有大能