速度與精度的結(jié)合 - EfficientNet 詳解

初識

本篇將為你介紹來自 google 的 EfficientNet骤公,論文提出了一種多維度混合的模型放縮方法量蕊。論文鏈接(文末有代碼):

https://arxiv.org/pdf/1905.11946.pdf?arxiv.org

作者希望找到一個可以同時兼顧速度與精度的模型放縮方法坞琴,為此,作者重新審視了前人提出的模型放縮的幾個維度:網(wǎng)絡(luò)深度、網(wǎng)絡(luò)寬度馅袁、圖像分辨率缎除,前人的文章多是放大其中的一個維度以達到更高的準確率严就,比如 ResNet-18 到 ResNet-152 是通過增加網(wǎng)絡(luò)深度的方法來提高準確率。

作者跳出了前人對放縮模型的理解器罐,從一個高度去審視這些放縮維度梢为。作者認為這三個維度之間是互相影響的并探索出了三者之間最好的組合,在此基礎(chǔ)上提出了最新的網(wǎng)絡(luò) EfficientNet轰坊,該網(wǎng)絡(luò)的表現(xiàn)如下:

模型表現(xiàn)對比圖

圖中紅色的那條就是 EfficientNet 的曲線铸董,橫軸為模型大小,縱軸為準確率肴沫。光看這張圖你就知道 EfficientNet 有多強悍了粟害,看看那些我們熟悉的名字, Resnet颤芬,Xception悲幅,ResNeXt套鹅,可以說是被碾壓了。在準確率上汰具,EfficientNet 只比之前的 SOTA 模型 GPipe 提高了 0.1%卓鹿,為了達到這個準確率 GPipe 用了 556M 參數(shù)而 EfficientNet 只用了 66M,恐怖如斯郁副!在實際使用中這 0.1% 的準確率我們可能壓根感受不到减牺,但是速度的提升確是實打?qū)嵉模? 倍的速度提升大大提高了網(wǎng)絡(luò)的實用性以及工業(yè)落地可能。

問題抽象

下面要將這個問題用公式的方式表示出來存谎,符號會比較多拔疚,不過并不難理解。我們將整個卷積網(wǎng)絡(luò)稱為 N既荚,它的第 i 個卷積層可以看作是下面的函數(shù)映射:
Y_i=F_i(X_i)

Y_i為輸出張量稚失,X_i為輸入張量,設(shè)其維度為 <H_i, W_i, C_i> (這里為了方便敘述省略了 Batch 維度)恰聘,那么整個卷積網(wǎng)絡(luò) N句各,由 k 個卷積層組成,可以表示為:
N=F_k \odot ...\odot F_2 \odot F_1(X_1) = \odot_{j=1...k} F_j(X_1)

實際中晴叨,通常將多個結(jié)構(gòu)相同的卷積層稱為一個 stage凿宾,例如 ResNet 可以分為 5 個 stage,每個 stage 中的卷積層結(jié)構(gòu)相同(除了第一層為降采樣層)兼蕊。以 stage 為單位可以將卷積網(wǎng)絡(luò) N 表示為:

image

其中初厚,下標 i(從 1 到 s) 表示 stage 的序號,F^{L_i}_i表示第 i 個 stage 孙技,它由卷積層 F_i 重復 L_i 次構(gòu)成产禾,<H_i, W_i, C_i> 表示該 stage 輸入 tensor 的維度。

為了減小搜索空間牵啦,作者固定了網(wǎng)絡(luò)的基本結(jié)構(gòu)亚情,而只變動上面提到的三個放縮維度,網(wǎng)絡(luò)深度(Li)哈雏,網(wǎng)絡(luò)寬度(Ci)楞件,輸入分辨率大小(Hi, Wi)。然而就算只搜索這三個維度裳瘪,搜索空間也很大履因,因此作者又加了一個限制,網(wǎng)絡(luò)的放大只能在初識網(wǎng)絡(luò)(就是后面的 EfficientNet-B0)的基礎(chǔ)上乘上常數(shù)倍率盹愚,那么我們只需要優(yōu)化那些倍率就好了,以此抽象出最終的數(shù)學模型:

image

其中站故,w皆怕、d毅舆、r 分別是網(wǎng)絡(luò)寬度,網(wǎng)絡(luò)高度愈腾,分辨率的倍率憋活。

實驗

上面這個問題的難點在于,三個倍率之間有內(nèi)在聯(lián)系虱黄,比如更高分辨率的圖片就需要更深的網(wǎng)絡(luò)來增大感受野捕捉特征悦即。因此作者做了兩個實驗(實際應該多得多)來驗證,第一個實驗橱乱,對三個維度固定兩個辜梳,只放大其中一個,得到結(jié)果如下:

image

圖中從左至右分別是只放大網(wǎng)絡(luò)寬度(width, w 為放大倍率)泳叠、網(wǎng)絡(luò)深度(depth, d 為放大倍率)作瞄、圖像分辨率(resolution, r 為放大倍率) 的結(jié)果,可以觀察到單個維度的放大最高精度只在 80 左右危纫。本次實驗作者得出一個觀點:三個維度中任一維度的放大都可以帶來精度的提升宗挥,但隨著倍率越來越大,提升卻越來越小种蝶。

于是作者做了第二個實驗契耿,嘗試在不同的 d, r 組合下變動 w,得到下圖:

image

從實驗結(jié)果可以看出最高精度比之前已經(jīng)有所提升螃征,且不同的組合效果還不一樣搪桂,最高可以到 82 左右。作者又得到一個觀點会傲,得到更高的精度以及效率的關(guān)鍵是平衡網(wǎng)絡(luò)寬度锅棕,網(wǎng)絡(luò)深度,圖像分辨率三個維度的放縮倍率(d, r, w)淌山。

由此裸燎,作者提出了一種混合維度放大法(compound scaling method),該方法使用一個混合系數(shù) [圖片上傳失敗...(image-70ab47-1570798285064)]

來決定三個維度的放大倍率:

image

其中泼疑,\alpha, \beta,\gamma 均為常數(shù)(不是無限大的因為三者對應了計算量)德绿,可通過網(wǎng)格搜索獲得⊥松混合系數(shù) \phi 可以人工調(diào)節(jié)移稳。考慮到如果網(wǎng)絡(luò)深度翻番那么對應計算量會翻番会油,而網(wǎng)絡(luò)寬度或者圖像分辨率翻番對應計算量會翻 4 番个粱,即卷積操作的計算量(FLOPS) 與 d,w^2,r^2 成正比,因此上圖中的約束條件中有兩個平方項翻翩。在該約束條件下都许,指定混合系數(shù) \phi 之后稻薇,網(wǎng)絡(luò)的計算量大概會是之前的 2^\phi 倍。

網(wǎng)絡(luò)結(jié)構(gòu)

網(wǎng)絡(luò)結(jié)構(gòu)作者主要借鑒了 MnasNet胶征,采取了同時優(yōu)化精度(ACC)以及計算量(FLOPS)的方法塞椎,由此產(chǎn)生了初代 EfficientNet-B0,其結(jié)構(gòu)如下圖:

image

有了初代的網(wǎng)絡(luò)結(jié)構(gòu)之后睛低,放大就分為下面兩步:

  • 第一步案狠,首先固定 \phi 為 1,即設(shè)定計算量為原來的 2 倍钱雷,在這樣一個小模型上做網(wǎng)格搜索(grid search)骂铁,得到了最佳系數(shù)為 \alpha=1.2,\beta=1.1,\gamma=1.15
  • 第二步急波,固定 \alpha=1.2,\beta=1.1,\gamma=1.15从铲,使用不同的混合系數(shù) \phi 來放大初代網(wǎng)絡(luò)得到 EfficientNet-B1 ~ EfficientNet-B7。

作者選擇只在小模型上進行網(wǎng)絡(luò)搜索澄暮,大大減少了計算量名段。因為在大模型上進行網(wǎng)格搜索的成本實在是太高了。

網(wǎng)絡(luò)表現(xiàn)

跟其他網(wǎng)絡(luò)的對比:

image

作者還用該方法放大了常用網(wǎng)絡(luò) MobileNets和 ResNets泣懊,在計算量相當?shù)那闆r下都得到了比之前更高的精度伸辟。這一部分概括起來就是我比你快,還比你準馍刮。

總結(jié)

論文提出的新網(wǎng)絡(luò)兼顧了速度和精度信夫,非常實用,可以作為通用的 baseline卡啰,能換的就換上吧静稻。

代碼

pytorch:https://github.com/lukemelas/EfficientNet-PyTorch

tensorflow:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

keras: https://github.com/qubvel/efficientnet

最后,求贊求關(guān)注匈辱,歡迎關(guān)注我的微信公眾號[MachineLearning學習之路] 振湾,深度學習 & CV 方向的童鞋不要錯過!亡脸!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末押搪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浅碾,更是在濱河造成了極大的恐慌大州,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垂谢,死亡現(xiàn)場離奇詭異厦画,居然都是意外死亡,警方通過查閱死者的電腦和手機滥朱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門根暑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娃豹,“玉大人,你說我怎么就攤上這事购裙。” “怎么了鹃栽?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵躏率,是天一觀的道長。 經(jīng)常有香客問我民鼓,道長薇芝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任丰嘉,我火速辦了婚禮夯到,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饮亏。我一直安慰自己耍贾,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布路幸。 她就那樣靜靜地躺著荐开,像睡著了一般。 火紅的嫁衣襯著肌膚如雪简肴。 梳的紋絲不亂的頭發(fā)上晃听,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音砰识,去河邊找鬼能扒。 笑死,一個胖子當著我的面吹牛辫狼,可吹牛的內(nèi)容都是我干的初斑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼予借,長吁一口氣:“原來是場噩夢啊……” “哼越平!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灵迫,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤秦叛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瀑粥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挣跋,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年狞换,在試婚紗的時候發(fā)現(xiàn)自己被綠了避咆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舟肉。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖查库,靈堂內(nèi)的尸體忽然破棺而出路媚,到底是詐尸還是另有隱情,我是刑警寧澤樊销,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布整慎,位于F島的核電站,受9級特大地震影響围苫,放射性物質(zhì)發(fā)生泄漏裤园。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一剂府、第九天 我趴在偏房一處隱蔽的房頂上張望拧揽。 院中可真熱鬧,春花似錦腺占、人聲如沸淤袜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饮怯。三九已至,卻和暖如春嚎研,著一層夾襖步出監(jiān)牢的瞬間蓖墅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工临扮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留论矾,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓杆勇,卻偏偏與公主長得像贪壳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚜退,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容