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