Densely Connected Convolutional Networks

29
Densely Connected Convolutional Networks Gao Huang, Zhuang Liu, Kilian Q. Weinbeger, Laurens van der Maaten https://arxiv.org/abs/1608.06993v4 2017/10/26 DLゼミ B4 幡本昂平

Transcript of Densely Connected Convolutional Networks

Page 1: Densely Connected Convolutional Networks

Densely Connected Convolutional Networks

Gao Huang, Zhuang Liu, Kilian Q. Weinbeger, Laurens van der Maaten

https://arxiv.org/abs/1608.06993v4

2017/10/26

DLゼミ

B4 幡本昂平

Page 2: Densely Connected Convolutional Networks

1

論文情報

• タイトル

• Densely Connected Convolutional Networks

• 投稿日

• 2016/8/25(ver1)

• 2016/11/29(ver2)

• 2016/12/3(ver3)

• 2017/8/27(ver4)

• 発表学会

• CVPR2017

• Best Paper Awards

Page 3: Densely Connected Convolutional Networks

2

• 新しいCNNアーキテクチャであるDenseNetを提案

• 従来よりもコンパクトなモデルでありながら高い性能を実現

概要

Page 4: Densely Connected Convolutional Networks

3

• 近年の計算機の発展により深いネットワークを訓練することが可能となり、CNNによる画像認識が進歩

• LeNet5: 5層

• VGG19: 19層

• ネットワークが深くなると勾配消失の問題が発生し、学習がうまくいかないので更に層数を増やすのは難しかった

• 2015年のResNetsなどの登場により100層以上のネットワークが構成できるようになり、更に精度が向上

Introduction

Page 5: Densely Connected Convolutional Networks

4

• 入力をスキップさせて後の層の入力に足し込む

ResNetなどのアイデア

出典: Deep Residual Learning for Image Recogition(2015)

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun

他にも様々な方法でネットワークを深くできるように工夫したものが存在

Ex) Highway Networks, FractalNets

Page 6: Densely Connected Convolutional Networks

5

• ResNet等のアーキテクチャに共通する考え方

浅い層から深い層へのパスを作っている

• この論文ではこの点に着目し、層間の情報の伝達を最大化するためにすべての同特徴量サイズの層を結合させている

• Feed forwardを保つため、ある層より前の層の出力を入力とする

• 層間が密に結合していることから、DenseNetとよぶ

DenseNet

Page 7: Densely Connected Convolutional Networks

6

DenseNetの基本構造

以下の要素で構成される

• Initial Convolution

• Dense Block

• Transition layer

• Classification layer

Page 8: Densely Connected Convolutional Networks

7

• 第𝑙層の出力を𝑥𝑙とすると、Dense Blockの第l層の出力は以下の式で表される

• ここで𝐻𝑙は

• Bacth normalization

• ReLU

• 3×3 Convolution

の合成関数を表す

• 上式は入力のテンソル 𝑥0, 𝑥1, … , 𝑥𝑙−1を結合して入力することを表す

• Ex) 𝑥𝑖が16×32×32のとき、入力は入力のチャネル数+ ((𝑙 − 1) ×16) ×32×32

Dense Block

Page 9: Densely Connected Convolutional Networks

8

• 前ページで示したDense Blockの式は特徴量マップのサイズが変わってしまうと使えない

• しかし、CNNの重要な要素であるマップサイズを変えるダウンサンプリングを行う層を入れないわけにはいかない

Pooling層をどうするか

Page 10: Densely Connected Convolutional Networks

9

• ネットワークをdense blockが複数結合した構造にし、間にpoolingを行う層をいれる

• これをtransition layerと呼ぶ

• 実験で使用したものは

• Batch normalization

• 1×1 convolution

• 2×2 平均プーリング

で構成される

Transition layer

Page 11: Densely Connected Convolutional Networks

10

• Dense blockの式で確認したように、𝐻𝑙がチャネル数𝑘の特徴量マップを出力する場合、𝑙番目のレイヤへの入力は 𝑘 × 𝑙 − 1 + 𝑘0となる(𝑘0はblockへ入力される画像のチャネル数)

• ネットワークが大きくなりすぎるのを防ぐため𝑘は小さい整数に設定 ex)𝑘 = 12

この𝑘をネットワークのgrowth rateと呼ぶ

Growth rate

Page 12: Densely Connected Convolutional Networks

11

• Bottleneckの導入

• Dense blockの𝐻𝑙をBN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)に変更

• Compression• Transition layerで特徴量マップの数を減らす• Transition layer内のconvolution層で出力マップサイズを𝜃倍にする(0 < 𝜃 ≤ 1)

• 今回の実験では𝜃 = 0.5とした

効率化手法

これらを導入したものと導入していないものの両方について実験

出典: https://liuzhuang13.github.io/posters/DenseNet.pdf

Page 13: Densely Connected Convolutional Networks

12

• CIFAR, SVHN用

• ベーシックなdense net (𝐿 = 40)

実験で用いたネットワーク

Layers detail

Initial Convolution [3×3 conv (output channel=16)]

Dense Block(1) [3×3 conv]×12

Transition(1) [1×1 conv]

[2×2 average pool stride=2]

Dense Block(2) [3×3 conv]×12

Transition(2) [1×1 conv]

[2×2 average pool stride=2]

Dense Block(3) [3×3 conv]×12

Classification [global average pool]

[softmax]

3×3Conv層ではゼロパディング

𝐿は3𝑛 + 4でなければならない 3×Dense block + Initial conv + 2×transition + classification

Page 14: Densely Connected Convolutional Networks

13

• 実験ではgrowth rate 𝑘 = 12, 24 𝐿 = 40,100のもので実験

• {𝐿 = 40, 𝑘 = 12}, {𝐿 = 100, 𝑘 = 12}, {𝐿 = 100, 𝑘 = 24}

• Bottleneck layerを採用したものに対しては以下のような設定で実験

• {𝐿 = 100, 𝑘 = 12}, {𝐿 = 250, 𝑘 = 24}, {𝐿 = 190, 𝑘 = 40}

実験で用いたネットワーク

Page 15: Densely Connected Convolutional Networks

14

• ImageNet用

• DenseNet with bottleneck and compressionを使用

• Dense blockの数は4

• 後述のResNetとの比較のため、最初のconv層と最後の判別層の形を合わせてある

実験で用いたネットワーク

Page 16: Densely Connected Convolutional Networks

15

• CIFARとSVHNに対して実験をおこなった

• CIFAR

• 32×32のカラー画像

• C10,C100に対して実験

• Train: 50000枚, Test: 10000枚

• Trainのうち5000枚をvalidationセットとした

• データの拡張を行ったものとそうでないもの両方について実験

実験1 CIFAR and SVHN

Page 17: Densely Connected Convolutional Networks

16

• CIFARとSVHNに対して実験をおこなった

• SVHN

• Street View House Numbers

• Google street viewから抽出した数字の画像

• 32×32 カラー画像

• Train: 73257枚+531131枚, Test: 26032枚

• Trainのうち6000枚をvalidationに

実験1 CIFAR and SVHN

Page 18: Densely Connected Convolutional Networks

17

• 最適化手法: SGD

• Mini-batchサイズ64

• エポック数 CIFAR: 300, SVHN:40

• 学習率は学習の進み具合で変化させる

• 初期0.1, 50%学習後0.01, 75%学習後0.001

• 重み減衰10−4

• Nesterov momentum 0.9

• データの拡張を行っていないデータセットに対しては各conv層の後に0.2のドロップアウト層を追加

訓練詳細

Page 19: Densely Connected Convolutional Networks

18

結果データ拡張を行ったもの

エラー率パラメータ数(重みの数)

Page 20: Densely Connected Convolutional Networks

19

• Accuracy

• CIFAR

• ResNetやその他のネットワークよりも低いエラー率を達成

• SVHN

• L=100, k=24のDenseNetでResNetよりも低いエラー率

• DenseNet-BCではあまり性能が良くなっていないが、これはSVHNが簡単な問題のためoverfitしやすいという理由が考えられる

結果について

Page 21: Densely Connected Convolutional Networks

20

• Capacity

• 基本的に𝐿, 𝑘が大きくなればなるほど性能が良くなっている

• DenseNetでは大きく深いモデルの表現力を利用できている

• つまりoverfitting, 最適化の困難が発生しにくい

結果について

Page 22: Densely Connected Convolutional Networks

21

• Parameter Efficiency

結果について

DenseNet-BCはパラメータ数に対するエラー率がDenseNetを比較した中では最も低い

同程度の性能のResNetよりもパラメータ数が少ない

ResNet-1001の90%パラメータ数で同程度の性能を

実現

Page 23: Densely Connected Convolutional Networks

22

• DenseNetにはOverfittingしにくいという特性がある

• データ拡張をおこなっていないCIFARに対しても従来よりも高い性能を発揮

• パラメータ数を増やすことによりoverfittingをする傾向が見られるが、bottleneckとcompressionで対処できる

Overfitting

Page 24: Densely Connected Convolutional Networks

23

• Train: 1.2million validation: 50000

• データ拡張をおこなう

• Validation setに対するエラー率を調査

• 訓練

• バッチサイズ256, 90エポック

• 学習率は初期0.1,30エポック後0.01, 60エポック後0.001

• GPUメモリの制約によりDenseNet-161ではバッチサイズを128, エポック数を100に

• 90エポック後に学習率を0.0001にする

実験2 ImageNet

Page 25: Densely Connected Convolutional Networks

24

結果

ResNetより良いパラメータ効率・計算効率で同程度の性能を実現 ハイパーパラメータ設定はResNetに

最適化されたものを用いているので、設定しなおせばより良い性能を発揮する事も考えられる

Page 26: Densely Connected Convolutional Networks

25

• 損失関数からの教師情報が各層に伝わりやすい

• dense blockでは浅い層と深い層が直接結合しているので教師情報が直接伝播する

なぜ性能がよくなったか

出典: https://liuzhuang13.github.io/posters/DenseNet.pdf

Page 27: Densely Connected Convolutional Networks

26

• 特徴量の再利用性

• DenseNet(𝐿 = 40, 𝑘 = 12)をCIFAR10+で訓練したときの各層の重みの平均値をヒートマップで可視化

なぜ性能がよくなったか

Page 28: Densely Connected Convolutional Networks

27

特徴量の再利用性

• すべての層で重みが同ブロックの多くの入力に分散している• 浅い層の出力特徴量がdense block全体で使われている

• Transition layerでも重みが分散している• 最初の層の情報が直接最後の層に伝わっている

• Dense block2,3ではtransition layerからの出力がほとんど利用されていない• Transition layerの出力は冗長• DenseNet-BCで出力を圧縮してうまくいくことと合致している

• Classification layerでは最後の方の出力を重視している• 最後の方の層で高レベルな特徴を抽出できている

Page 29: Densely Connected Convolutional Networks

28

• 最適化が難しくなることなく100層以上のDenseNetを作ることができる

• パラメータを増やしてもoverfittingすることなく性能がよくなる傾向にある

• 各データセットで従来よりも少ないパラメータ数でstate of the art(2016年8月時点)の性能

• ハイパーパラメータの調整をすることでさらなる性能を発揮することが期待できる

• シンプルな結合規則にもかかわらず、高い性能を発揮

• よい特徴量抽出器であるといえるので、今後はこれを用いた特徴量変換について研究する予定

まとめ