Day 4 - MobileNet、DenseNet のまとめ


この記事は個人的なお勉強用のメモです。

講義

超概要
MobileNet:CNN で軽量化する仕組み
DenseNet:CNN で深い層でも学習する仕組み

MobileNet

概要

  • 画像認識モデル
  • DNN モデルの軽量化・高速化・高精度化を実現
  • Depthwise Convolution と Pointwise Convolution の組み合わせによって軽量化。

一般的な畳み込み層の計算量

条件
・入力特徴マップ(チャンネル数):$H \times W \times C$
・畳み込みカーネルのサイズ:$K\times K\times C$
・出力チャネル数(フィルタ数):$M$
・ストライド:1
・パディング:1

このとき、出力マップの 1 ピクセルを出力するのに必要な計算量は
$K \times K \times C \times M$

よって、出力マップの全体を出力するのに必要な計算量は
$H \times W \times K \times K \times C \times M$

つまり、一般的な畳み込みの計算は計算量が多い。

Depthwise Convolution

フィルタ数は 1 固定。(一般的な畳み込みでは、フィルタ数は $M$)
計算量は $H \times W \times C \times K \times K$。(一般的な畳み込みの $1 / M$)
出力マップのチャンネル数は、入力マップのチャンネル数と同じになる。

Pointwise Convolution

カーネルのサイズは $1\times1$ 固定。(一般的な畳み込みでは、カーネルのサイズは $K\times K$)
出力マップのチャンネル数は $M$。(一般的な畳み込みと同じ)
計算量は $H \times W \times C \times M$(一般的な畳み込みの $1 / (K\times K)$)

MobileNet(2 種類の Convolution の組み合わせ)

Depthwise Separable Convolution (2種類のConvolutionの組み合わせた名前)

処理の流れ

  1. 入力マップに対して、Depthwise Convolution を実行
    出力マップのチャンネル数は入力マップのチャンネル数と同じ
  2. 1.の出力マップに対して、Pointwise Convolution を実行
    これが最終的な出力マップになる。

1 の計算量と 2 の計算量の総和が、MobileNet の計算量になる。
メモリ使用量は通常の畳み込みに比べて数十分の 1 になることも。

DenseNet

概要

  • 画像認識の NN
  • Dense Block が特徴

Dense Block

Dense Block のレイヤーを通るたびにチャンネルが増える。

Dense Block の処理順序
1. 前の層で計算された結果がチャンネルに付け加えられた状態が入力
2. Batch 正規化
3. ReLU
4. 畳み込み 3x3
5. 出力に処理結果の層を付け加える、これの繰り返し

つまり、Dense Blockを通過するたびに、入力のチャンネル数だけ、出力のチャンネル数が増えていく。
増えたチャンネル数を、その後の Transition Layer (Convlution + Pooling) で元に戻す。
よって、各 block 内での特徴マップのサイズは同じ。

DenseNet と ResNet の違い

ResNet は直前の 1 層が直後の 1 層のみ入力
DenseNet は前方の各層から後方の層に入力(以前の複数の層を入力にする)

成長率(Growth Rate)

成長率 (k) とは、Dense Block の中を何層にするか、というハイパーパラメータ。
成長率が高いほどネットワークが大きくなるため、成長率は小さくするのが望ましい。

関連記事

MobileNet

黒本で MobileNet の補習をしようと思ったら、MobileNet の問題が無かった。
仕方ないので適当にネットで検索した情報。

  • 「~wise」というのは「~的に」「~については」という意味合い
  • 現状で MobileNet は V3 まで存在する
  • いずれも Google の論文
  • V2 の特徴は Inverted Residual
  • V3 の特徴は BottleneckへのSqueeze-and-Excite モジュールと h-swish
  • V1 から V2 へは効果が大きい。V2 から V3 への効果はそこまで大きくない(V3 は V2 の延長)

DenseNet

黒本に書いてある DenseNet の情報は講義の内容以下であったため、省略。

  • 「Dense」は、「密集」という意味
  • Residual Network の略称が ResNet
  • 意味の無い層があったとしても、その層の重みが 0 であればよく、ショートカットによって補う
  • DenseNet のメリット
    • 勾配消失の削減
    • 特徴伝達の強化
    • 特徴の効率的な利用
    • パラメータ数の削減
    • 正則化効果の期待