1.はじめに
今回は、 スマホなどの容量が少ない小型端末にCNNを載せるために開発された MobileNet についてまとめます。
2.MobileNet.V1
通常のConvolutionの模式図です。$(h,w,C_i)\to(h,w,C_o)$となるstride1のk×k Convolutionを考えると、パラメータ数は $hwC_ik^2*C_o$が必要となります。
Depthhwise Separable Convolution の模式図です。通常のConvolutionは空間方向とチャンネル方向の畳み込みを同時に行いますが、このモデルは空間方向の畳み込み(Depthwise Conv)を行なってから、チャンネル方向の畳み込み(Pointwise Conv)を行うという様に2段階で行います。これによって、パラメータ数は、$\frac{k^2+C_o}{k^2*C_o}=\frac{1}{k^2}+\frac{1}{C_o}$に減らすことが出来ます。
3.MobileNet.V2
MobileNet.V2は、Inverted ResidualというResNetで使われるResidual Blockを応用したブロックを持っているのが特徴です。Residual Blockは入力からチャネル方向に注目すると、広い -> 狭い -> 広いという構造(Bottleneck構造)になってますが、Inverted Residualでは狭い -> 広い -> 狭いとしています。
3×3Depthwise Conv.を1x1Conv.(Pointwise Conv.)で挟む構造です。この構成によってパラメータを増加させる最大要因である出力チャンネル数を大幅に減らすことができます。
出力チャネル数を大幅に減らすことは、その分情報量を十分に抽出できなく精度が出なくなってしまうのですが、Inverted Residual Blockの中でチャネル数を一旦増やして畳み込みを行いチャンネル数を戻すことで解決しています。
4.MobileNetのV1とV2の比較
V2の方がV1より圧倒的に少ないチャンネル数で成立していることが分かります。