読んだ論文
clcNet: Improving the Efficiency of Convolutional Neural Network using Channel Local Convolutions
CVPR 2018
概要
- Depthwise Convolution や grouped convolutionにより畳み込みが効率的かつ高速に
- これらは出力チャネルが入力チャネルのサブセットを利用して計算する、チャネルの局所的な畳み込み(CLC)の特別な場合とみなすこと考えた
- この定義により入力チャネルと出力チャネルの依存関係をチャンネル依存グラフ(CDG)によって表現
- grouped convolutionのCDGを変更することで新たなIGCというカーネルを作成
- ICGカーネルとGCカーネルを積み上げることにより通常の畳み込みに近似したモジュールを作成できる
- CDGを利用した分析によってIGCとGCの精度を保つためのメタパラメータを設定し、計算量を最小化することができる
- これらのclcblockを利用したclcNetを構築し、ImageNetによって既存モデルより高い計算効率とパラメータ数の減少を達成
背景
- 通常の畳み込み
- "すべてのチャネルが畳み込みの計算に関与している"
→畳込みの計算はチャネル次元に対して常に大域的
- "すべてのチャネルが畳み込みの計算に関与している"
- depth wise convolution & grouped convolution
- チャネルのサブセットを利用するような計算
- 出力された値はチャネルの一部のみに依存している
→これを Channel Local Convolution (CLC) という概念として定義
CLCカーネルはカーネルの**channel dependency graph (CDG)**によって特徴づけられる
CDGとはチャネルをノード、依存性をエッジとした有向2部グラフ
出力チャネルから入力チャネルへの依存性を表す
CDGは通常の畳み込みと近似するようなCLCカーネルになるように依存性の構造を分析するために利用できる
畳み込みの出力チャネルがすべての入力チャネルに依存する時、畳込みカーネルは**full channel receptive fields (FCRF)**を達成するとする
仮説
FCRFはCLCカーネルを積み重ねることによって通常の畳み込みに近似させるために必要である
提案
CLC blockを提案
- 2つのCLCカーネルを持つDepth wise separable convolution
- grouped convolution(GC)
- GCとは少しことなるinteraced group convolution(IGC)
CDGを分析することによってCLCカーネルのmeta-parameterを設定
interaced grouped convolution (IGC)
ExceptionやMobilenetなどのように空間方向とチャネル方向を分離して畳み込みを行うdepth separable convolutionによっても重みが効率的なモデルを学習できることが示されている
depth separable convolutionはpoint wise convolutionによってチャネル方向の畳み込みが行われており、さらに効率化をはかるのであれば、grouped convolutionを採用ことなどが考えれる
しかし初期の実験でdepth wise convolutionやpoint wise convolutionの代わりに単純なgrouped convolutionを利用すると分類精度が低下することがわかっている(おそらくShuffleNetでGrouped Convolution時にシャッフルしなかったときの精度低下の話を言っている?)
CDGを元に分析すると、grouped convolutionに変えたあとのモデルはFCRFが達成されていないことがわかる
この問題に対して対応するために提案されたのがinteraced grouped convolution(IGC)である
interaced grouped convolutionは以前のgrouped convolutionで複数のグループが組み合わさるように変更するものである
これによりグループの組み合わせによってはFCRFを達成するモデルが出てくる
IGCのmeta-parameterはグループの数を表す$g$であり、input channelの数を$M$とすると、IGCの1グループのチャネル数は$M/g$となる。
この1グループのチャネル数を**channel receptive fields size (CRF size)**と呼ぶ
CLC blockはIGCとGCのグループ$g$を適切に設定することができればFCRFを達成することができる
次にCDGに関するNotationを記述する
- $M$: 入力チャネル数
- $L$: 中間チャネル数(IGCカーネルの出力)
- $N$: 出力チャネル数
- $g_1$: IGCのgroup parameter
- $g_2$: GCのgroup parameter
それぞれのCRFsizeは
- ICG: M / $g_1$
- CG: L / $g_2$
CLC blockがFCRFを達成するためにはCGのCRFsizeがICGのグループ数以下になっている必要がある
よって以下の条件が成り立てばFCRFを達成することがわかる
$$ g_1 g_2 \leq L$$
そして計算コスト最小化することを考慮すると以下の制約の元、計算量が最小になる$g_1$・$g_2$を
見つけることにより、計算量が最小でFCRFを満たすCLC blockを求めることができる
ただし$A$はカーネルのピクセル数を表す(3×3の場合はAは9)
評価
このConvolution Blockを元に構成したモデルをclcNetとしてimagenetのタスクを解かせる
MobileNetと比較すると25%の計算量減少,Top1Accの1%向上などモデルが効率的であることを示した