ディープラーニングによる画像認識と応用事例
山下 隆義
目次
ディープラーニングについて
畳み込みニューラルネットワーク
応用事例
2
ディープラーニングの現在(1)
画像認識のベンチマークでトップ
Convolution Pooling Softmax Other GoogLeNet, ILSVRC2014
Image Large Scale Visual Recognition Challenge (ILSVRC)
3
ディープラーニングの現在(2)
音声認識のベンチマークでトップ
IBIS2013 “音声認識分野における深層学習技術の研究動向”より
従来法:GMM
4
ディープラーニングの現在(3)
画像から文章を生成
http://googleresearch.blogspot.jp/2014/11/a-picture-is-worth-thousand-coherent.html
デモページあり http://deeplearning.cs.toronto.edu/i2t
5
ディープラーニングの現在(4)
Deep Q- Network
6 http://www.iclr.cc/lib/exe/fetch.php?media=iclr2015:silver-iclr2015.pdf
ディープラーニングの現在(5)
Inceptionism
http://googleresearch.blogspot.co.uk/2015/06/inceptionism-going-deeper-into-neural.html
ディープラーニングの現在(6)
歩行者検出
I.Sato, H. Niihara, “Beyond Pedestrian Detection: Deep Neural Networks Level-Up Automotive Safety”,2014 https://www.youtube.com/watch?feature=player_embedded&v=9Y7yzi_w8qo
車載向けGPU Tegra K1上で実時間動作 人の検出とともに,身長,向き,カメラまでの距離を推定
8
ディープラーニングの現在(7)
自動運転支援
http://ventureclef.com/blog2/?p=2535
車載専用のGPUを用いることでリアルタイムでの物体認識を実現 アウディと共同で自動運転支援を開発中
9
Deep Driving
10 http://deepdriving.cs.princeton.edu
なぜディープラーニング?
色々なベンチマークで1位を取ったから・・・
過去の偉大な成果 様々なテクニック ハードウェアの進化&活用方法
ニューラルネットワークの 暗黒時代を超えて..
根気強く取り組んだ成果
画像認識のパラダイムシフトの可能性
特徴抽出,識別手法が別々 手作業での特徴設計
特徴抽出+識別を同時に行う 自動的な特徴設計
11
何がDeep Learning??
Deep Learningに関連するキーワード
Restricted Boltzmann Machines
Deep Belief Networks
Deep Boltzmann Machines
Convolutional Neural
Networks
Deep Neural Networks
Back-propagation
Contrastive Divergence
Dropout
Maxout
Maxpooling
Dropconnect 12
何がDeep Learning??
Restricted Boltzmann Machines
Deep Belief Networks
Deep Boltzmann Machines
Convolutional Neural
Networks
Deep Neural Networks
Back-propagation
Contrastive Divergence
Dropout
Maxout
Maxpooling
Dropconnect
ネットワークの構成 ネットワークの学習方法 汎化性向上の方法
13
何がDeep Learning??
Restricted Boltzmann Machines
Deep Belief Networks
Deep Boltzmann Machines
Convolutional Neural
Networks
Deep Neural Networks
Multi-Layer Perceptron
人工知能モデル
確率モデル
多層化
畳込み層を導入
多層化 多層化
Deep Learning Dropout
Maxout
Max pooling
Dropconnect
14
MLPとRBM
Multi-Layer Perceptron(MLP) Restricted Boltzmann Machine(RBM)
xi
x1
p(xi =1|Y ) =σ ( wijyj + aij=1
m
∑ )
p(yj =1| X) =σ ( wijxi + bji=1
n
∑ )yi =σ ( wijx j + bj
j=1
m
∑ )
15
DNNとDBN
Deep Neural Networks(DNNs) Deep Belief Networks(DBN)
教師あり学習(Back propagation) すべてのパラメータを同時に学習
教師なし学習(Contrastive Divergence) 階層ごとにパラメータを学習 +
教師あり学習(Back propagation) すべてのパラメータを同時に学習
パラメータ更新
パラメータ更新
パラメータ学習
16
入力層 入力層
隠れ層
隠れ層
出力層
入力層 出力層
入力層 出力層
出力層
目次
ディープラーニングについて
畳み込みニューラルネットワーク
ディープラーニングのツール
17
畳み込みニューラルネットワーク
初期の研究(今も同じ) 畳み込み、サブサンプリング、全結合の層から構成
手書き文字認識に応用
平行移動に対する不変性がある
Y. LeCun, et.al. “Gradient-based Learning Applied to Document Recognition”, Proc. of The IEEE, 1998. 18
畳み込み層(1)
カーネルをスライドさせて画像に畳み込む 近接の画素とのみ結合する(局所受容野)
Convolution Response
f
Input image Feature map 10x10 kernel 3x3 8x8 Activation function
19 Convolutions
畳み込み層(2)
画像全体にフィルタを畳み込む
20
-1 0 1 -1 0 1 -1 0 1
例えば ソーベルフィルタ Convolution Layerのフィルタは,
学習により獲得
畳み込み層(3)
カーネルをスライドさせて画像に畳み込む 近接の画素とのみ結合する(局所受容野)
カーネルは複数でも良い
21
Activation function Input image Feature map 10x10 8x8
Convolution
Response
kernel 3x3
f
f
f
Convolutions
畳み込み層(4)
入力が複数チャンネル(カラー画像など)の場合
22
*
各チャンネルにフィルタを畳み込む
Red Green
Blue
活性化関数
シグモイド関数 Rectified Linear Unit(ReLU) Maxout
古くから使われている サチると勾配が消滅
画像認識でよく使われる 学習が速く、勾配がサチることがない
複数のカーネルの畳み込み値の最大を出力 区分線形凸関数 ReLUより表現力が高い 勾配が消えない
f (xi ) =max(x j, 0)f (xi ) =1
1+ e−x j
23 Convolutions
Maxout
Input image
Feature map
10x10
kernel 3x3
8x8x3
Convolution
Feature map 8x8
複数のカーネルの応答値から最大値を出力
I.J.Goodfellow, D.Warde-Farley, M.Mirza, A.Courville, and Y.Bengio, “Maxout networks.“, arXiv preprint arXiv:1302.4389, 2013.
24
プーリング層
Max pooling
2x2の領域 での最大値
Average pooling
2x2の領域 での平均値
Lp pooling
f (xi ) = ( I(i, j)p *G(i, j))1p
i=1
m
∑j=1
n
∑
25 Sampling
ピークをより強調
Feature mapのサイズを縮小させる
全結合層
x1
x2
x3
xi
h1
h2
hj
各ノードとの結合重み
例えば、、 は を算出し、 activation functionに与えて値を得る
全結合型の構成
hj = f (WTx + bj )
26 Full connection
w11w12w21
w1 j
w22w31w32
w3 j
wij
wi2wi1
出力層
Softmaxを利用するのが一般的 P(y1)
P(y2)
P(yM) 各クラスの確率を算出して、 最大値を認識クラスとする
出力ノード数=認識するクラス数
x1
x2
x3
xi
h1
h2
hM
27
前層
出力層
classification
各クラスの確率
P(yi ) = exp(hi )
exp(hj )j=1
M
∑
どうやって学習するの?
Layer数が多ければ多いほど沢山のパラメータ
教師データをもとに識別エラーから各パラメータを更新 エラーが小さくなるように更新を繰り返し行い、収束を図る
学習できめること: 各種パラメータ 畳み込み層の各カーネルの要素の値,バイアス
全結合層の各ユニットの結合重み,バイアス
28
学習の流れ(1)
29
ニューラルネットワークと同様に,順伝播と逆伝播による更新を繰り返し行い,良いパラメータ群を得る
Input: 画像:x ラベル:y
学習セット: (I1,y1),…, (xn,yn)
順伝搬 現パラメータ群により各学習データの認識を行う
逆伝搬 認識結果(誤差)をもとに,パラメータ群を更新する
Convolution
Full connection
Classification
学習の流れ(2)
Input: 画像:xi ラベル:yi
学習セット: (x1,y1),…, (xn,yn)
全パラメータをWとする
ロス関数:y’iとラベルyiの違いを算出
これを最小化する
30
Convolution
Full connection Classification
y' = F(W, x)
E = Loss(F(W, xi ), yi )i
n
∑
誤差を最小化するように各層のパラメータを更新する
誤差逆伝播法で誤差の偏微分を計算
更新率γを掛けて、パラメータ群Wを更新
W←W −γ∂E∂W
パラメータの学習
勾配法
誤差を元に,勾配=更新量を求める
E =NX
n=1
qX
k=1
(rnk � ynk)2
誤差関数を微分する
wi(t) wi(t+1)
E(t) @E(t)
@wiwi(t+ 1) = wi(t)� ⌘
@E(t)
@wi
31
誤差関数(1)
二乗和誤差
E =qX
k=1
(rk � yk)2
クロスエントロピー誤差
E = �NX
n=1
{rn ln yn + (1� rn) ln(1� yn)}
E = �NX
n=1
CX
c=1
rcn ln ycn
2クラス問題の場合
多クラス問題の場合
32
誤差の更新方法(1)
最急降下法
すべての学習サンプルを一度に用いて誤差を求める
E =NX
n=1
qX
k=1
(rnk � ynk)2
誤差から重みを更新する
wi(t) wi(t+1)
E(t) @E(t)
@wi
学習サンプルが増えるにつれて 計算量が増加する
wi(t+ 1) = wi(t)� ⌘@E(t)
@wi
33
誤差の更新方法(2)
確率的勾配降下法(オンライン)
1つの学習サンプルを一度に用いて誤差を求める
誤差から重みを更新する
wi(t) wi(t+1)
E(t) @E(t)
@wi
E =qX
k=1
(rk � yk)2
・学習サンプル数が大量に増えたとしても 計算量は変化しない ・しかし,1つのサンプルの誤差により 大きく更新される
wi(t+ 1) = wi(t)� ⌘@E(t)
@wi
34
誤差の更新方法(3)
確率的勾配降下法(ミニバッチ)
少量の学習サンプルを一度に用いて誤差を求める
誤差から重みを更新する
wi(t) wi(t+1)
E(t) @E(t)
@wi
最急降下法と確率的勾配降下法(オンライン)のデメリットを補う −計算量は変化しない −誤差を総和するため大きく変化しにくい
E =NX
n=1
qX
k=1
(rnk � ynk)2
wi(t+ 1) = wi(t)� ⌘@E(t)
@wi
35
初期のパラメータはどうする?
すべて乱数できめます・・・
良いパラメータを得る方法として,教師なし学習がある CNNの場合はほとんど用いられることはない
36
汎化性を向上させるための方法
37
Dropout
全結合層の過学習を抑制する
(学習方法のおさらい) 入力データのラベルとネットワークの 出力の誤差を元にパラメータを更新
Input layer
Kernel
K1
Kn
Fully connected layerの一部のノードからの結合を取り除く(0にする) だいたい50% 各mini-batchで異なる結合をランダムに取り除く 近似的なアンサンブル学習
G. Hinton, N.Srivastava, A.Krizhevsky, I.Sutskever, and R.Salakhutdinov, “Improving neural networks by preventing co-adaptation of feature detectors.”, arXiv preprint arXiv:1207.0580, 2012. 38
学習画像の生成
Elastic Distortion 位置や大きさだけでなく,形状の変化も適用
Data Augmentation 位置や大きさを変えて学習データ数を増やす
39 P.Y. Simard, D. Steinkraus, and J.C. Platt, “Best practices for convolutional neural networks applied to visual document analysis.”, ICDAR2003.
前処理の重要性
Global Contrast Normalization
各画像を平均0,分散1になるように正規化
入力データの明るさを正規化することで性能が向上
40
前処理の重要性
Global Contrast Normalization 各画像を平均0,分散1になるように正規化
正規化なし 正規化あり
下図はpylearn2の結果
41
前処理の重要性
ZCA whitening
隣接ピクセルの冗長性をなくすような Wを主成分分析により学習
X ' =WX
http://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf
隣接ピクセルの冗長性をなくす
42
前処理の重要性
ZCA whitening
43
ZCA whitening only
Global contrast normalization + ZCA whitening
Normalize Layer
activation function で得られた値を正規化
Convolutional layer Normalize layer
Pooling layer Convolutional layer Normalize layer
Pooling layer
pooling layer後にNormalize layerを配置することもある
44
Normalize Layer
Local contrast normalization
Convolutional layer Normalize layer
同一特徴マップにおける局所領域内で正規化する
vj,k = x j,k − wp,qx j+p,k+q∑wp,q =1∑
yj,k =vj,k
max(C,σ jk )
σ jk = wpqvj+p,k+q2∑
K. Jarrett, K. Kavukcuoglu, M. Ranzato and Y.LeCun ,“What is the Best Multi-Stage Architecture for Object Recognition?”, ICCV2009 45
Normalize Layer
Local response normalization
Convolutional layer Normalize layer
同一位置における異なる特徴マップ間で正規化する
yij,k = (1+α (ylj,k )2 )β
l=i−N /2
i+N /2
∑
46 G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever and R. R. Salakhutdinov ,“Improving neural networks by preventing co-adaptation of feature detectors ”, arxiv2012
学習時間について
CPU V.S. GPU(1回の更新にかかる時間)
Layer CPU (Core2 2.6GHz)
GPU (GeForce GT690)
比率
畳み込み層 カーネル:1
27.3ms 11.6ms 2.35倍
畳み込み層 カーネル:20
451.5ms 29.2ms 15.46倍
全結合層 ノード数:100
486ms 14.8ms 32.84倍
学習率 Pre training :0.5 Fine tuning :0.01 Mini-batch :10
47
リソースサイズについて
Layerの種類 リソースサイズ
畳み込み層 カーネルサイズ:5x5、 カーネル数:1
0.1KB
畳み込み層 カーネルサイズ:5x5、カーネル数:32
4KB
全結合層 ノード数:100 (パラメータ数:約87000)
0.35MB
入力画像サイズ:40x40ピクセルの場合
48
組込み向けGPU(1)
49
192-core CUDA Enabled Kepler GPU
4 + 1(LP) core ARM Cortex A15 CPU
2014
組込み向けGPU(2)
50
TEGRA X1 MOBILE SUPERCHIP 256-core Maxwell GPU | 8-core 64-bit CPU | 4Kp60 10-bit H.265/VP9
2015
組込み向けGPU vs. CPU
51
Tegra 2 Tegra 3 Tegra 4
Tegra K1
0
200
400
600
800
1000
1200
GFL
OPS
Tegra X1 (FP16)
TIME FP16/INT16
Core i7
Tegra X1
CPU
GPU GPU
CPU
画像認識におけるDeep Learningの活用
52
Deep Learningの応用先
検出 回帰
セグメンテーション
人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり
シーンラベリング
顔器官検出
人の姿勢推定
手領域抽出
髪領域抽出
顔ラベリング
53
認識
一般物体認識(LSVRCトップ)
顔認識(照合) (LFWトップ)
人物属性推定
一般物体検出 (Pascal VOCトップ)
文字認識
AlexNet
ILSVRC2012で優勝したネットワーク
54
• 2つのGPUで別々に学習(最終層で結合) • 5つの畳み込み層 • 3つの全結合層
1層目のフィルタ
A. Krizhevsky, I. Sutskever G. E. Hinton , ImageNet Classification with Deep Convolutional Neural Networks (NIPS2012)
Clarifi
ILSVRC2013で優勝したネットワーク
55
Convolution Pooling Softmax Other
• 5つの畳み込み層(うち3層にMaxpooling) • 3つの全結合層
Adaptive Deconvolutional Networks for Mid and High Level Feature Learning(CVPR2011)
各層の中間表現を可視化して,良いネットワークを選択 => Deconvolutional Networksを活用
Network in Network(1)
畳み込み層の活性化関数に小さなネットワークを導入
56 Lin, Min, Qiang Chen, and Shuicheng Yan. "Network In Network." (ICLR-2014)
Input image
Feature map
Response
kernel
マイクロネットワーク
Network in Network(2)
簡単な実装:1x1の畳み込み処理として表現ができる
57 Lin, Min, Qiang Chen, and Shuicheng Yan. "Network In Network." (ICLR-2014)
CCCP層で畳み込むフィルタは全ての位置で同じなので,パラメータ数は増えない
Network in Network(3)
全結合層なしでネットワークを構成
58
ILSVRC2014での性能 TOP5のエラー率 10.91% for 1 model 9.79% for 3 models
GoogLeNet(1)
22層のネットワーク
59
Convolution Pooling Softmax Other
• Network in Networkを参考にしたInceptionモジュールを9つ積層
• 全結合層はなし
http://www.image-net.org/challenges/LSVRC/2014/slides/GoogLeNet.pptx
GoogLeNet(2)
Inceptionモジュール
60
1x1 convolutions
3x3 convolutions
5x5 convolutions
Filter concatenation
Previous layer
3x3 max pooling
1x1 convolutions
1x1 convolutions
1x1 convolutions
http://www.image-net.org/challenges/LSVRC/2014/slides/GoogLeNet.pptx
1x1の畳み込み層とNxNの畳み込み層を組み合わせる
VGG
61
Conv-64 3x3のフィルタを64個
Conv-128 3x3のフィルタを128個
Conv-256 3x3のフィルタを256個
Conv-512 3x3のフィルタを512個
(a) (b)
3x3のフィルタを2層積層すると5x5のフィルタと等価になる
AlexNetとほぼ等価の構成
62
Team Year Place Error (top-5) External data
SuperVision – Toronto (7 layers)
2012 - 16.4% no
SuperVision 2012 1st 15.3% ImageNet 22k
Clarifai – NYU (7 layers) 2013 - 11.7% no
Clarifai 2013 1st 11.2% ImageNet 22k
VGG – Oxford (16 layers) 2014 2nd 7.32% no
GoogLeNet (19 layers) 2014 1st 6.67% no
Human expert* 5.1%
Team Method Error (top-5)
DeepImage - Baidu Data augmentation + multi GPU 5.33% PReLU-nets - MSRA
Parametric ReLU + smart initialization 4.94%
BN-Inception ensemble - Google
Reducing internal covariate shift 4.82%
LFWデータセットでの顔認証精度
Deep Learningによる手法がトップレベルに
63
http://www.ee.cuhk.edu.hk/~xgwang/talks/deeo_learning_icip2.pdf
LFWデータセット:約6000組のテストセット 被験者実験(10人)での照合精度: 56%
Deep Learningによる顔照合(DeepFace)
64
CNNによる顔照合
4030人分の画像440万枚を学習に利用 人間と同等レベルの精度
顔のアライメント+CNNによる特徴抽出
Y.Taigman、M.Yang、M.Ranzato、L.Wolf, “DeepFace: Closing the Gap to Human-Level Performance in Face Verification”, CVPR2014
Deep Learningによる顔照合(DeepFace)
65
顔のアライメント
2次元アライメント(LBP+SVR) 顔の器官点6点を検出,位置合わせ 3次元アライメント(3次元モデル) 詳細点67点を標準的な3次元モデルに フィッティング
2次元+3次元アライメントにより,顔向きを補正
Y.Taigman、M.Yang、M.Ranzato、L.Wolf, “DeepFace: Closing the Gap to Human-Level Performance in Face Verification”, CVPR2014
Deep Learningによる顔照合(DeepFace)
66
CNN
1層目のみPoolingを利用 (位置不変性が不要) 4層目以降は,位置ごとに畳み込むフィルタを個別に学習 (位置ごとに詳細な特徴を抽出)
Y.Taigman、M.Yang、M.Ranzato、L.Wolf, “DeepFace: Closing the Gap to Human-Level Performance in Face Verification”, CVPR2014
Deep Learningによる顔照合(DeepFace)
67
照合結果
最後の隠れ層の値を特徴ベクトルとして利用(4096次元) 照合対象の特徴ベクトルとの距離計算で同一人物かどうかを判定
Y.Taigman、M.Yang、M.Ranzato、L.Wolf, “DeepFace: Closing the Gap to Human-Level Performance in Face Verification”, CVPR2014
Deep Learningの応用先
回帰
セグメンテーション
シーンラベリング
顔器官検出
人の姿勢推定
手領域抽出
髪領域抽出
顔ラベリング
68
認識
一般物体認識(LSVRCトップ)
顔認識(照合) (LFWトップ)
人物属性推定 文字認識
検出
人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり
一般物体検出 (Pascal VOCトップ)
物体検出
R. Girshick, J. Donahue, T. Darrell, J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation” , Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2014.
Caffeをもとに,物体のLocalizationに応用 CNNで抽出した特徴量をSVMでクラス識別 Pascal VOCでトップの物体検出
69
CNNを特徴量の生成として使用
Deep Learningによる物体検出(R-CNN)
Selective Searchによる候補領域の抽出
70
候補数は2000
R. Girshick, J. Donahue, T. Darrell, J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation” , Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2014.
Deep Learningによる物体検出(R-CNN)
領域の変形
71
全ての候補領域を一定の大きさに正規化(アスペクト比は無視) ⇒CNNの入力データサイズに合わせる
R. Girshick, J. Donahue, T. Darrell, J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation” , Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2014.
Deep Learningによる物体検出(R-CNN)
CNNによる特徴抽出
72
AlexNet (LSVRC2012で優勝したSuperVisionのネットワーク構成) プレトレーニング: Image netで学習 ファインチューニング:Pascal VOCのデータセットで更新
R. Girshick, J. Donahue, T. Darrell, J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation” , Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2014.
Deep Learningによる物体検出(R-CNN)
SVMによる識別
73
各クラスの識別器を学習(線形SVM) Pascal VOCのデータを利用して学習データセットを作成
R. Girshick, J. Donahue, T. Darrell, J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation” , Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2014.
Deep Learningによる物体検出(R-CNN)
Pascal VOCの性能
74
http://www.image-net.org/challenges/LSVRC/2013/slides/r-cnn-ilsvrc2013-workshop.pdf
Deep Learningによる物体検出(R-CNN)
認識結果例(鳥クラス)
75
http://www.image-net.org/challenges/LSVRC/2013/slides/r-cnn-ilsvrc2013-workshop.pdf
歩行者検出(1)
Dropoutにランダム性を導入し,汎化性能を向上 ⇒Random Dropout Dropout =ユニットの出力を一定の割合で0にする手法
教師信号
ユニットの削減率
Dropout 50% 50%
Random Dropout 60% 75%
一定の割合
ランダムで割合を決定
歩行者検出(2)
認識時にネットワーク構成の一部をランダムに変更 複数のネットワークの出力の中央値を最終出力とする
アウトライアな応答値を出すネットワークを除外
0.23
0.77
0.42
0.58
0.15
0.85
Positive
Negative
・ ・ ・
・ ・ ・
・ ・ ・
・ ・ ・
STEP1:全結合層の構成が異なる ネットワークを複数作成
STEP2:応答値を統合
・ ・ ・
Caltech Pedestrian Datasetを用いた評価
評価で使用するサンプル数(4,021枚)
State-of-the-artな歩行者検出法であるJoint Deepと同等の精度で検出可能
従来のCNNに比べて約7%Miss Rateが減少
DPMと比べて約23%Miss Rateが減少
歩行者検出結果例
歩行者検出例
DPM
提案手法
Deep Learningの応用先
検出 回帰
人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり
顔器官検出
人の姿勢推定
81
認識
一般物体認識(LSVRCトップ)
顔認識(照合) (LFWトップ)
人物属性推定
一般物体検出 (Pascal VOCトップ)
文字認識
セグメンテーション
シーンラベリング
手領域抽出
髪領域抽出
顔ラベリング
シーン認識
畳み込みニューラルネットワークを利用して,各ピクセルのシーンラベルを付与 画素情報をそのまま入力して,特徴を自動的に学習 Superpixelによるセグメンテーションも併用
C.Farabet, C.Couprie, L.Najman, Y.LeCun, “Learning Hierarchical Features for Scene Labeling.”, PAMI2013. 82
畳み込みニューラルネットワークでのシーン認識
手の形状抽出
畳み込みニューラルネットワークを用いて領域を抽出
�����������
�����������
��
������
��������
�����
��������� ���
������ ����
����������� �������� ��� �������� �����������
� ��������� � ����������!�"�� � � � ���������
�!�"����� �
��������������� � ��� ������
� ����� ������
layer type size, # of kernels
Input grayscale 40x40
1st convolution 5x5, 32
2nd max pooling 2x2
3rd maxout 4
4th convolution 5x5, 32
5th max pooling 2x2
6th maxout 4
7th fully connected 200
output L2 norm 1600
83
手の形状抽出
畳み込みニューラルネットワークを用いて領域を抽出
更新回数 precision recall F value
0 0.2303 1.0000 0.3742
50000 0.8930 0.9135 0.9032
100000 0.8968 0.9199 0.9082
150000 0.9054 0.9186 0.9120
200000 0.9033 0.9234 0.9133
カーネル precision recall F value
3x3 0.9097 0.9133 0.9115
5x5 0.9033 0.9234 0.9133
7x7 0.9056 0.9039 0.9047
84
ネットワークの学習過程の可視化(1)
updating time : 0 - 50000
85
最上位の隠れ層ー識別層間の重み
86
x1
x2
x3
xi
y1
y2
Yj
ネットワークの学習過程の可視化(2)
最上位の隠れ層ー識別層間の重み
87
x1
x2
x3
xi
y1
y2
Yj
ネットワークの学習過程の可視化(3)
最上位の隠れ層ー識別層間の重み
88
x1
x2
x3
xi
y1
y2
Yj
ネットワークの学習過程の可視化(3)
最上位の隠れ層ー識別層間の重み
89
x1
x2
x3
xi
y1
y2
Yj
ネットワークの学習過程の可視化(4)
顔パーツラベリング
マルチクラスセグメンテーションへの応用
シーンラベリング
マルチクラスセグメンテーションへの応用
Deep Learningの応用先
認識
検出
セグメンテーション
一般物体認識(LSVRCトップ)
一般物体検出 (Pascal VOCトップ)
人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり
顔認識(照合) (LFWトップ)
シーンラベリング
人物属性推定 手領域抽出
髪領域抽出
顔ラベリング
92
回帰
顔器官検出
人の姿勢推定
顔器官検出
Convolution Layer Pooling Layer
Fully Connection Layer Output units
器官点の座標数=出力ユニット
各器官点の座標を出力する 誤差は最小二乗法により求める
93
顔輪郭検出
Convolution Layer Pooling Layer
Fully Connection Layer Output units
輪郭点の座標数=出力ユニット
各輪郭点の座標を出力する 誤差は最小二乗法により求める
画像認識における学習時の工夫
95
カリキュラムラーニング(1)
学習過程で難しいサンプルを追加する (= similar with Bootstrap, but different…)
Y. Bengio, J. Louradour, R. Collobert, J. Weston, “Curriculum Learning”, ICML2009.
x1
x2
x3
xi
y1
y2
yj
y1
y2
y3
h1
h2
hj
初期の学習(単純なパターン)
学習の後期(複雑なパターン)
96
カリキュラムラーニング(2)
認識問題を直接解決するのではなく,中間的な問題を通して解く
97
カリキュラムラーニング(3)
領域抽出に対応したネットワークを学習
Convolutional Layer Pooling Layer Convolutional Layer Pooling Layer fully connection Layer
Binarization layer
Input data : gray scale image ground truth : hand segmented image
98
カリキュラムラーニング(4)
パラメータを初期値として利用
ネットワークのパラメータを転移する
パラメータを更新
Input data : gray scale image ground truth : class label
99
カリキュラムラーニング(5)
認識は識別問題に対応したネットワークのみ利用
5
Input data : gray scale image output : class label
100
カリキュラムラーニング(6)
� � � � � �
� ����� ���� ���� ���� ���� ����
� ���� ���� ���� ���� ���� ����
� ���� ��� ���� ���� ���� ����
� ���� ���� ���� ����� ��� ����
� ���� ���� ���� ��� ����� ����
� ���� ���� ���� ���� ���� �����
� � � � � �
� ����� ����� ���� ��� ���� ����
� ���� ���� ����� ���� ���� ����
� ��� ����� ��� ���� ���� ����
� ���� ���� ���� ���� ����� ����
� ���� ��� ���� ���� ����� ����
� ���� ���� ���� ���� ���� ���
without curriculum learning with curriculum learning
Ground Truth class
clas
sific
atio
n cl
ass
Ground Truth class
clas
sific
atio
n cl
ass
101
カリキュラムラーニング(7)
カリキュラムラーニングを導入した顔器官検出
��
��� �
����
��� �
�� ����� ���������� ����� �� ������������������� ��������
�������������������������������������������������������������������
����������������
������
������
����� ���� ��� � ��������������������� �������������� ���� ���� ����
������������������ � ���
����� ������� � ������������������������� �����������������
���� ����
���������������� � ���
�������� ������ �����������������������������
���� ����
� ���
���
������
������
�����������
� ���
���
������
������
�����������
ヘテロジニアスラーニング(1)
複数の異なる情報を同時に学習
Convolution Layer Pooling Layer
Fully Connection Layer Output units
年齢と性別の同時推定
男性or女性
年齢
ヘテロジニアスラーニング(2)
ヘテロジニアスラーニングによる性別・年齢の同時推定
顔器官検出と性別年齢推定
ヘテロジニアスラーニング(3)
ヘテロジニアスラーニングによる歩行者検出と部位推定
1
0.0001 0.001 0.01 0.1 1 10M
iss R
ate
False Positive per Image
回帰型DCNN 31.77%単体のDCNN 38.38%
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
Daimler Mono-‐Pedestrian Benchmark Dataset の評価結果
距離[m] 距離推定結果[m] 誤差[%] 5 4.89 2.2
10 9.26 5.3
15 14.12 5.8
Deep Learningのツール
107
Theano(1)
数値演算ライブラリ Theano (python) 偏微分等の数値演算実装が容易
http://deeplearning.net/software/theano/
108
Theanoを利用したDeep Learning(1)
http://deeplearning.net/tutorial/intro.html
109
Caffe(1)
Caffe : 今最もよく使われている 畳み込みニューラルネットワークの公開実装コード
https://github.com/UCB-ICSI-Vision-Group/decaf-release/
UC バークレーの研究グループ(T. Darrell) 学習済みのネットワークも公開 これをベースにベンチマークサイト(Kaggle)でトップになっているチームもあり 開発速度が早く,最新の手法が実装されている コミュニティが大きく,情報共有が盛ん (最高性能の設定ファイル,学習結果ファイルなどが共有される)
110
Chainer
111 http://chainer.org
Chainer : pythonベースで非常に使いやすい Preferred Networksが開発
まとめ
デープラーニングの基礎について紹介 ディープラーニングの概要
畳み込みニューラルネットワーク
応用事例 物体検出,物体認識,セグメンテーション,回帰
カリキュラムラーニング,ヘテロジニアスラーニング
プロジェクトページ : mprg.jp
質問などは [email protected] へ
112