医療系AIエンジニアの技術メモ

ディープラーニング(主に画像系)の技術メモブログです

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

スポンサーリンク


f:id:y_kurashina:20190602180154j:plain
Fig1. EfficientNetと他のモデルの性能比較

論文URL

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

2019年6月公開

ポイント

  • モデルのスケールアップを行う場合、既存研究ではwidth(特徴量マップのチャンネル数)、depth(モデルの層数)、resolution(入力画像解像度)のいずれか1つもしくは2つだけ大きくすることが大半であったのに対し、本論文では3つのパラメータを同時に大きくすることで効果的にモデルの性能(精度、パラメータ数、FLOPS)を向上できるEfficientNetを提案。
  • EfficientNetはwidth、depth、resolutionが最小となるB0から最大となるB7まで8つのモデルがあり、同程度のパラメータ数のモデルと比べ、大幅にImageNetのTop1精度が向上している(Fig1)。
    • 既存の最高精度モデルGPipeとEfficientNet-B7を比べると、精度は+0.1%とわずかな改善にとどまるが、パラメータ数が556Mから66Mと激減している。
    • 横軸をパラメータ数ではなくFLOPSに変えても同様の傾向である(論文中のFigure5)

ベースモデルEfficientNet-B0

  • ベースとなるEfficientNet-B0はneural architecture searchで作成
    • メモリ使用量とFLOPSに上限をかけて分類性能を最大化している
    • メモリ使用量やFLOPSの制約により、width等をスケールアップする前の小さいモデルを作成できる

<EfficientNet-B0の構造> f:id:y_kurashina:20190602181927j:plain

  • MBConv : Mobile inverted bottleneck
  • MBConvに「squeeze-and-excitation optimization」を加えているとの記述があることから、各MBConvにSEブロックが組み合わされていると思われる。
  • 活性化関数にはswishを使用

EfficientNet-B1 ~ B7

  • width、depth、resolutionを完全に独立にスケールアップさせようとするとパラメータの探索空間が広大になりすぎるため、以下の式に基づきスケールアップさせる
    • depth : d = \alpha ^ \phi
      width : w = \beta ^ \phi
      resolution : r = \gamma^ \phi
      制約 :  \alpha \cdot \beta ^ 2 \cdot \gamma ^ 2 \approx 2 \alpha , \beta , \gamma \ge 1
      • \phiが1増えると、FLOPSが約2倍になる
    • \alpha , \beta , \gammaは、\phi=1の時に2倍のリソースを使用できると仮定し、グリッドサーチにより以下の値に決定
      • \alpha=1.2 , \beta = 1.1 , \gamma = 1.15
  • EfficientNet-B1 ~ B7は\phiを1 ~ 7に設定した結果と思われる

ImageNetによる他のモデルとの性能比較

f:id:y_kurashina:20190602185244j:plain


スポンサーリンク