天天看點

深度學習-EfficientNet算法總結

個人微信公衆号:AI研習圖書館

ID:(Art-Intelligence)

歡迎關注,交流學習,共同進步~

深度學習-EfficientNet算法總結

1. 引言

EfficientNet是谷歌2019年的新論文。

文章:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (ICML 2019 )

論文連結:https://arxiv.org/abs/1905.11946

代碼連結:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

第三方實作的PyTorch代碼:https://github.com/lukemelas/EfficientNet-PyTorch

這篇論文主要講述了如何利用複合系數統一縮放模型的所有次元,達到精度最高和效率最高。符合系數包括w,d,r,其中,w表示卷積核大小,決定了感受野大小;d表示神經網絡的深度;r表示分辨率大小。

2. 算法筆記

2.1 摘要

卷積神經網絡通常都是先在固定資源預算下開發設計,然後如果資源有多餘的話再将模型結構放大以便獲得更好的精度。在本篇論文中,我們系統地研究了模型縮放并且仔細驗證了網絡深度、寬度和分辨率之間的平衡可以導緻更好的性能表現。基于這樣的觀察,我們提出了一種新的縮放方法——使用一個簡單高效的複合系數來完成對深度/寬度/分辨率所有次元的統一縮放。我們在MobileNets和ResNet上展示了這種縮放方法的高效性。

為了進一步研究,我們使用神經架構搜尋設計了一個baseline網絡,并且将模型放大獲得一系列模型,我們稱之為EfficientNets,它的精度和效率比之前所有的卷積網絡都好。尤其是我們的EfficientNet-B7在ImageNet上獲得了最先進的 84.4%的top-1精度 和 97.1%的top-5精度,同時比之前最好的卷積網絡大小縮小了8.4倍、速度提高了6.1倍。我們的EfficientNets也可以很好的遷移,并且實作了最先進的精度——CIFAR-100(91.7%)、Flowers(98.8%)、其他3個遷移學習資料集。

2.2 文章重點總結

  1. 目前通用的幾種方法是放大CNN的深度、寬度和分辨率,在之前都是單獨放大這三個次元中的一個,盡管任意放大兩個或者三個次元也是可能的,但是任意縮放需要繁瑣的人工調參同時可能産生的是一個次優的精度和效率。
  2. 在本篇論文中,我們想要研究和重新思考放大CNN的過程,尤其地,我們調查了一個中心問題:是否存在一個原則性的放大CNN的方法實作更好的精度和效率?我們的實驗研究表明了平衡深度、寬度和分辨率這三個次元是至關重要的,令人驚訝的是這樣的平衡可以通過簡單的使用一組常量比率來縮放每一個次元,基于這個觀察,我們提出了一個簡單高效的複合縮放方法,不像傳統實踐中任意縮放這些因子,我們的方法使用一組固定的縮放系數統一縮放網絡深度、寬度和分辨率。
  3. 在已經存在的MobileNets和ResNets上展示了我們的縮放方法可以工作得很好,值得注意的是,模型縮放的高效性嚴重地依賴于baseline網絡,為了進一步研究,我們使用網絡結構搜尋發展了一種新的baseline網絡,然後将它縮放來獲得一系列模型,稱之為EfficientNets。

2.3 個人總結

本人了解的筆記如下:

  1. 文中總結 了我們常用的三種網絡調節方式:增大感受野w,增大網絡深度d,增大分辨率大小r,三種方式示意圖如下:
    深度學習-EfficientNet算法總結
    其中,(a)為基線網絡,也可以了解為小網絡;(b)為增大感受野的方式擴充網絡;©為增大網絡深度d的方式擴充網絡;(d)為增大分辨率r的方式擴充網絡;(e)為本文所提出的混合參數擴充方式。
  2. 文中試驗測試,調查了w/r/d在各種情況下的準确率和效率的互相關系曲線,如下圖所示:
    深度學習-EfficientNet算法總結
    個人總結規律如下:

2.1,在r和w大小不變的情況下,随着d的增大,準确率沒有太大的差異;

2.2,在d和w不變的情況下,随着r的增大,準确率有較大提升;

2.3,r和d不變的情況下,随着w的增大,準确率先有較大提升,然後趨于平緩,往後在無太大提升;

  1. 複合系數的數學模型

    文中給出了一般卷積的數學模型如下:

    深度學習-EfficientNet算法總結

其中H,W為卷積核大小,C為通道數,X為輸入tensor;

則複合系數的确定轉為如下的優化問題:

深度學習-EfficientNet算法總結

調節d,w,r使得滿足記憶體Memory和浮點數量都小于門檻值要求;

為了達到這個目标,文中提出了如下的方法:

深度學習-EfficientNet算法總結

對于這個方法,我們可以通過一下兩步來确定d,w,r參數:

深度學習-EfficientNet算法總結

第一步我們可以通過基線網絡來調節确定最佳的,然後,用這個參數将基準網絡擴充或放大到大的網絡,這樣就可以使大網絡也具有較高的準确率和效率。同樣,我們也可以将基線網絡擴充到其他網絡,使用同樣的方法來放大;

論文中基線模型使用的是 mobile inverted bottleneck convolution(MBConv),類似于 MobileNetV2 和 MnasNet,但是由于 FLOP 預算增加,該模型較大。于是,研究人員縮放該基線模型,得到了EfficientNets模型,它的網絡示意圖如下:

深度學習-EfficientNet算法總結

最後,研究人員對EfficientNets的效率進行了測試,結果如下:

深度學習-EfficientNet算法總結

對比EfficientNets和已有的CNN模型,EfficientNet 模型要比已有 CNN 模型準确率更高、效率更高,其參數量和 FLOPS 都下降了一個數量級,EfficientNet-B7 在 ImageNet 上獲得了目前最優的 84.4% top-1 / 97.1% top-5 準确率,而且CPU 推斷速度是 Gpipe 的 6.1 倍,而且模型大小方面,EfficientNet-B7卻比其他模型要小得多,同時,還對比了ResNet-50,準确率也是勝出一籌(ResNet-50 76.3%,EfficientNet-B4 82.6%)。

EffieicntNet的研究思路大家可以學習一下,在這個時代,創新性思維顯得彌足珍貴,心平氣和,好好研究論文吧~

您的支援,是我不斷創作的最大動力~

歡迎點贊,關注,留言交流~

深度學習,樂此不疲~

個人微信公衆号:AI研習,歡迎關注~

深度學習-EfficientNet算法總結

繼續閱讀