オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】MobileNet V2

この記事の読者

深層学習・ディープラーニングの手法の1つである「MobileNet V2」について知りたい.


キーワード・知ってると理解がしやすい

  • CNN
  • MobileNet V1
  • Residual Network

yhayato1320.hatenablog.com

yhayato1320.hatenablog.com

yhayato1320.hatenablog.com


Index

MobileNet V2 とは

2018 年に Google から発表された MobileNet V1 の改善手法. MobileNet V1 で使用されている Depthwise Separable Convolution はそのまま使用.

ネットワークアーキテクチャ

全体のアーキテクチャは、こんなかんじです.


通常の CNN の中身部分はこんなかんじです.


Bottleneck Depth Separable Convolution with Residuals

上図の Bottleneck Block とは Bottleneck Depth Separable Convolution with Residuals と称し、 「Depthwise Separable Convolution」+「Linear Bottleneck」+「Inverted Residual」のことです.



レイヤーベース


Depthwise Separable Convolution

MobileNet V1 で提案された、Convolution を 空間方向とチャネル方向に分割してパラメータを削減させる手法です. MobileNet V1 から引き続き利用します.

Linear Bottleneck

非線形 (Non-Linear) の Active Function を利用すると、多くの情報を失うことになります.
(ある 2 つの線形関数の合成はある 1 つの線形関数で表すことが可能であるため、 Deep Learningでは、ネットワークの表現力を損なわないために非線形関数をActive Function に導入してます)

ReLU は 入力がゼロ以上であれば、線形関数とみなせます. そこで、ReLU を利用すれば、擬似的に線形関数(Linear)の性質を利用できるという仮説できまます. しかし、完全に情報の損失を防げるわけでありません. (完全に線形な関数ではないため) そこで、Bottleneck Convolution を導入して、チャネル数を多くして情報量を多くすれば、後続に重要な情報を多く残すことができると考えます. (Bottleneck Convolution は チャネル数を増やすために使用される 1 x1 の Convolution です)

MobileNet V2 の CNN には Depthwise Separable Convolution が利用されているため、CNN のネットワークアーキテクチャは以下のようになります.



線形変換(Linear)のような Active Function (ReLU) と BottleNeck Convolution を 組み合わせた構造を、Linear Bottleneck と呼びます. そして、Depthwise Separable Convolution にLinear Bottleneckを適用します.

Inverted Residual

ResNet の Residual Block を元に(Shortcut Connection を利用して)、CNN (Linear Bottleneck が適用された Depthwise Separable Convolution = Bottleneck Depthwise Separable Convolution) で構築されます. チャネル数の変換は通常の変化とは異なる・逆になるため Inverted Residual と称します.

チャネル方向に注目すると以下のようになります.

  • ResNet (Residual Block) : 大きい -> 小さい -> 大きい
    • 最初の Convolution は特徴量の抽出 (Depthwise (空間方向のConvolution) + Pointwise (チャネル方向のConvolution))
    • 次の Convolution はチャネル数の調整



  • Inverted Residual : 小さい -> 大きい -> 小さい
    • 最初の Convolution は特徴量の抽出と情報損失に備えるための拡大 (Depthwise (空間方向のConvolution) + Pointwise (チャネル方向のConvolution))
    • 次の Convolution はチャネル数の調整



まとめ

  • 精度を効率的に軽量に向上させるという MobileNet の思想をそのままに、改善させた手法

参考

  • MobileNetV2: Inverted Residuals and Linear Bottlenecks