EfficientNetV2:更小,更快,更好的EfficientNet
轉(zhuǎn)自 | AI公園
編譯 | ronghuaiyang
論文:https://arxiv.org/pdf/2104.00298.pdf
代碼:https://github.com/google/automl/efficientnetv2
通過(guò)漸進(jìn)學(xué)習(xí),我們的EfficientNetV2在ImageNet和CIFAR/Cars/Flowers數(shù)據(jù)集上顯著優(yōu)于之前的模型。通過(guò)在相同的ImageNet21k上進(jìn)行預(yù)訓(xùn)練,我們的EfficientNetV2在ImageNet ILSVRC2012上實(shí)現(xiàn)了87.3%的top1精度,在使用相同的計(jì)算資源進(jìn)行5到11倍的訓(xùn)練時(shí),比最近的ViT的準(zhǔn)確率高出2.0%。代碼可以在https://github.com/google/automl/efficientnetv2上找到。
EfficientNets已經(jīng)成為高質(zhì)量和快速圖像分類的重要手段。它們是兩年前發(fā)布的,非常受歡迎,因?yàn)樗鼈兊囊?guī)模讓它們的訓(xùn)練速度比其他網(wǎng)絡(luò)快得多。幾天前谷歌發(fā)布了EfficientNetV2,在訓(xùn)練速度和準(zhǔn)確性方面都有了很大的提高。在本文中,我們將探索這個(gè)新的EfficientNet是如何對(duì)之前的一個(gè)進(jìn)行改進(jìn)的。
性能更好的網(wǎng)絡(luò)(如DenseNets和EfficientNets)的主要基礎(chǔ)是用更少的參數(shù)實(shí)現(xiàn)更好的性能。當(dāng)你減少參數(shù)的數(shù)量時(shí),你通常會(huì)得到很多好處,例如更小的模型尺寸使它們更容易放到內(nèi)存中。然而,這通常會(huì)降低性能。因此,主要的挑戰(zhàn)是在不降低性能的情況下減少參數(shù)的數(shù)量。
這一挑戰(zhàn)目前主要集中在神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)搜索(NAS)這一日益成為熱點(diǎn)的領(lǐng)域。在最優(yōu)情況下,我們給某個(gè)神經(jīng)網(wǎng)絡(luò)一個(gè)問(wèn)題描述,然后它就會(huì)給出這個(gè)問(wèn)題的最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)。
我不想在這篇文章中討論EfficientNets 。但是,我想提醒你EfficientNets的概念,這樣我們就可以精確地指出在架構(gòu)上的主要差異,從而使性能更好。EfficientNets使用NAS來(lái)構(gòu)建一個(gè)基線網(wǎng)絡(luò)(B0),然后他們使用“復(fù)合擴(kuò)展”來(lái)增加網(wǎng)絡(luò)的容量,而不需要大幅增加參數(shù)的數(shù)量。在這種情況下,最重要的度量指標(biāo)是FLOPS(每秒浮點(diǎn)運(yùn)算次數(shù)),當(dāng)然還有參數(shù)的數(shù)量。
1. 漸進(jìn)式訓(xùn)練

EfficientNetV2使用了漸進(jìn)式學(xué)習(xí)的概念,這意味著盡管在訓(xùn)練開(kāi)始時(shí)圖像大小最初很小,但它們逐漸增大。這個(gè)解決方案源于這樣一個(gè)事實(shí),即EfficientNets的訓(xùn)練速度在大圖像尺寸時(shí)開(kāi)始受到影響。
漸進(jìn)式學(xué)習(xí)并不是一個(gè)新概念,它在以前已經(jīng)被使用過(guò)。問(wèn)題是,以前使用的時(shí)候,相同的正則化效果被用于不同大小的圖像。EfficientNetV2的作者認(rèn)為這降低了網(wǎng)絡(luò)容量和性能。這就是為什么他們會(huì)隨著圖像大小的增加而動(dòng)態(tài)增加正規(guī)化來(lái)解決這個(gè)問(wèn)題。
如果你仔細(xì)想想,這很有道理。在小圖像上過(guò)度正則化會(huì)導(dǎo)致擬合不足,而在大圖像上過(guò)度正則化會(huì)導(dǎo)致過(guò)擬合。
通過(guò)改進(jìn)的漸進(jìn)學(xué)習(xí),我們的EfficientNetV2在ImageNet、CIFAR-10、CIFAR- 100、Cars和Flowers數(shù)據(jù)集上取得了強(qiáng)大的結(jié)果。在ImageNet上,我們實(shí)現(xiàn)了85.7%的top-1精度,同時(shí)訓(xùn)練速度提高了3 - 9倍,比以前的模型小6.8倍
2. 在MB Conv層上構(gòu)建Fused-MB Conv層
EfficientNets使用了一個(gè)稱為“depth convolution layer”的卷積層,這些層有較少的參數(shù)和FLOPS,但它們不能充分利用GPU/CPU。為了解決這一問(wèn)題,最近發(fā)表了一篇題為“MobileDets: Searching for Object Detection Architectures for Mobile accelerator”的論文,該論文通過(guò)一個(gè)名為“Fuse-MB Conv layer”的新層解決了這一問(wèn)題。這個(gè)新層被使用在這里的EfficientNetV2上。然而,由于其參數(shù)較多,不能簡(jiǎn)單地將所有舊的MB Conv層都替換成Fused-MB Conv層。
這就是為什么他們使用訓(xùn)練感知NAS來(lái)動(dòng)態(tài)搜索fused和常規(guī)MB Conv層的最佳組合。NAS實(shí)驗(yàn)結(jié)果表明,在較小的模型中,早期將部分MB Conv層替換為fused層可以獲得更好的性能。研究還表明,MB Conv層(沿網(wǎng)絡(luò))的擴(kuò)展比越小越好。最后,它表明更小的內(nèi)核大小和更多的層是更好的。

3. 一個(gè)更加動(dòng)態(tài)的方法去擴(kuò)展
我認(rèn)為這里值得學(xué)習(xí)的一個(gè)主要有價(jià)值的想法是他們改進(jìn)網(wǎng)絡(luò)的方法。我認(rèn)為總結(jié)這一方法的最好方法是首先用EfficientNet來(lái)查看問(wèn)題,這是顯而易見(jiàn)的,但接下來(lái)的步驟是開(kāi)始制定一些更動(dòng)態(tài)的規(guī)則和概念,以便更好地適應(yīng)目標(biāo)和目的。我們首先在漸進(jìn)式學(xué)習(xí)中看到了這一點(diǎn),當(dāng)他們使正則化更加動(dòng)態(tài),以便更好地適應(yīng)圖像大小,提高了表現(xiàn)。
我們現(xiàn)在看到這種方法再次被用于擴(kuò)展網(wǎng)絡(luò)。EfficientNet使用一個(gè)簡(jiǎn)單的復(fù)合縮放規(guī)則,均勻地?cái)U(kuò)大所有stages。EfficientNetV2的作者指出這是不必要的,因?yàn)椴⒉皇撬械碾A段都需要通過(guò)擴(kuò)展來(lái)提高性能。這就是為什么他們使用非統(tǒng)一的擴(kuò)展策略在后期逐步添加更多層的原因。他們還添加了一個(gè)縮放規(guī)則來(lái)限制最大的圖像大小,因?yàn)镋fficientNets傾向于積極地將圖像大小放大。
我認(rèn)為這背后的主要原因是,早期的層并不需要擴(kuò)展,因?yàn)樵谶@個(gè)早期階段,網(wǎng)絡(luò)只關(guān)注高級(jí)特征。然而,當(dāng)我們深入到網(wǎng)絡(luò)的更深層,并開(kāi)始研究低級(jí)特征時(shí),我們將需要更大的層來(lái)完全消化這些細(xì)節(jié)。

英文原文:https://towardsdatascience.com/google-releases-efficientnetv2-a-smaller-faster-and-better-efficientnet-673a77bdd43c
往期精彩:
【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf
【原創(chuàng)首發(fā)】深度學(xué)習(xí)語(yǔ)義分割理論與實(shí)戰(zhàn)指南.pdf
算法工程師的日常,一定不能脫離產(chǎn)業(yè)實(shí)踐
技術(shù)人要學(xué)會(huì)自我營(yíng)銷
求個(gè)在看
