Densely Connected Convolutional Networks
-
Upload
harmonylab -
Category
Technology
-
view
419 -
download
15
Transcript of 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 幡本昂平
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
2
• 新しいCNNアーキテクチャであるDenseNetを提案
• 従来よりもコンパクトなモデルでありながら高い性能を実現
概要
3
• 近年の計算機の発展により深いネットワークを訓練することが可能となり、CNNによる画像認識が進歩
• LeNet5: 5層
• VGG19: 19層
• ネットワークが深くなると勾配消失の問題が発生し、学習がうまくいかないので更に層数を増やすのは難しかった
• 2015年のResNetsなどの登場により100層以上のネットワークが構成できるようになり、更に精度が向上
Introduction
4
• 入力をスキップさせて後の層の入力に足し込む
ResNetなどのアイデア
出典: Deep Residual Learning for Image Recogition(2015)
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun
他にも様々な方法でネットワークを深くできるように工夫したものが存在
Ex) Highway Networks, FractalNets
5
• ResNet等のアーキテクチャに共通する考え方
浅い層から深い層へのパスを作っている
• この論文ではこの点に着目し、層間の情報の伝達を最大化するためにすべての同特徴量サイズの層を結合させている
• Feed forwardを保つため、ある層より前の層の出力を入力とする
• 層間が密に結合していることから、DenseNetとよぶ
DenseNet
6
DenseNetの基本構造
以下の要素で構成される
• Initial Convolution
• Dense Block
• Transition layer
• Classification layer
7
• 第𝑙層の出力を𝑥𝑙とすると、Dense Blockの第l層の出力は以下の式で表される
• ここで𝐻𝑙は
• Bacth normalization
• ReLU
• 3×3 Convolution
の合成関数を表す
• 上式は入力のテンソル 𝑥0, 𝑥1, … , 𝑥𝑙−1を結合して入力することを表す
• Ex) 𝑥𝑖が16×32×32のとき、入力は入力のチャネル数+ ((𝑙 − 1) ×16) ×32×32
Dense Block
8
• 前ページで示したDense Blockの式は特徴量マップのサイズが変わってしまうと使えない
• しかし、CNNの重要な要素であるマップサイズを変えるダウンサンプリングを行う層を入れないわけにはいかない
Pooling層をどうするか
9
• ネットワークをdense blockが複数結合した構造にし、間にpoolingを行う層をいれる
• これをtransition layerと呼ぶ
• 実験で使用したものは
• Batch normalization
• 1×1 convolution
• 2×2 平均プーリング
で構成される
Transition layer
10
• Dense blockの式で確認したように、𝐻𝑙がチャネル数𝑘の特徴量マップを出力する場合、𝑙番目のレイヤへの入力は 𝑘 × 𝑙 − 1 + 𝑘0となる(𝑘0はblockへ入力される画像のチャネル数)
• ネットワークが大きくなりすぎるのを防ぐため𝑘は小さい整数に設定 ex)𝑘 = 12
この𝑘をネットワークのgrowth rateと呼ぶ
Growth rate
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
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
13
• 実験ではgrowth rate 𝑘 = 12, 24 𝐿 = 40,100のもので実験
• {𝐿 = 40, 𝑘 = 12}, {𝐿 = 100, 𝑘 = 12}, {𝐿 = 100, 𝑘 = 24}
• Bottleneck layerを採用したものに対しては以下のような設定で実験
• {𝐿 = 100, 𝑘 = 12}, {𝐿 = 250, 𝑘 = 24}, {𝐿 = 190, 𝑘 = 40}
実験で用いたネットワーク
14
• ImageNet用
• DenseNet with bottleneck and compressionを使用
• Dense blockの数は4
• 後述のResNetとの比較のため、最初のconv層と最後の判別層の形を合わせてある
実験で用いたネットワーク
15
• CIFARとSVHNに対して実験をおこなった
• CIFAR
• 32×32のカラー画像
• C10,C100に対して実験
• Train: 50000枚, Test: 10000枚
• Trainのうち5000枚をvalidationセットとした
• データの拡張を行ったものとそうでないもの両方について実験
実験1 CIFAR and SVHN
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
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のドロップアウト層を追加
訓練詳細
18
結果データ拡張を行ったもの
エラー率パラメータ数(重みの数)
19
• Accuracy
• CIFAR
• ResNetやその他のネットワークよりも低いエラー率を達成
• SVHN
• L=100, k=24のDenseNetでResNetよりも低いエラー率
• DenseNet-BCではあまり性能が良くなっていないが、これはSVHNが簡単な問題のためoverfitしやすいという理由が考えられる
結果について
20
• Capacity
• 基本的に𝐿, 𝑘が大きくなればなるほど性能が良くなっている
• DenseNetでは大きく深いモデルの表現力を利用できている
• つまりoverfitting, 最適化の困難が発生しにくい
結果について
21
• Parameter Efficiency
結果について
DenseNet-BCはパラメータ数に対するエラー率がDenseNetを比較した中では最も低い
同程度の性能のResNetよりもパラメータ数が少ない
ResNet-1001の90%パラメータ数で同程度の性能を
実現
22
• DenseNetにはOverfittingしにくいという特性がある
• データ拡張をおこなっていないCIFARに対しても従来よりも高い性能を発揮
• パラメータ数を増やすことによりoverfittingをする傾向が見られるが、bottleneckとcompressionで対処できる
Overfitting
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
24
結果
ResNetより良いパラメータ効率・計算効率で同程度の性能を実現 ハイパーパラメータ設定はResNetに
最適化されたものを用いているので、設定しなおせばより良い性能を発揮する事も考えられる
25
• 損失関数からの教師情報が各層に伝わりやすい
• dense blockでは浅い層と深い層が直接結合しているので教師情報が直接伝播する
なぜ性能がよくなったか
出典: https://liuzhuang13.github.io/posters/DenseNet.pdf
26
• 特徴量の再利用性
• DenseNet(𝐿 = 40, 𝑘 = 12)をCIFAR10+で訓練したときの各層の重みの平均値をヒートマップで可視化
なぜ性能がよくなったか
27
特徴量の再利用性
• すべての層で重みが同ブロックの多くの入力に分散している• 浅い層の出力特徴量がdense block全体で使われている
• Transition layerでも重みが分散している• 最初の層の情報が直接最後の層に伝わっている
• Dense block2,3ではtransition layerからの出力がほとんど利用されていない• Transition layerの出力は冗長• DenseNet-BCで出力を圧縮してうまくいくことと合致している
• Classification layerでは最後の方の出力を重視している• 最後の方の層で高レベルな特徴を抽出できている
28
• 最適化が難しくなることなく100層以上のDenseNetを作ることができる
• パラメータを増やしてもoverfittingすることなく性能がよくなる傾向にある
• 各データセットで従来よりも少ないパラメータ数でstate of the art(2016年8月時点)の性能
• ハイパーパラメータの調整をすることでさらなる性能を発揮することが期待できる
• シンプルな結合規則にもかかわらず、高い性能を発揮
• よい特徴量抽出器であるといえるので、今後はこれを用いた特徴量変換について研究する予定
まとめ