The University of Electro-Communications
Tokyo, JAPAN (UEC)
「物体認識論」
総合情報学科 第6学期講義
第11回目(講義7回目)(16/01/12)
講義担当:柳井
http://mm.cs.uec.ac.jp/object/
第1回 (10/06):画像認識とは?イントロダクション.身の回りでの応用例から最新研究まで
第2回 (10/20):画像認識の基礎.画像処理.エッジ検出.色ヒストグラムに基づく画像検索.
第3回 (10/27):【演習1】 MATLAB の基礎.顔検出,物体検出を試してみる.
第4回 (11/10):【演習2】 MATLABでの画像の取り扱い.色ヒストグラムに基づく画像検索.
第5回 (11/17):様々な特徴量.輝度勾配ヒストグラム.局所特徴量.SIFT特徴量.
第6回 (11/24):一般物体認識.BoF法による特徴ベクトル生成.K-Means法.
第7回 (12/01):【演習3】 局所特徴量の抽出.特定物体認識.
第8回 (12/08):機械学習法.Nearest Neighbor法.線形/非線形SVM.NaiveBayes法.
第9回 (12/15):【演習4】 BoFベクトルの生成.K-means法.
第10回 (12/22):Deep Learningによる画像認識の基礎.確率的勾配降下法.
第11回 (1/12):Deep Learningの各種レイヤ-.誤差逆伝搬法.認識結果の評価方法.
第12回 (1/19):【演習5】 BoFと機械学習を用いた一般物体認識.
第13回 (1/26):【演習6】 Deep Learningによる一般物体認識.
第14回 (2/02):【演習7】 レポート課題説明(1):Web画像の自動収集.
第15回 (2/09):【演習8】 レポート課題説明(2):画像分類と,Web画像の再ランキング.
今回の予定本日の予定 (講義最終回)
2010年以降の優勝チームの成績5個候補を上げてその中に正解がある割合
0
20
40
60
80
100
120
2010 2011 2012 2013 2014 2015 訓練した人間
1000種類画像認識の精度
3
94.9%
72%
SIFT+BOF
75%
SIFT+BOF
85%
DeepLearning
8 層
88.3%
8 層
DeepLearning
93.3%
23層
DeepLearning
96.4%
152層
DeepLearning
人間を超えた!
人間
1000種類コンペティションは人工知能の進化を象徴している
1000種類画像認識国際コンペティション2012年 Deep Learning ショック!
Deep Learning(深層学習)を使った
参加チーム(トロント大)
従来手法(BoF)による参加チーム(トロント大以外すべて)
この表はエラー率なので,正解率は 100%-(エラー率)
85%
75%
1位と2位の差が10%!
トロント大チームは画像認識研究者
ではない.DeepLearningの研究グループ.
画像認識の多くの問題でDeep Learningが認識性能を大幅に向上させる.(動画以外)これまでの常識が全部ひっくり返った
出現頻度
代表的パターン
認識画像 局所パターン 代表パターンヒストグラム
機械学習分類器
認識結果
2013~
画像認識におけるパラダイムシフト
元の画像
認識結果
Deep Neural Network
誰も予想できない急激な進歩.
画像認識での深層学習の成功の3大要因
1. 大規模畳込みネットワーク
画像向けの深層学習法
2. 大規模な学習データ
100万枚規模の(分類された)画像データベース
3. 深層学習の膨大な計算量の克服
GPUによる高速計算 DualGPUで1週間で学習
2012年の優勝チームトロント大チーム(Hintonチーム):これら3つを結びつけ,有効性を実証した
[1] 畳み込みネットワーク
認識画像
出現頻度
代表的パターン
局所パターン 代表パターンヒストグラム
認識結果
特徴抽出部分に相当分類部分に相当
特徴抽出から分類まで,すべて多層ネットワークで行う.入力が画像で,出力がクラス確率.End-to-end ネット.
「自動車」
224x224
RGB画像
クラス確率ベクトル
岡谷先生(東北大) PRMU2013/1チュートリアル講演資料
32x32
畳み込みネットは,学習された典型的パターンに反応するフィルタの集合.
フィルタの反応結果が後ろの層に伝搬.
畳み込みネットのルーツは,元電通大の福島先生(庄野先生の師匠)
学習されたフィルタが反応するパターン低次層:直線や円など単純パターンに反応
9
Zeiler, M. and Fergus, R.: "Visualizing and Understanding Convolutional Networks", ECCV, (2014).
「自動車」
学習されたフィルタが反応するパターン中間層:タイヤや格子模様など物体のパーツに反応
10
Zeiler, M. and Fergus, R.: "Visualizing and Understanding Convolutional Networks", ECCV, (2014).
「自動車」
学習されたフィルタが反応するパターン高次層:犬や花,一輪車など物体に反応
11
Zeiler, M. and Fergus, R.: "Visualizing and Understanding Convolutional Networks", ECCV, (2014).
「自動車」
画像認識での深層学習の成功の3大要因
1. 大規模畳込みネットワーク
画像向けの深層学習法
2. 大規模な学習データ
100万枚規模の(分類された)画像データベース
3. 深層学習の膨大な計算量の克服
GPUによる高速計算 DualGPUで1週間で学習
2012年のトロント大チーム(Hintonチーム):これら3つを結びつけ,有効性を実証した
大規模畳み込みネットワークの学習には大量画像データが必要
130万枚の1000カテゴリの学習データ
1000種類認識チャレンジデータセット(ImageNet Large Scale Visual Recognition Challenge)
大量画像データ
6000万パラメータ(AlexNet)の学習• 1回の認識(feed forward) に必要な演算:数十億回の加乗算• 学習には feed forward + feed backward(逆伝番)が必要• 数十億回 * 100万枚 * 30回 ⇒ 最新GPUで,約1週間
クラウドソーシングサービス (2005年)
Amazon Mechanical Turk
世界中の“人力”の利用 : crowd-sourcing
学習画像データ作成,認識結果評価に利用可能.
14
安価な対価(例えば,1枚0.1セント程度)で画像をチェックしてくれる.
世界中から作業者をWebで集める.
研究者の意図が一切入ってない⇒ 現実の「写真」に近い.
ImageNet
あらゆる言葉に関する画像をデータベース化.Wordnetの画像版.
名詞句21,841語の画像を合計14,197,122枚.
階層構造を持つ大規模画像DBの意義
画像認識の学習・評価データ.
画像と意味の大規模分析.
15
http://www.image-net.org/
[Deng et al. CVPR2009]
多言語テキスト検索による画像収集
クラウドソーシングによるクリーニング
image-net.orgで公開.
誰でも利用可.
(Stanford大)
画像認識での深層学習の成功の3大要因
1. 大規模畳み込みネットワーク
画像向けの深層学習法
2. 大規模な学習データ
100万枚規模の(分類された)画像データベース
3. 深層学習の膨大な計算量の克服
GPUによる高速計算 DualGPUで1週間で学習
2012年のトロント大チーム(Hintonチーム):これら3つを結びつけ,有効性を実証した
大規模畳み込みネットワークの学習には大量画像データが必要
130万枚の1000カテゴリの学習データ
1000種類認識チャレンジデータセット(ImageNet Large Scale Visual Recognition Challenge)
大量画像データ
6000万パラメータ(AlexNet)の学習• 1回の認識(feed forward) に必要な演算:数十億回の加乗算
• 学習には feed forward + feed backward(逆伝番)が必要• 数十億回 * 100万枚 * 30回 ⇒ 最新GPUで,約1週間
GPUはdeep learningに必須
CPUのみの計算の 10~50倍程度高速化.
GTX Titan Black/X,980Ti, Tesla K20/40/80
PCクラスタから,GPUクラスタへ.
一般物体認識の分類 (1)
画像全体のカテゴリー分類
画像アノテーション:複数ラベルの付与
文生成:画像内容を説明する文を自動生成
クマ トラ ゾウ
ゾウキバ空草草原
クマ草水
トラ草草原
クマが水の上を歩いています
.
トラが草原にいます.
ニューラルネットワーク
人間の脳をモデル化した学習手法
多数のニューロンの結合によって学習器を構築
階層型(リカレント型)と相互結合型
パラメータWiとθを学習によって求める
fは,シグモイド関数を用いることが一般的.
単体ニューロンはパーセプトロン(1957),
階層型はBP学習(1986).
1980~90年代の階層型ニューラルネットワークの構造
入力層
中間層
出力層
1980~90年代のNeural network
入力,中間,出力の3層構成(中間層は2層以上の場合もあるが,一般的には1層のみ)
全結合層のみ.各層のセル数もあまり多くない.
あまり大規模なネットワークは利用されない ⇒パラメータが多すぎて,学習が困難.⇒ 2000年前後のSVMの登場によって,忘れられた!
Deep Learning (特に,Deep
Convolutional Neural Network, DCNN)
昔のニューラルネットがdeepになって復活.
Layerが増えて,多層化.
単純なニューロン (𝑦 = 𝑓 ∑𝑤𝑖𝑥𝑖 )だけではなく,convolutional network の導入.(1990年代から既にあ
ったが,有効性がさほど認識されていなかった.)
Sigmoid関数 (𝑓 𝑥 = 1/(1 + 𝑒𝑥))の代わりにRectified Linear Unit (ReLU) (𝑓 𝑥 = max(0, 𝑥)) の導入.
大量のデータによる学習.(例えば,1000種類120万枚) (+dropoutによる過学習の防止)
計算機の高速大容量化.GPUによる高速計算.
•でも,学習方法は,Back Propagationで昔と同じ.
26
Convolutional network
前半が畳み込み層(convolutional layer),後半が昔と同じ全結合層(full connection)
28
Convolutional layer
(畳込み層)Full-connection layer
(全結合層)
画像認識システムとは?
画像を入力すると,クラス確率を返すシステム.
事前の学習が必要: クラスクラス付き画像画像
30
「ライオン」
認識結果
「山」
「椅子」
クラス確率
「ライオン」
「山」
「椅子」
ラベル付き学習データ
特徴抽出
機械学習
モデルの学習
学習
未知の画像?
特徴抽出
学習済モデルによる分類
分類 [0.85,
0.10,
0.05]
𝒚 = 𝑓(𝒙)𝑓 ∶ 画像認識システム
𝒙 ∶画像(ベクトル)
𝒚 ∶ クラス確率(ベクトル)
画像認識システム𝑓(𝒙)の構築従来手法: SIFT⇒BoF⇒SVM
いかに 𝒚 = 𝑓(𝒙)を設計するか?
局所パターン(SIFT)⇒ BoFベクトル⇒ SVMによる分類
31
𝒚 = 𝑓(𝒙)𝑓 ∶ 画像認識システム
𝒙 ∶画像(ベクトル)
𝒚 ∶ クラス確率(ベクトル)
出現頻度
代表的パターン
認識画像 局所パターン 代表パターンヒストグラム SVM分類器
クラス確率(尤度)
𝒚
𝒙
𝑓(𝒙)
画像認識システム𝑓(𝒙)の構築深層学習 (Deep Learning)
いかに 𝒚 = 𝑓(𝒙)を設計するか?
多層のニューラルネットワーク: 画像からクラス確率まで
end-to-end(端から端まで)変換.
32
𝒚 = 𝑓(𝒙)𝑓 ∶ 画像認識システム
𝒙 ∶画像(ベクトル)
𝒚 ∶ クラス確率(ベクトル)
クラス確率(尤度)
𝒚
𝒙
𝑓(𝒙)
認識画像Deep Neural Network
Deep Neural Networkの学習
学習データに基づいて,任意の 関数𝑓(𝒙) を構築する手法.
33
𝒇(画像) ⇒ (ライオン確率,椅子確率,山確率)
𝑓(𝒙)
Deep Neural Network
「ライオン」
「山」
「椅子」
大量のラベル付き学習データ
複数の種類のレイヤーから構成.
畳み込み層 (convolutional layer)
全結合層 (fully connected layer)
プーリング層 (pooling layer)
活性化関数 (activation function)
出力関数(output function) (学習時は誤差関数)
44
conv-af-pool- conv-af-pool- conv-af- conv-af- conf-af-pool- full-af- full-af- full-af-out
AlexNetの例
1 2 3 4 5 6 7 8
Convolutional Neural Nets (CNNs): 1989
LeNet: a layered model composed of convolution and
subsampling operations followed by a holistic representation
and ultimately a classifier for handwritten digits. [ LeNet ]
LeNet: 数字認識(0~9)のネットワーク
入力: 32x32 の濃淡画像, 出力: 0~9 のそれぞれの確率
Conv-pool- conv-pool- full-af- full-af- out
5x5 x6 5x5 x161/2 1/2
基本構成: 畳み込み⇒全結合
畳み込み⇒活性化関数⇒プ―リング の繰り返し
畳み込み層 (convolutional layer): フィルタリング
活性化関数 (activation function): 非線形関数
プーリング層 (pooling layer): 画像の縮小
全結合⇒活性化関数 の繰り返し
全結合層 (fully connected layer): 全結合ネット
活性化関数 (activation function): 非線形関数
出力関数(output function): 最終出力値を作成
46
前半部(特徴抽出)
後半部(分類器)
岡谷先生(東北大) PRMU2013/1チュートリアル講演資料
32x32
畳み込みネットは,学習された典型的パターンに反応するフィルタの集合.
フィルタの反応結果が後ろの層に伝搬.
畳み込みネットのルーツは,元電通大の福島先生(庄野先生の師匠)
畳み込み層 Convolution Layer
複数のカーネル(フィルタ)をスライドさせてフィルタリング演算 近接の画素とのみ結合する(局所受容野)
カーネルは複数種類.出力のFeature mapも同じ数.
48
活性化関数Input image Feature map10x10 8x8
Convolution
Respons
e
kernel 3x3
f
f
f
Convolutions
エッジ抽出フィルタの演算と同じ.ただし,活性化関数が間に入る.
カーネルサイズ,カーネルの数は任意.サイズは3x3, 5x5など
⇒畳み込み演算 という
𝐹𝑖,𝑗,𝑘 = 𝑓
𝑥∈ 0,1,2
𝑦∈ 0,1,2
𝐾𝑥,𝑦,𝑘 𝐼𝑖+𝑥,𝑗+𝑦 + 𝑏k
FK
I
𝑏𝑘 はバイアス値.カーネル1つに1つ.
49
フィルタリング演算
フィルタリング演算
画像
O
F(i,j)
F(i,j) の値を隣接する画素の値から求める.
この計算をすべての画素について行い,出力画像を得る.
9/))1,1()1,()1,1(
),1(),(),1(
)1,1()1,()1,1((
),(
jifjifjif
jifjifjif
jifjifjif
jiF
変換前の画像の画素値 f(I,j)
変換後の画像の画素値 F(i,j)
とした時に,
例) F(i,j)の値を元画像の隣接9画素の平均値とする.
エッジ抽出
平滑化
50[参考] フィルタリングによる平滑化:ノイズ除去 少しぼやけるがノイズは減少
3x3マスク
1/9 1/9 1/9
平滑化フィルタ1
(平均フィルタ)
1/10 1/10 1/10
平滑化フィルタ2
9/))1,1()1,()1,1(
),1(),(),1(
)1,1()1,()1,1((
),(1
jifjifjif
jifjifjif
jifjifjif
jif
10/))1,1()1,()1,1(
),1(),(2),1(
)1,1()1,()1,1((
),(2
jifjifjif
jifjifjif
jifjifjif
jif
1/9 1/9 1/9
1/9 1/9 1/9
1/10 2/10 1/10
1/10 1/10 1/10
入力が3次元 (RGB) の場合
3次元のカーネルを2次元でスライドさせてフィルタリング演算
51
活性化関数
Input image
Feature map
10x10x3
8x8
Convolution
Respons
e
kernel 3x3
f
f
f
Convolutions
カーネルも3次元になる.でも,出力値は1つだけ.
F𝑖,𝑗,𝑘 = 𝑓(∑𝑧∈{0,1,2} ∑𝑥∈{0,1,2} ∑𝑦∈{0,1,2} 𝐾𝑥,𝑦,𝑧,𝑘 𝐼𝑖+𝑥,𝑗+𝑦,𝑧 + 𝑏𝑘)
FK
I
畳み込み層 (3) : パディング
10x10 を 3x3カーネルで畳み込むと,8x8 の feature mapが生成される
上下左右にはみ出し許可:パディング,padding
52
活性化関数
Input image
Feature map
10x10 + 上下左右1ずつはみ出しOK (padding)
10x10
Convolution
kernel 3x3
f
⇒実質 12x12 になる.
パディングを使うと feature mapのサイズと入力画像サイズが同じになる.⇒ 畳み込み層を何層にも容易に積み重ねられる.
はみ出した場所の画素値は0として計算.
畳み込み層 (4) : ストライド
通常は1画素ずつずらして,畳み込み.Stride=1
2画素ずつずらすと,feature mapサイズが半分.Stride=2
53
活性化関数Input image
Feature map10x10
4x4 (stride=2)
Convolution
kernel 3x3
f
畳み込みは計算量が多いので,画像サイズが大きい場合の最初に利用.⇒ ストライド2で,計算量は 1/4になる.
5x5 にしたい場合は,パディングと併用する.
stride 1(通常)の場合は,8x8
プ―リング層 Pooling Layer
最大プ―リングMax pooling
2x2の各領域での最大値
2x2の各領域での平均値
54
Sampling
• Feature mapのサイズを縮小: 最大,平均の2種類
平均プ―リングAverage pooling
6x4 feature map3x2 feature map
通常は2x2 stride 2でFeature mapサイズを1/2 にする.3x3 stride 2 で,1/2 にする場合もある.
2x2 stride2 で,max filterを掛けるのと同じ
2x2 stride2 で,平均フィルタを掛けるのと同じ
LeNet での,畳み込み層 と プ―リング層
入力: 32x32 の濃淡画像① 5x5 のカーネル x6 ⇒ 28x28 x6
② 2x2 の最大値プ―リング ⇒ 14x14 x6
③ 5x5 のカーネル x16 ⇒ 10x10 x16
④ 2x2の最大値プ―リング ⇒ 5x5 x6
① ② ③ ④
すべて,paddingなし,stride 1
全結合層 Fully connection layer
x1
x2
x3
xi
h1
h2
hj
各ノードとの結合重み バイアス値(スカラー値)
例えば、は
を算出し、 活性化関数f に与えて値を得る
hj = f (WT x+bj )
60
Full
connection
w11
w12
w21
w1 j
w22w31
w32
w3 j
wij
wi2wi1
行列とベクトルの積.
すべてのfeature maps を1列に並べてn次元ベクトルとし,m×n行列を掛けて,m次元ベクトルを出力.
活性化関数 Activation Function畳み込み層,全結合層に非線形性を与える関数
シグモイド関数 Rectified Linear Unit(ReLU) Maxout
古くから使われている|x|が大きくなると勾配が消滅
画像認識でよく使われる
学習が速く、勾配がサチることがない
複数のカーネルの畳み込み値の最大を出力
区分線形凸関数ReLUより表現力が高い勾配が消えない
f (xi ) = max(x j, 0)
61
Convolutions
𝑓 𝑥𝑖 = 1/(1 + 𝑒−𝑥𝑗)
最も一般的
出力層 Output Layer
画像分類の場合は Softmax関数P(y1)
P(y2)
P(yM)
出力の値の和が1⇒ 確率と見なせる.
各クラスの確率を算出して、最大値を認識クラスとする
目的に応じた関数: 分類の場合は softmax関数
x1
x2
x3
xi
h1
h2
hM
62
前層
出力層
classification
各クラスの確率
P(yi ) =exp(hi )
exp(hj )j=1
M
å
出力層の要素数 = 分類クラス数 とする.最終出力はクラス確率ベクトル.
LeNet での,全結合層 と 出力層
入力: 32x32 の濃淡画像① 5x5 のカーネル x6 ⇒ 28x28 x6
② 2x2 の最大値プ―リング ⇒ 14x14 x6
③ 5x5 のカーネル x16 ⇒ 10x10 x16
④ 2x2の最大値プ―リング ⇒ 5x5 x6 ⇒ 150次元ベクトル⑤全結合 120 x 150行列 ⇒ 120次元ベクトル⑥全結合 84 x 120行列 ⇒ 84次元ベクトル⑦全結合 10 x 84 行列 + Softmax関数⇒ 10次元確率ベクトル
① ② ③ ④ ⑤ ⑥ ⑦
大規模ネットワーク:AlexNetの場合
畳み込み層 (convolutional layer)
全結合層 (fully connected layer)
プーリング層 (pooling layer)
活性化関数 (activation function)
出力関数(output function) (学習時は誤差関数)
64
conv-af-pool- conv-af-pool- conv-af- conv-af- conf-af-pool- full-af- full-af- full-af-out1 2 3 4 5 6 7 8
11x11x3 x96
5x5x96 x256
3x3x256 x384
3x3x384 x384
3x3x384 x256
(6x6x256) x 4096
4096 x 4096
4096 x 1000
パラメータ数の計算
畳み込み層と全結合層のみがパラメータを保持
⇒ 約6000万個のパラメータ⇒ これを学習することが,必要.
65
11*11*3*96
= 34,848
5*5*96*256
= 614,400
3*3*256*384
= 884,736
3*3*384*384
= 1,327,104
3*3*384*256
= 884,736
6*6*256*4096
= 37,784,736
4096*4096
= 16,777,216
4096*1000
= 4,096,000合計 61,520,660 パラメータ
Deep Networkの学習
ネットワークで画像認識するには,全てのパラメータの学習が必要
学習時には,出力関数の代わりに,誤差関数(loss function)を用意し,誤差関数を最小化するように,勾配降下法(最急降下法)で学習する.
66
NeuralNetの学習
61,618,964 個の内部パラメータ 𝒘を持つ関数 𝑓(𝒙) をいかに学習するか?
67
𝒇( ) ⇒ ( 1.00, 0.00, 0.00 )
𝒇( ) ⇒ ( 0.00, 1.00, 0.00 )
𝒇( ) ⇒ ( 0.00, 0.00, 1.00 )
となるように 内部パラメータ 𝒘を求める.
誤差関数
内部パラメータ 𝒘をまずランダムで初期化.
画像を入れると 出力値𝒑(ほぼランダム)が出る 理想値𝒚
69
𝒇𝟎( ) ⇒ (0.23,0.53,0.31) ⇐ (1.00, 0.00, 0.00)
𝒇𝟎( ) ⇒ (0.30,0.27,0.43) ⇐ (0.00, 1.00, 0.00)
𝒇𝟎( ) ⇒ (0.49,0.38,0.13) ⇐ (0.00, 0.00, 1.00)
カテゴリ分類のLoss関数(誤差関数) 𝐿 𝑤 = − ∑𝑁 ∑𝑗 𝑦𝑗,𝑛 log 𝑝𝑗,𝑛
(交差エントロピー (cross entropy)関数)
誤差𝐸 = 全学習データNの出力値𝒑と 学習ラベル値(理想値)𝒚 との差
学習データ全てに渡って𝐸を最小化
初期ネットワーク𝑓(𝒙𝑖)の 出力値𝒑𝒊と理想値𝒚𝒊の誤差𝐸𝑖
70
学習画像1 𝒇𝟎( )⇒ (0.23,0.53,0.31)⇐ (1.00, 0.00, 0.00) ⇒ 𝑬𝟏
学習画像𝟐 𝒇𝟎( )⇒ (0.30,0.27,0.43)⇐ (0.00, 1.00, 0.00)⇒ 𝑬𝟐
学習画像𝑵 𝒇𝟎( )⇒ (0.49,0.38,0.13)⇐ (0.00, 0.00, 1.00)⇒ 𝑬𝑵
𝐸 = ∑𝑖 𝐸𝑖 が最小になるように内部パラメータ 𝒘を学習.以下では,𝐸は𝒘によって決まるので,𝐸(𝒘) と書く.
最急降下法(勾配降下法)で解く!𝒘𝑡+1 = 𝒘𝑡 − 𝜂𝜕𝐸
𝜕𝒘(𝜂:小さい値.学習率. 0.001)
勾配と逆方向に𝒘を少しずつ変化させる
𝐸(𝒘)
𝒘
𝜕𝐸
𝜕𝒘−𝜂𝜕𝐸
𝜕𝒘
𝒘𝑡𝒘𝑡+1
パラメータの𝒘の学習
61,520,660 個の内部パラメータ 𝒘を持つ関数 𝑓(𝒙) をいかに学習するか?
71
最急降下法(勾配降下法)𝒘𝑡+1 = 𝒘𝑡 − 𝜂𝜕𝐸
𝜕𝒘(𝜂:小さい値.学習率. 0.001)
勾配と逆方向に𝒘を少しずつ変化させる
繰り返し𝒘を変化させると,𝐸(𝑤) を最小化する 𝒘が求まる.
𝐸(𝒘)
𝒘
𝜕𝐸
𝜕𝒘−𝜂𝜕𝐸
𝜕𝒘
𝒘𝑡𝒘𝑡+1
パラメータが多いので,大量の学習データが必要.一般には,各1000枚×1000種類=100万枚のラベル付き画像.⇒100万枚の画像を30~100回,𝑓 𝒙 を計算し誤差 𝐸(𝒘)を求める
30~100回繰り返す
順伝搬 と逆伝搬による学習72
順伝搬を行い,誤差関数の値を計算.誤差を小さくするようにパラメータを更新(逆伝搬).
Input:画像:xラベル:y
学習セット:(I1,y1),…, (xn,yn)
順伝搬現パラメータ群により各学習データの認識を行う
逆伝搬認識結果(誤差)をもとに,パラメータ群を更新する
Convolution
Fullly connection
Loss function
勾配降下法によるパラーメータ更新73
順伝搬を行い,誤差関数の値を計算.誤差を小さくするようにパラメータを更新(逆伝搬).
Convolution
Full connection
𝑤𝑖𝑡+1 = 𝑤𝑖
𝑡 − 𝜂 𝜕𝐸
𝜕𝑤𝑖𝑡 で,パラメータを更新.
𝜕𝐸
𝜕𝑤𝑖𝑡 をどう求めるか?
Input:画像:xラベル:y
学習セット:(I1,y1),…, (xn,yn)
Loss function E
E
誤差逆伝搬法:𝜕𝐸
𝜕𝑤𝑖を求める方法
レイヤーの前後間の微分は一般に簡単に求まる. ⇒ 畳み込み層,全結合層は線形
活性化関数も微分可能
74
Loss function EE
ReLuの場合𝑦′ = 1 𝑥 ≥ 0𝑦′ = 0 𝑥 < 0
𝜕𝐸
𝜕𝑤𝑖=
𝑗
𝑘
𝜕𝐸
𝜕𝑢𝑘
𝜕𝑢𝑘
𝜕𝑣𝑗
𝜕𝑣𝑗
𝜕𝑤𝑖
u
vw
𝜕𝐸
𝜕𝑢𝑘𝜕𝑢𝑗
𝜕𝑣𝑗
𝜕𝑣𝑖
𝜕𝑤𝑖 パラメータ𝑤𝑖とEの間の経路を全て
足しあわせていくと,𝜕𝐸
𝜕𝑤𝑖が求まる.
順伝搬 と逆伝搬による学習75
順伝搬を行い,誤差関数の値を計算.誤差を小さくするようにパラメータを更新(逆伝搬).
Input:画像:xラベル:y
学習セット:(I1,y1),…, (xn,yn)
順伝搬現パラメータ群により各学習データの認識を行う
逆伝搬認識結果(誤差)をもとに,パラメータ群を更新する
Convolution
Fullly connection
Loss function
𝑤𝑖𝑡+1 = 𝑤𝑖
𝑡 − 𝜂 𝜕𝐸
𝜕𝑤𝑖𝑡
パラメータ𝒘が求まると,𝑓(𝒙)の学習が完了 ⇒ GPUで1週間
関数 𝑓(𝒙) = 学習済の画像認識関数
76
𝑓(𝒙) ⇒ (ライオン確率,椅子確率,山確率)
𝑓( ) ⇒ ( 0.95, 0.04, 0.01 )
𝑓( ) ⇒ ( 0.03, 0.95, 0.02 )
𝑓( ) ⇒ ( 0.02, 0.05, 0.93 )
となって,ニューラルネットワークの内部パラメータ𝒘が学習できた.
ポイント
勾配降下法を使うので,𝐸(𝒘) が微分可能でないといけない.⇒ 実際のネットワークは微分可能になっている.
6000万次元の𝒘が正しく学習されるには,大量のデータがあることが望ましい⇒ 一般には100万枚
上手く学習されれば,RGBの画素値を入力として,出力がクラス確率となる, 𝑓(𝒙)が求まる.
77
実際には,
勾配降下法の代わりに,確率的勾配降下法を用いる.
全学習データで 𝐸(𝒘)を計算する代わりに,100枚程度のミニバッチ毎に 𝐸(𝒘)を計算して,𝒘を更新.
100枚の画像はランダムで選択(「確率的」の由来) ⇒ 𝐸(𝒘) の関数の形が毎回異なるので,局所解に捕まりにくくなる.
78
𝐸1(𝒘)
𝒘
𝐸2(𝒘)
𝐸3(𝒘)
学習されたフィルタが反応するパターン低次層:直線や円など単純パターンに反応
79
Zeiler, M. and Fergus, R.: "Visualizing and Understanding Convolutional Networks", ECCV, (2014).
「自動車」
学習されたフィルタが反応するパターン中間層:タイヤや格子模様など物体のパーツに反応
80
Zeiler, M. and Fergus, R.: "Visualizing and Understanding Convolutional Networks", ECCV, (2014).
「自動車」
学習されたフィルタが反応するパターン高次層:犬や花,一輪車など物体に反応
81
Zeiler, M. and Fergus, R.: "Visualizing and Understanding Convolutional Networks", ECCV, (2014).
「自動車」
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.
83
学習画像の生成
Elastic Distortion
位置や大きさだけでなく,形状の変化も適用
P.Y. Simard, D. Steinkraus, and J.C. Platt, “Best practices for convolutional neural networks
applied to visual document analysis.”, ICDAR2003.
Data Augmentation
位置や大きさを変えて学習データ数を増やす
84
221
x221
256x256
256x256の画像からの221x221のランダム切り出し.左右反転(flip).
学習データの水増し
Pre-Training と Fine-tuning
事前に大規模データで学習(pre-training)して,小規模なデータでチューニング(fine-tuning)する.
ImageNet1000で学習したネットワークを小規模データセットにチューニングする.
レイヤーの一部(通常は,最終レイヤー)を差替え
85
例えば,1000から30のlayerに変更して,再学習(fine-tuning).
代表的なネットワーク
LeNet 最初の畳み込みネット
AlexNet
トロント大 Hintonグループ, ILSVRC2012のwinner
VGG 16/19 Oxford Zissermanグループ
ILSVRC2014で2位
Network-in-network: 全結合なし NUS
GoogLeNet グーグル
ILSVRC2014のwinner
86
Y. LeCun, et.al. “Gradient-based Learning Applied to Document Recognition, Proc. of The
IEEE, 1998.
Convolutional Neural Nets (CNNs): 1989
LeNet: a layered model composed of convolution and
subsampling operations followed by a holistic representation
and ultimately a classifier for handwritten digits. [ LeNet ]
LeNet
Convolutional Nets: 2012
AlexNet: a layered model composed of convolution,
subsampling, and further operations followed by a holistic
representation and all-in-all a landmark classifier on
ILSVRC12. [ AlexNet ]
+ data
+ gpu
+ non-saturating nonlinearity
+ regularization
AlexNet
Convolutional Nets: 2012
AlexNet: a layered model composed of convolution, pooling,
and further operations followed by a holistic representation
and all-in-all a landmark classifier on
ILSVRC12. [ AlexNet ]
The fully-connected “FULL” layers are linear classifiers /
matrix multiplications. ReLU are rectified-linear non-
linearities on the output of layers.
figure credit Y. LeCun and M.A. Ranzato, ICML ‘13 tutorialparameters FLOPs
AlexNet
合計19層(16層)Conv, conv ,max poolの組み合わせが5つ(4つ)
Convはすべて 3x3, stride 1, padding 1
例) conv-64 : 3x3x64 x64
よりDeepにすると,精度が向上⇒ AlexNetに比べて精度が高い.
計算量,パラメータ量も大幅に多いが,認識精度が高い.ILSVRC2014で2位.
Very Deep Network
VGG net 16/19
Convolutional Nets: 2014
ILSVRC14 Winners: ~6.6% Top-5 error
- GoogLeNet: composition of multi-scale dimension-
reduced modules (pictured)
- VGG: 16 layers of 3x3 convolution interleaved with
max pooling + 3 fully-connected layers + depth
+ data
+ dimensionality reduction
GoogleNet ILSVRC2014優勝
Inception 構造の繰り返し.9個
Inception module
Inception Network
for ILSVRC 2015
GoogleNetの拡張版
C.Szegedy et al.: Rethinking the Inception
Architecture for Computer Vision, arxiv 1512.00567 (2015).
Inceptionが10層3.46%
CONV = im2col+GEMM
Im2col
GEMM
blasDgemm
(他には,FFT-convolutionもある.畳み込み定理:F*I =
IFFT(FFT(F)・FFT(I)). )
カーネルの個数分
im2col操作で,畳み込みは
行列積で計算可能となる.
feature map
の次元数
[参考]
行列積:GEMMDeep Learningの計算の大部分は行列積
BLAS(Basic Linear Algebra Subprograms
(BLAS)) : 行列積の基本API を利用する.GEMM (GEneric Matrix Multiplication)
BLASの実装MKL (Intel Math Kernel Library)
ATLAS Automatically Tuned Linear Algebra Software
OpenBLAS : SSEなどのSIMD命令を利用した最適化
CuBLAS : NVIDIA GPU Cuda版のBLAS
CuDNN : Deep Learningの各レイヤを直接計算するNVIDIA GPU用のライブラリ
[参考]
Activation features の利用
ImageNet 1000種類で学習したDCNNの途中の ネットワーク信号を特徴量とする
108
43264次元の特徴
4096次元の特徴4096次元の特徴
L2正規化してから特徴ベクトルとする.分類は線形SVMが一般的.
DCNN特徴とも呼ぶ: SIFT+BOF(FV)の代替
ⓒ 2014 UEC Tokyo.
• ImageNet2000 categories
– 1000 food-related categories from ImageNet
21,000 categories
+
– ImageNet1000 ImageNet categories
= 2000 categories
食事画像データの認識 DCNNをImageNet1000+Food関連1000カテゴリで学習
ⓒ 2014 UEC Tokyo.
• DCNN Features with ImageNet 2000 categories
– Using Caffe
– The dimension is 6144 (modified from 4096 to 6144)
– L2-normalized
• Training time
– About one week
– GPU, Nvidia Geforce TITAN BLACK, 6GB
Pre-training DCNN
DS1-11:DeepFoodCam : DCNNによる101種類食事認識アプリ
岡元 晃一, 柳井 啓司(電気通信大学)
93.5%の精度(5位以内)と高速実行を実現!
アプリ内でのディープラーニングによる101種類認識
スマホアプリでの食事認識!
Food Recognition App with DCNN
100種類食事認識
従来手法 ディープラーニング(圧縮なし,32bit)
ディープラーニング(圧縮あり,8bit)
ディープラーニング(圧縮あり,4bit)
65.3% 75.3% 74.5% 72.9%
86.7% 94.0% 93.5% 92.9%
1.3MB 26MB 6.5MB 3.3MB
Top1
Top5
メモリ
問題点: GPUなしPCで認識時間が1秒程度.モバイル用に高速化を研究中.
Deep Learningによる性能向上
60.0%
65.0%
70.0%
75.0%
80.0%
85.0%
90.0%
95.0%
100.0%
1 2 3 4 5 6 7 8 9 10
分類率
候補数
AlexNet
NIN
NIN(8bit)(使用パラメータ)
NIN(4bit)
FV (Color+HOG)(従来手法)
従来手法
DL(PC)
DL(スマホ)
第1回 (10/06):画像認識とは?イントロダクション.身の回りでの応用例から最新研究まで
第2回 (10/20):画像認識の基礎.画像処理.エッジ検出.色ヒストグラムに基づく画像検索.
第3回 (10/27):【演習1】 MATLAB の基礎.顔検出,物体検出を試してみる.
第4回 (11/10):【演習2】 MATLABでの画像の取り扱い.色ヒストグラムに基づく画像検索.
第5回 (11/17):様々な特徴量.輝度勾配ヒストグラム.局所特徴量.SIFT特徴量.
第6回 (11/24):一般物体認識.BoF法による特徴ベクトル生成.K-Means法.
第7回 (12/01):【演習3】 局所特徴量の抽出.特定物体認識.
第8回 (12/08):機械学習法.Nearest Neighbor法.線形/非線形SVM.NaiveBayes法.
第9回 (12/15):【演習4】 BoFベクトルの生成.K-means法.
第10回 (12/22):Deep Learningによる画像認識の基礎.確率的勾配降下法.
第11回 (1/12):Deep Learningの各種レイヤ-.誤差逆伝搬法.認識結果の評価方法.
第12回 (1/19):【演習5】 BoFと機械学習を用いた一般物体認識.
第13回 (1/26):【演習6】 Deep Learningによる一般物体認識.
第14回 (2/02):【演習7】 レポート課題説明(1):Web画像の自動収集.
第15回 (2/09):【演習8】 レポート課題説明(2):画像分類と,Web画像の再ランキング.
今回の予定次回の予定 (次回からすべてIED)