オムライスの備忘録

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

【深層学習】MobileNet V1

この記事の読者

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


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

  • CNN

yhayato1320.hatenablog.com


Index

MobileNet V1 とは

2017 に Google から提案された手法です. 深層学習・DeepLearning で使用されるネットワークアーキテクチャの一つです. ネットワークを複雑化・多層化することをせず、「精度」と「速度」の2つを最大化するために 単純なネットワークアーキテクチャになっております.

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

下図の左は通常のCNNのレイヤです. (Convolution + BatchNorm + ReLU)
下図の右がMobileNetのレイヤで、2 つの CNN で本来の CNN の役割をしてます. この 2つの CNN を合わせて Depthwise Separable Convolution と呼びます.

Depthwise Separable Convolution

この 2 つの CNN をそれぞれ Depthwise ConvolutionPointwise Convolution と呼びます.

通常の畳み込みが空間方向とチャネル方向の畳み込みを同時に行うのに対して、Depthwise Separable Convolution は Depthwise (空間方向)の畳み込みを行った後に、 Pointwise (チャネル方向)の畳み込みを行います

通常の Convolution

比較のために通常のConvolution をここに置いておきます.



パラメータ数

 M \times K \times K \times N

Depthwise Convolution

チャネル方向のカーネルフィルターをなくし、空間方向のフィルターのみで畳み込みを行います.


パラメータ数

 K \times K \times N

Pointwise Convolution

空間方向のカーネルフィルターをなくし、チャネル方向のフィルターのみで畳み込みを行います.


パラメータ数

 M \times N

Depthwise Separable Convolution 全体

2 つの畳み込みを連結して、Depthwise Separable Convolution 全体になります.


パラメータ数

 K \times K \times N + M \times N

パラメータ数

通常のConvolution では、 M \times K \times K \times N だが、 MobileNet V1 の場合では、 K \times K \times N + M \times N まで下がります.

 \dfrac{(M+K^2 )N}{MK^2 N} = \dfrac{1}{K^2} + \dfrac{1}{M}

だけ減っていることがわかります.

まとめ

  • 通常の畳み込みを 2 つの方向(空間方向とチャネル方向)に分割したことでパラメータ数が減り、精度を低下させずに計算を高速化させることが可能.

参考

  • MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

  • MobileNet(v1,v2,v3)を簡単に解説してみた