【論文読み】clcNet: Improving the Efficiency of Convolutional Neural Network using Channel Local Convolutions

## 読んだ論文
[clcNet: Improving the Efficiency of Convolutional Neural Network using Channel Local Convolutions](http://openaccess.thecvf.com/content_cvpr_2018/papers/Zhang_ClcNet_Improving_the_CVPR_2018_paper.pdf)

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)** という概念として定義

![](https://i.gyazo.com/540230974ac0c6706b5973015f4b5f96.png)

CLCカーネルはカーネルの**channel dependency graph (CDG)**によって特徴づけられる
CDGとはチャネルをノード、依存性をエッジとした有向２部グラフ

![](https://i.gyazo.com/d28a5282969dcbae434caa2f29339725.png)

出力チャネルから入力チャネルへの依存性を表す
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が達成されていないことがわかる
![](https://i.gyazo.com/dd12d8c1ffacbfe797c463b335a97115.png)
この問題に対して対応するために提案されたのがinteraced grouped convolution(IGC)である
interaced grouped convolutionは以前のgrouped convolutionで複数のグループが組み合わさるように変更するものである
![](https://i.gyazo.com/5d43e301f9b370dfa48a2378afd969f4.png)
これによりグループの組み合わせによってはFCRFを達成するモデルが出てくる
IGCのmeta-parameterはグループの数を表す$g$であり、input channelの数を$M$とすると、IGCの１グループのチャネル数は$M/g$となる。
この１グループのチャネル数を**channel receptive fields size (CRF size)**と呼ぶ

今回提案するCLCblockの設計とCDGが以下の通り
![](https://i.gyazo.com/c4b7c4d8cb525f624d7fed9ab67c7693.png)

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を求めることができる

![](https://i.gyazo.com/69cf397b7505226ac5911f0a433f86de.png)

ただし$A$はカーネルのピクセル数を表す(3×３の場合はAは9)


### 評価
このConvolution Blockを元に構成したモデルを**clcNet**としてimagenetのタスクを解かせる
MobileNetと比較すると25%の計算量減少,Top1Accの1%向上などモデルが効率的であることを示した