就上一篇博客如何寫論文、讀(分享匯報(bào))論文,在《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》進(jìn)行實(shí)踐。
《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》是一篇由Mingxing Tan和Quoc V. Le等人于2019年提出的論文,主要關(guān)注卷積神經(jīng)網(wǎng)絡(luò)(CNN)的模型縮放問題。
論文原文
論文代碼
任務(wù)是什么:
論文的主要任務(wù)是:
? ? ? ? 1. 在移動(dòng)設(shè)備和邊緣設(shè)備日益增多的時(shí)代,期望實(shí)現(xiàn)更好的性能、高效且輕量的網(wǎng)絡(luò)。
? ? ? ? 2. 探索卷積神經(jīng)網(wǎng)絡(luò)(ConvNets)的模型縮放方法。在計(jì)算資源有限的情況下,通過重新思考模型縮放的方式來 提高卷積神經(jīng)網(wǎng)絡(luò)的效率和性能。
為什么會(huì)有這個(gè)任務(wù):
? ? ? ? 1. 獲得一個(gè)好的效果又很多方法,比如提出一些新的架構(gòu)或者跳躍鏈接這種idea。
? ? ? ? 2. 也可以通過模型縮放獲取更大更深的模型
? ? ? ? ? ? ? ? 1) 模型深度和通道數(shù): 自從AlexNet贏得2012的ImageNet競(jìng)賽,ConvNets隨著變得更大獲得了更高的精度,GoogleNet使用6.8M的參數(shù)獲得了74.8%的top-1精度,SENet使用145M參數(shù)獲得了82.7%的top-1精度。GPipe進(jìn)一步提高了精度,通過將baseline模型放大四倍,使用了557M的參數(shù)獲得了84.3%的top-1驗(yàn)證精度:它如此的大以至于需要將網(wǎng)絡(luò)劃分使用特定的并行化手段訓(xùn)練,然后將每一部分傳遞到一個(gè)不同的加速器。另一個(gè)我們常聽到的ResNet可以通過使用更多層(加深層數(shù)18->200)把ResNet-18放大到ResNet-200
? ? ? ? ? ? ? ? 2) 分辨率: imageNet模型通常是224*224,inception v3使用299*299。
? ? ? ? 3. 不像常規(guī)的ConvNet設(shè)計(jì),主要專注于尋找最好的層架構(gòu)Fi(大多數(shù)網(wǎng)絡(luò),例如resnet,傾向于向體系結(jié)構(gòu)中假如新的想法,比如skip connection、同時(shí)使用不同的卷積核)。模型縮放試圖擴(kuò)大網(wǎng)絡(luò)長度(Li),寬度(Ci),和分辨率(Wi),不改變Fi在基線網(wǎng)絡(luò)中的預(yù)定義。通過固定Fi(Fi其實(shí)是可以任意選擇基礎(chǔ)網(wǎng)絡(luò)),模型縮放簡化了新的資源約束的設(shè)計(jì)問題,但它仍然是一個(gè)較大的設(shè)計(jì)空間來探索每一層的不同的Li, Ci,Hi, Wi。為了進(jìn)一步減少設(shè)計(jì)空間(簡化設(shè)計(jì)),我們限制了所有層必須以恒定的比例均勻縮放。我們的目標(biāo)是對(duì)任何給定的資源約束最大化模型的準(zhǔn)確性
? ? ? ? ?在本文中,我們系統(tǒng)地研究了模型的縮放,并確定了仔細(xì)平衡網(wǎng)絡(luò)的深度、寬度(通道數(shù))和分辨率(the input image size)可以導(dǎo)致更好的性能。
? ? ? ? ?基于這一觀察結(jié)果,我們提出了一種新的尺度方法,該方法使用簡單而高效的復(fù)合系數(shù)均勻地調(diào)整深度/寬度/分辨率的所有維度。我們證明了該方法在放大圖上的有效性手機(jī)網(wǎng)和ResNet。
???
現(xiàn)有方法面臨的問題:
? ? ? ? 1. 深度網(wǎng)絡(luò)的參數(shù)過多,模型壓縮是一種通用的方法減小模型大小——平衡精度和效率。
? ? ? ? 2. 傳統(tǒng)的模型縮放方法通常是在固定的資源預(yù)算下開發(fā)ConvNets,然后在有更多資源的情況下,按照某一個(gè)維度(深度、寬度或分辨率)進(jìn)行縮放,以提高模型的準(zhǔn)確率。在之前大多單獨(dú)放大這三個(gè)維度中的一個(gè):
? ? ? ? ? ? ? ? 1)?寬度:
? ? ? ? ? ? ? ? ? ? ? ? · 更寬的網(wǎng)絡(luò)可以捕捉到更細(xì)粒度的特征從而易于訓(xùn)練。然而,非常寬而又很淺的網(wǎng)絡(luò)在捕捉高層次特征時(shí)有困難,我們的實(shí)驗(yàn)結(jié)果(圖中左分圖)表明了當(dāng)網(wǎng)絡(luò)隨著w變大時(shí),精度很快飽和了。
? ? ? ? ? ? ? ? ? ? ? ? · 如果只增加網(wǎng)絡(luò)寬度,而不增加網(wǎng)絡(luò)深度和分辨率,那么網(wǎng)絡(luò)可能會(huì)遇到梯度消失(gradient vanishing)或過擬合(overfitting)的問題;
? ? ? ? ? ? ? ? 2)?深度:
? ? ? ? ? ? ? ? ? ? ? ? · 直覺上更深的網(wǎng)絡(luò)可以捕獲到更豐富和更復(fù)雜的特征,在新任務(wù)上也可以泛化的更好。但是深層網(wǎng)絡(luò)的精度回報(bào)減弱了展示了我們?cè)谑褂貌煌纳疃认禂?shù)d縮放網(wǎng)絡(luò)的研究結(jié)果,更近一步的表明了精度回報(bào)的減弱問題。
? ? ? ? ? ? ? ? ? ? ? ? · 如果只增加網(wǎng)絡(luò)深度,而不增加網(wǎng)絡(luò)寬度和分辨率,那么網(wǎng)絡(luò)可能會(huì)遇到信息瓶頸(information bottleneck)或欠擬合(underfitting)的問題;
? ? ? ? ? ? ? ? 3)?分辨率:
? ? ? ? ? ? ? ? ? ? ? ? · 使用更高分辨率的輸入圖像,ConvNets可能可以捕捉到更細(xì)粒度的模式。從最早的 224x224,現(xiàn)在有些ConvNets為了獲得更高的精度選擇使用 229x229 或者 331x331。目前,GPipe使用 480x480 的分辨率獲得了最先進(jìn)的ImageNet精度,更好的精度比如 600x600 也被廣泛使用在目標(biāo)檢測(cè)網(wǎng)絡(luò)中。圖中右分圖展示了縮放網(wǎng)絡(luò)分辨率對(duì)精度的影響,同樣可以看到在非常高的分辨率時(shí)網(wǎng)絡(luò)精度回報(bào)會(huì)減弱。
? ? ? ? ? ? ? ? ? ? ? ? · 如果只增加分辨率,而不增加網(wǎng)絡(luò)深度和寬度,那么網(wǎng)絡(luò)可能會(huì)遇到計(jì)算冗余(computational redundancy)或特征稀疏(feature sparsity)的問題。
對(duì)這些單個(gè)維度的縮放結(jié)果,得到觀察一:對(duì)網(wǎng)絡(luò)深度、寬度和分辨率中的任何溫度進(jìn)行縮放都可以提高精度,但是當(dāng)模型足夠大時(shí),這種放大的收益會(huì)減弱。
????????3. 當(dāng)時(shí),神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索在設(shè)計(jì)高效的ConvNets越來越流行,并且通過廣泛搜索網(wǎng)絡(luò)寬度、深度、卷積核類型和大小得到了比手動(dòng)設(shè)計(jì)的模型更高的精度。但人們不知道怎么將這個(gè)技術(shù)應(yīng)用在更大的模型,因?yàn)樵诰薮蟮目臻g中進(jìn)行搜索(便利),成本是很大的。
????????4. 又,我們不通過搜索,而是任意放大兩個(gè)或者三個(gè)維度來獲得更大網(wǎng)絡(luò),盡管這么做也是也是可能的,但是任意縮放也同樣需要繁瑣的人工調(diào)參同時(shí)可能產(chǎn)生的是一個(gè)次優(yōu)的精度和效率。
????????5. 本篇論文旨在研究效率設(shè)計(jì)更大規(guī)模的ConvNets(effeicientNet),上面提到了,我們不可能直接搜索處一個(gè)很大的模型,那為了實(shí)現(xiàn)這個(gè)目標(biāo),我們采用模型縮放。大型模型大多聚焦于先發(fā)現(xiàn)好的基礎(chǔ)網(wǎng)絡(luò)層 ,然后再利用模型縮放在不改變預(yù)先在baseline網(wǎng)絡(luò)Fi定義好的前提下擴(kuò)展網(wǎng)絡(luò)深度 、寬度 、分辨率 。模型縮放簡化了資源約束條件,但是它仍然有一個(gè)比較大的搜索空間:從小變大三個(gè)維度都要怎么做,是否存在一個(gè)原則性的放大CNN的方法實(shí)現(xiàn)更好的精度和效率?
針對(duì)問題,提出的方法:
新的縮放方法
? ? ? ? 1. 上面提到,模型縮放簡化了資源約束條件,但是它仍然有一個(gè)比較大的搜索空間。
? ? ? ? 2. 為了更進(jìn)一步減小設(shè)計(jì)空間,我們限制所有層都統(tǒng)一以一個(gè)常量比例縮放,我們的目標(biāo)是在給定資源預(yù)算下最大化模型精度。
? ? ? ? 3. 主要困難在于最優(yōu)的d、w、r相互依賴,且各值在不同的資源約束下發(fā)生變化。由于這一困難,傳統(tǒng)的方法主要在一個(gè)維度上縮放網(wǎng)絡(luò)。
? ? ? ? 4. 我們經(jīng)驗(yàn)上可以觀察到不同縮放維度之間是不獨(dú)立的,直觀上來講,對(duì)于分辨率更高的圖像,我們應(yīng)該增加網(wǎng)絡(luò)深度,因?yàn)樾枰蟮母惺芤皝韼椭东@更多像素點(diǎn)的類似特征,同時(shí)也應(yīng)該增加網(wǎng)絡(luò)寬度來獲得更細(xì)粒度的特征。這些直覺指導(dǎo)著我們?nèi)f(xié)調(diào)平衡不同縮放維度而不是傳統(tǒng)的單個(gè)縮放維度。
? ? ? ? 5. (這塊先不說了,有點(diǎn)不太清楚)為了驗(yàn)證我們的直覺,我們?cè)诓煌木W(wǎng)絡(luò)深度和分辨率下比較了寬度變化(一條線不同的點(diǎn))的影響,如果我們?cè)?d=1.0 和 r=1.0 時(shí)僅僅縮放網(wǎng)絡(luò)寬度,精度很快就飽和了。但是在d=2.0 和 r=2.0時(shí)在相同的FLOPS(計(jì)算成本)下寬度縮放就可以獲得更好的精度。這圖中也沒有【2.0,2.0】啊,不懂。反正她的意思就是得平衡:為了追求更好的精度和效率,在連續(xù)網(wǎng)絡(luò)縮放過程中平衡網(wǎng)絡(luò)寬度、深度和分辨率的所有維度是至關(guān)重要的。(觀察二)
????????這三個(gè)維度的復(fù)合縮放同時(shí)進(jìn)行,以實(shí)現(xiàn)對(duì)模型整體的均衡優(yōu)化。動(dòng)機(jī)在于確保在每個(gè)維度上的縮放都不會(huì)使模型過于復(fù)雜,同時(shí)充分利用有限的計(jì)算資源。
? ? ? ? 6. 之前的一些工作已經(jīng)開始在追去任意縮放網(wǎng)絡(luò)深度和寬度,但是他們?nèi)匀恍枰獜?fù)雜的人工微調(diào)。
? ? ? ? 7. 論文提出了一種新的模型縮放方法。該方法使用一個(gè)簡單而有效的復(fù)合系數(shù),通過對(duì)網(wǎng)絡(luò)的深度(d)、寬度(w)和分辨率(r)進(jìn)行均衡調(diào)整,以實(shí)現(xiàn)更高效的模型。為什么這么做?作者通過系統(tǒng)地研究不同維度的縮放對(duì)模型性能的影響,實(shí)驗(yàn)發(fā)現(xiàn)在保持相同的模型復(fù)雜度下,平衡地縮放所有維度可以獲得更好的結(jié)果。具體步驟包括:
? ? ? ? ? ? ? ? 1)?這里的?α、β、γ?都是由原來的小模型上做微小的網(wǎng)格搜索決定(三個(gè)變量都給一些范圍,然后搜索哪個(gè)好)的常量系數(shù)這里的 都是由一個(gè)很小范圍的網(wǎng)絡(luò)搜索得到的常量,直觀上來講,
是一個(gè)特定的系數(shù),可以控制用于資源的使用量,
決定了具體是如何分配資源(就像fy=1,即資源擴(kuò)大2倍,那誰增加的多誰增加的少就由
決定,體現(xiàn)在三個(gè)數(shù)值的大?。?/span>的。里面的兩個(gè)約束條件怎么來的?
? ? ? ? ? ? ? ? ? ? ? ? 1. 常規(guī)卷積的計(jì)算量是和 成正比的,加倍深度(α)會(huì)使得FLOPS加倍,但是加倍寬度(β)和分辨率(γ)會(huì)使得FLOPS加4倍。由于卷積ops經(jīng)常在CNN中占據(jù)了大部分計(jì)算量,使用等式(3)縮放ConvNet將會(huì)使得整體計(jì)算量近似增加
倍。在本篇論文中,我們對(duì)任意
增加了約束
,保證整體的計(jì)算量以
增長。
? ? ? ? ? ? ? ? ? ? ? ? ? 2. 資源增多了,直覺應(yīng)該是每個(gè)維度都會(huì)增大以適配資源。
? ? ? ? ? ? ? ? 2)?如何實(shí)現(xiàn)這個(gè)復(fù)合縮放方法呀
? ? ? ? ? ? ? ? ? ? ? ? ?1. α、β、γ是用網(wǎng)格搜索的方法來確定的。網(wǎng)格搜索是一種自動(dòng)化的參數(shù)優(yōu)化技術(shù),它通過遍歷給定的參數(shù)范圍,找到最優(yōu)的參數(shù)組合。EfficientNet的作者使用了網(wǎng)格搜索來尋找最佳的α、β、γ,使得模型在給定的資源限制下達(dá)到最高的準(zhǔn)確率。
? ? ? ? ? ? ? ? ? ? ? ? ?2. 三個(gè)數(shù)對(duì)應(yīng)的fai次冪向下取余(直接int())(畢竟α、β、γ,你的模型深度寬度和分辨率可不能)
? ? ? ? ? ? ? ? ? ? ? ? ?3. 值得注意的是,直接在一個(gè)大模型上搜索得到 可能會(huì)導(dǎo)致一個(gè)更好的表現(xiàn),但是搜索成本會(huì)很高,我們的方法解決了這個(gè)問題——STEP 1時(shí)只在小的baseline網(wǎng)絡(luò)中做了一次搜索得到
,然后對(duì)于其他的模型都使用的是相同的 ,只是通過
來調(diào)整模型的大小和FLOPS。
新的baseline網(wǎng)絡(luò)
? ? ? ? 1. 因?yàn)槟P涂s放不改變baseline網(wǎng)絡(luò)中的基礎(chǔ)網(wǎng)絡(luò)層,所以有一個(gè)好的baseline網(wǎng)絡(luò)是很重要的,我們使用之前的ConvNets對(duì)我們的縮放方法做了評(píng)估,但是為了更好驗(yàn)證我們的縮放方法的高效性,我們也提出?了一種基于移動(dòng)應(yīng)用的baseline模型——EfficientNet。
? ? ? ? 2. 受到MnasNet的啟發(fā),我們也開發(fā)了一種多目標(biāo)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索(Nas)同時(shí)優(yōu)化精度和FLOPS,我們的搜索空間和MnasNet相同。同時(shí)我們的優(yōu)化目標(biāo)為 ,這里的
分別是模型m的精度和計(jì)算量,T是目標(biāo)計(jì)算量, w=-0.07是一個(gè)超參數(shù)用來權(quán)衡精度和FLOPS。不像MnasNet中的優(yōu)化目標(biāo),這里優(yōu)化的是FLOPS而不是延遲,因?yàn)槲覀儧]有說是要在特定的硬件平臺(tái)上做加速。模型由Block組成,每個(gè)Block里面的Layer是重復(fù)的,我們確定那些是值得搜索的參數(shù),然后設(shè)計(jì)合理的loss函數(shù)進(jìn)行搜索最優(yōu)結(jié)構(gòu)。
? ? ? ? 3. 我們的搜索方法得到了一個(gè)高效的網(wǎng)絡(luò),我們稱之為EfficientNet-B0,因?yàn)槲覀兪褂玫乃阉骺臻g和MnasNet相似,所以得到的網(wǎng)絡(luò)結(jié)構(gòu)也很相似,不過我們的EfficientNet-B0稍微大了點(diǎn),因?yàn)槲覀兊腇LOPS預(yù)算也比MnasNet中大(400M)。下圖展示了EfficientNet-B0的結(jié)構(gòu),它的主要構(gòu)建塊就是移動(dòng)倒置瓶頸MBConv,其網(wǎng)絡(luò)結(jié)構(gòu)如下:
? ? ? ? 4. trick
? ? ? ? ? ? ? ? 1)?MBConv(mobilenet v2) ?
? ? ? ? ? ? ? ? 2)?Squeeze-and-excitation optimization
? ? ? ? ? ? ? ? ? ? ? ? · 對(duì)于一個(gè)H??W??C的輸入,對(duì)H??W進(jìn)行平均池化(即channel方向),得到1??1??C的向量,然后對(duì)其進(jìn)行更新并經(jīng)過一個(gè)sigmoid激活使其變?yōu)閇0,1]內(nèi)的數(shù),再乘回yu
????????????????????????這個(gè)操作有點(diǎn)類似attention,它的核心是我們應(yīng)該注意哪一個(gè)通道,提出他的論文也實(shí)驗(yàn)證明是挺有用的,同時(shí)平均池化,對(duì)應(yīng)相乘,它的計(jì)算代價(jià)也不大
? ? ? ? ? ? ? ? 3)?Stochastic depth
? ? ? ? ? ? ? ? ? ? ? ? 1. 隨機(jī)消失一些層,保留傳遞其殘差鏈接
得到effecient后,如何應(yīng)用縮放呢,以分辨率的變化為例,B0是224,B1的fi是0.5,所以B1對(duì)應(yīng)使用的圖片分辨率是 int?( 224 * (1.15**0.5) )= 240 與代碼一致,單也不是嚴(yán)格按這個(gè)公式來的,比如B2, (224*1.15**1)=258,代碼是160, B2, (224*1.15**2)=296,代碼是300
實(shí)驗(yàn)結(jié)果:
? ? ? ? 1. 首先將縮放方法應(yīng)用到MobileNets和ResNets中,Table 3展示了以不同的方法縮放的ImageNet結(jié)果。與其他單一維度的縮放方法相比,我們的復(fù)合縮放方法精度提高了。
? ? ? ? 2. 本文提出的模型在imageNet上的效果(本文的方法和其他方法的優(yōu)勢(shì),體現(xiàn)網(wǎng)絡(luò)搜索在相近的性能下,參數(shù)量和計(jì)算量的優(yōu)勢(shì))
????????????????作者設(shè)計(jì)了一個(gè)新的baseline網(wǎng)絡(luò),并將模型利用提出的縮放方法進(jìn)行擴(kuò)大,得到一系列網(wǎng)絡(luò),他們的精度和效率比之前所有的卷積網(wǎng)絡(luò)都好,尤其是我們的EfficientNet-B7在ImageNet上獲得了最先進(jìn)的 84.4%的top-1精度 和 97.1%的top-5精度,同時(shí)比之前最好的卷積網(wǎng)絡(luò)大小縮小了8.4倍、速度提高了6.1倍。
? ? ? ? 3. 我們的EfficientNets也可以很好的遷移,并且在CIFAR-100(91.7%)、Flowers(98.8%)、以及其他3個(gè)遷移學(xué)習(xí)數(shù)據(jù)集實(shí)現(xiàn)了最先進(jìn)的精度。在8個(gè)數(shù)據(jù)集中的5個(gè)實(shí)現(xiàn)了新的最先進(jìn)的精度,平均參數(shù)減少了9.6倍,右邊是最好報(bào)告中的結(jié)果對(duì)比。
? ? ? ? 4. 對(duì)于Imagenet提出的模型在其他數(shù)據(jù)集上與effecientNet的對(duì)比
? ? ? ? 5. EffecientNet不同的縮放方法在ImageNet Top1的準(zhǔn)確率對(duì)比
? ? ? ? 6. (另一個(gè)挺好看的可以體現(xiàn)方法有效性的途徑)具有不同縮放方法的模型的類激活圖(CAM),越明亮代表模型越關(guān)注的區(qū)域,論文提出的復(fù)合縮放方法允許縮放模型(最后一列)關(guān)注具有更多對(duì)象細(xì)節(jié)的更相關(guān)區(qū)域。而其他模型要么缺乏對(duì)象細(xì)節(jié),要么無法捕獲圖像中的所有對(duì)象。
總結(jié)
????????論文通過在ImageNet數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)證明,EfficientNet在相同計(jì)算復(fù)雜度下,相對(duì)于先前的模型在準(zhǔn)確性和性能方面取得了顯著的提升。具體來說,EfficientNet在相同F(xiàn)LOPs(浮點(diǎn)運(yùn)算數(shù))情況下,相較于其他流行的網(wǎng)絡(luò)(如ResNet、MobileNet)在?ImageNet上取得了更好的性能。這表明EfficientNet在保持高效性的同時(shí),能夠有效提高模型的性能。文章來源:http://www.zghlxwxcb.cn/news/detail-772190.html
????????綜合來看,EfficientNet通過復(fù)合縮放的方式重新思考了模型的設(shè)計(jì),取得了在資源受限環(huán)境下更為出色的性能,成為輕量級(jí)深度學(xué)習(xí)模型設(shè)計(jì)的一個(gè)重要參考。文章來源地址http://www.zghlxwxcb.cn/news/detail-772190.html
到了這里,關(guān)于論文閱讀《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!