【論文読み】clcNet

# 概要
 - clcNet提案 
 - CDG(Channel Dependency Graph)とCRF(Channel Receptive Field)を新たな分析のツールとして使用
 - グループ化畳み込みに変わり、新たな畳み込みのIGC(Interlaced Grouped Convolution)を使用
 - ImageNet-1Kデータセットにおいて、既存のモデルより高い計算効率とパラメーター数減少を達成

# 背景
 - 現在では計算効率の良い畳み込みの手法として、dw 畳み込みやグループ化などが使われている
 - モバイルデバイスに使えるようなCNNは計算効率とメモリ効率のが重要である
 - 上記の畳み込み手法に少し変更を加え、計算効率を向上させたのがclcNet

# CLC (Channel Local Convolution)
 - 出力チャネルの計算が一部の入力チャネルのみに依存している畳み込み
    - dw 畳み込み, グループ化畳み込み
 - CLCの受容野は空間次元とチャネル次元の両方に沿って局所的
    - 受容野: ある特徴マップの一画素が集約してる前の層の空間の広がり
    - Figure 1で概念的に示している

![Figure1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/90d1cf20-fbec-ac7a-23e7-8bc32bd22508.png)

## CDG (Channel Dependency Graph)
 - チャネルの計算依存性を示す2部グラフ
    - Node: チャネル
    - Edge: 依存性
    - 上のNodeが入力
    - 下のNodeが出力を表す
    - 出力->入力というように表現される
 - CDGを使うことで、モデル設計のためのチャネル依存の分析が簡単になる
    - 積み重ねたCLCカーネルを、通常畳み込みに近似させるための分析に使う
![Figure2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/7a5c3849-6d5b-0945-e2c5-f28f609581a9.png)

## チャネル受容野 CRF (Channel Receptive Field)
 - 出力チャネルが依存する入力チャネルのサブセット
 - FCRF (Full Channel Receptive Field)
    - 出力チャネルが入力チャネルのすべてに依存している状態
 - CRFサイズ
    - 依存している入力チャネルの数

##### 仮説: 
 - FCRFを達成することは、CLCが通常Convolutionの正確な近似する上で必要である

##### CGDを使って他のモデルを分析してみる
 - FCRFが達成されているモデルに使われている畳み込み
    - ResNetのbottlenetck structure
    - ResNeXt block
    - Depthwise Convolution for MobileNet and Xception

![Figure3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/fe3420f4-ae41-1973-7257-11ecc0061922.png)
 
- FCRFが達成されていないモデルの畳み込み
    - dw畳み込み & 1x1畳み込みをグループ化畳み込みに

![Figure4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/bd0166b8-214d-99cd-a45c-23d0aad4ab75.png)

 - FCRFが達成されていない
 - 結果、クラス分類において従来よりも低い精度になった
 - ShuffleNetの論文でも、Shuffleなしのdw & 1x1畳み込みが試され、Shuffleありと比べて精度が下がったと言われていた

# IGC (Interlaced Grouped Convolution)
 - MobileNetやXceptionでdw畳み込みや1x1畳み込みが効果的であると証明された
    - だが1x1畳み込みの占める計算量は多い
 - さらなるコスト効率化のために、1x1畳み込みを変更したい
 - 1x1畳み込みをグループ化畳み込みにする
    - Figure 4で示した通り、FCRFもなくなり、精度も下がる
 - IGC:
    - グループ化畳み込みのチャネル依存パターンを変えることでFCRFを実現
    
![Figure5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/3bc5e27a-13dd-bbdc-afcb-4d1d79636dda.png)


##### CLC Block
 - IGCとGCカーネルを積み重ねた畳み込みブロック
   - 3x3 IGC カーネル
   - 1x1 GC カーネル
   - Relu
   - Batch Normalization

![Figure6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/bd07055a-03ad-4962-dff8-f00c39241e1f.png)

# FCRFのルールとコスト最小化
 - M : input channels
 - N : output channels
 - L : intermediate channels
 - g1: IGC カーネルのgroup parameter
 - g2: GC カーネルのgroup parameter

CRF(Channel Receptive Field): 出力チャネルが依存する入力チャネルのサブセット
CRF size: 依存している入力チャネルの数

 - IGC カーネルのCRFサイズ : M/g1
 - GC カーネルのCRFサイズ  : L/g2

 - このCLC BlockがFCRFを達成するためには、GCのCRF size(L/g2)がIGCカーネルのgroup parameter(g1)より大きくなる必要がある
    - $ L/g_{2} \geq g_{1} $ すなわち $ g_{1}g_{2} \leq L$

### コスト (Computational cost)最適化の式
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/2c487e70-0fbb-d13f-f955-23a378dea132.png)
 
 - A=9とき最小化されたパラメーター
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/101fc001-f314-5bd3-5604-025525d9a1b7.png)

    - A: spatial area of the convolutional kernel
        - A = 9 for 3x3 kernel

 - モデル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/5de57f0b-46ae-d433-a4ff-f91e480b7a7d.png)


#検証
### 5.1 Classification Accuracy of clcNet 
 - state-of-the-art modelであるMobileNetと比較
 - a, b, c, d (layer configurations)
 - 精度が良かった2つをclcNet-A, clcNet-B

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/c794a3f6-5c43-a3b8-00d8-0c68f29ce13d.png)

 - 後ろのlayer(c or d)を増やすことが、前のlayer(a or b)を増やすことよりも、精度が上がることが分かる

### 5.2 The importance of FCRF(Full Channel Receptive Field)
 - FCRFの重要性の検証
    - IGC(Interlaced GC)カーネルをGCカーネルに変える
        - 計算コストは同じだが FCRFを下げた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/4209d159-20bb-fce6-cf98-dfce1d413d18.png)

### 5.3 Comparision with Previous Models

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/de7d7ab5-a8fd-462b-134b-d8c22252313a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455946/e92e9720-5e5d-3dac-bc29-d386bd0c8278.png)