49
CV勉強会@関東「CVPR2015読み会」 発表資料 Show and Tell: A Neural Image Caption Generator 2015/07/20 takmin

Show and tell takmin

Embed Size (px)

Citation preview

Page 1: Show and tell takmin

CV勉強会@関東「CVPR2015読み会」 発表資料Show and Tell: A Neural Image Caption

Generator

2015/07/20 takmin

Page 2: Show and tell takmin

自己紹介テクニカル・ソリューション・アーキテクト

皆川 卓也(みながわ たくや)フリーエンジニア(ビジョン&ITラボ)「コンピュータビジョン勉強会@関東」主催博士(工学)

テクニカル・ソリューション・アーキテクト

皆川 卓也(みながわ たくや)フリーエンジニア(ビジョン&ITラボ)「コンピュータビジョン勉強会@関東」主催博士(工学)

略歴:1999-2003年日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリセールス、プロジェクトマネジメント、サポート等の業務に従事

2004-2009年コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事

2007-2010年慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻単位取得退学後、博士号取得(2014年)

2009年-現在フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事

2http://visitlab.jp

Page 3: Show and tell takmin

紹介する論文

3

Show and Tell: A Neural Image Caption Generator

O.Vinyals, A.Toshev, S.Bengio, D.Erhan

“複雑な画像のキャプション(説明文)を自動生成するシステムをGoogleが研究開発中”, TechCrunch 2014-11-19

http://jp.techcrunch.com/2014/11/19/20141118new-google-research-project-can-auto-caption-complex-images/

前回の勉強会の@peisukeさんのRNN / LSTMに関する資料が大変参考になります。• http://www.slideshare.net/FujimotoKeisuke/learning-to-forget-continual-

prediction-with-lstm

Page 4: Show and tell takmin

概要

4

1枚の静止画像から説明文を生成

近年のReccurent Neural Networks (RNN)を用いた機械翻訳の手法をベースに、その入力をDeep Convolutional Neural Networksで生成した特徴ベクトルに置き換え Neural Image Caption (NIC)

従来手法を大きく上回る精度

Page 5: Show and tell takmin

Convolutional Neural Networks (CNN)

5

詳細は割愛。ここでは、「学習データから認識に有効な特徴量を自動で学習するネットワーク」程度の理解でOK。

ここではGoogLeNetを改良した以下の論文を使用。

S.Ioffe and C.Szegedy, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”, arXiv 2015

Page 6: Show and tell takmin

Reccurent Neural Networks (RNN)

6

時系列データなどの「連続したデータ」を扱うためのニューラルネットワーク 音声認識、機械翻訳、動画像認識

予測先の次元数が可変

時刻tの隠れ層の出力が時刻t+1の隠れ層の入力になる

・・・・・・

・・・

入力

出力

隠れ層

Page 7: Show and tell takmin

Reccurent Neural Networks (RNN)

7

展開すると、静的なネットワークで表せる

・・・・・・

・・・

入力

出力

隠れ層・・・

・・・・・・

・・・・・・

・・・

t-1 t t+1

Page 8: Show and tell takmin

Reccurent Neural Networks (RNN)

8

展開すると、静的なネットワークで表せる

通常の誤差逆伝播法でパラメータを学習できる

・・・・・・

・・・

入力

出力

隠れ層・・・

・・・・・・

・・・・・・

・・・

t-1 t t+1

教師データ 教師データ 教師データ

Page 9: Show and tell takmin

Long-Short Term Memory (LSTM)

9

RNNは系列が大きくなると階層が深くなり、伝播した誤差の勾配が発散してしまう

各データの入出力および過去のデータの使用/不使用を制御して、長い系列を扱えるようにする。

Long-Short Term Memory (LSTM)

Page 10: Show and tell takmin

Long-Short Term Memory (LSTM)

10

RNN

・・・・・・

・・・

入力

出力

隠れ層

𝑥

𝑚𝑡

𝑐𝑡−1

𝑐𝑡

Page 11: Show and tell takmin

Long-Short Term Memory (LSTM)

11

LSTM

・・・・・・

・・・

入力

出力

隠れ層

𝜎

𝜎

Input Gate

Output GateForget Gate

𝜎

Updating Term

𝑥

𝑚𝑡

𝑐𝑡

𝑐𝑡−1

𝑚𝑡−1

Page 12: Show and tell takmin

Long-Short Term Memory (LSTM)

12

LSTM

・・・・・・

・・・

入力

出力

隠れ層

𝜎

𝜎

Input Gate

Output GateForget Gate

𝜎

Updating Term

𝑥

𝑚𝑡

𝑐𝑡

𝑐𝑡−1

𝑚𝑡−1

Page 13: Show and tell takmin

Long-Short Term Memory (LSTM)

13

𝑥𝑡𝑚𝑡−1

𝑖𝑡

𝑦𝑡

𝜎𝑚𝑡−1

𝑥𝑡

Input Gate

入力データの使用/不使用を制御

Page 14: Show and tell takmin

Long-Short Term Memory (LSTM)

14

𝑦𝑡 = 𝑖𝑡⨀ℎ 𝑊𝑐𝑥𝑥𝑡 +𝑊𝑐𝑚𝑚𝑡−1

𝑥𝑡𝑚𝑡−1

𝑖𝑡

𝑦𝑡

𝜎𝑚𝑡−1

𝑥𝑡

Input Gate

入力データの使用/不使用を制御

hyperbolic tangent関数

𝑖𝑡 = 1の時信号を通し𝑖𝑡 = 0の時通さない

Page 15: Show and tell takmin

Long-Short Term Memory (LSTM)

15

𝑦𝑡 = 𝑖𝑡⨀ℎ 𝑊𝑐𝑥𝑥𝑡 +𝑊𝑐𝑚𝑚𝑡−1

𝑥𝑡𝑚𝑡−1

𝑖𝑡

𝑦𝑡

𝜎𝑚𝑡−1

𝑥𝑡

𝑖𝑡 = 𝜎 𝑊𝑖𝑥𝑥𝑡 +𝑊𝑖𝑚𝑚𝑡−1 Sigmoid関数

Input Gate

入力データの使用/不使用を制御

hyperbolic tangent関数

𝑖𝑡 = 1の時信号を通し𝑖𝑡 = 0の時通さない

Page 16: Show and tell takmin

Long-Short Term Memory (LSTM)

16

𝑦𝑡 = 𝑖𝑡⨀ℎ 𝑊𝑐𝑥𝑥𝑡 +𝑊𝑐𝑚𝑚𝑡−1

𝑥𝑡𝑚𝑡−1

𝑖𝑡

𝑦𝑡

𝜎𝑚𝑡−1

𝑥𝑡

𝑖𝑡 = 𝜎 𝑊𝑖𝑥𝑥𝑡 +𝑊𝑖𝑚𝑚𝑡−1 Sigmoid関数

Input Gate

入力データの使用/不使用を制御

hyperbolic tangent関数

学習するパラメータ

Page 17: Show and tell takmin

Long-Short Term Memory (LSTM)

17

LSTM

・・・・・・

・・・

入力

出力

隠れ層

𝜎

𝜎

Input Gate

Output GateForget Gate

𝜎

Updating Term

𝑥

𝑚𝑡

𝑐𝑡

𝑐𝑡−1

𝑚𝑡−1

Page 18: Show and tell takmin

Long-Short Term Memory (LSTM)

18

𝑓𝑡

𝑐𝑡

𝜎𝑚𝑡−1

𝑥𝑡

・・・

𝑦𝑡

𝑐𝑡−1

Forget Gate

過去の系列データの使用/不使用を制御

Page 19: Show and tell takmin

Long-Short Term Memory (LSTM)

19

𝑓𝑡

𝑐𝑡

𝜎𝑚𝑡−1

𝑥𝑡

・・・

𝑐𝑡 = 𝑓𝑡⨀𝑐𝑡−1 + 𝑦𝑡

𝑦𝑡

𝑐𝑡−1

Forget Gate

過去の系列データの使用/不使用を制御

𝑓𝑡 = 1の時信号を通し𝑓𝑡 = 0の時通さない

Page 20: Show and tell takmin

Long-Short Term Memory (LSTM)

20

𝑓𝑡

𝑐𝑡

𝜎𝑚𝑡−1

𝑥𝑡

・・・𝑓𝑡 = 𝜎 𝑊𝑓𝑥𝑥𝑡 +𝑊𝑓𝑚𝑚𝑡−1

𝑐𝑡 = 𝑓𝑡⨀𝑐𝑡−1 + 𝑦𝑡

𝑦𝑡

𝑐𝑡−1

Forget Gate

過去の系列データの使用/不使用を制御

Page 21: Show and tell takmin

Long-Short Term Memory (LSTM)

21

LSTM

・・・・・・

・・・

入力

出力

隠れ層

𝜎

𝜎

Input Gate

Output GateForget Gate

𝜎

Updating Term

𝑥

𝑚𝑡

𝑐𝑡

𝑐𝑡−1

𝑚𝑡−1

Page 22: Show and tell takmin

Long-Short Term Memory (LSTM)

22

𝑐𝑡𝑜𝑡

𝑚𝑡

𝜎𝑚𝑡−1

𝑥𝑡

Output Gate

出力データの使用/不使用を制御

Page 23: Show and tell takmin

Long-Short Term Memory (LSTM)

23

𝑐𝑡𝑜𝑡

𝑚𝑡

𝜎𝑚𝑡−1

𝑥𝑡

Output Gate

出力データの使用/不使用を制御

𝑜𝑡 = 1の時信号を通し𝑜𝑡 = 0の時通さない

𝑜𝑡 = 𝜎 𝑊𝑜𝑥𝑥𝑡 +𝑊𝑜𝑚𝑚𝑡−1

𝑚𝑡 = 𝑜𝑡⨀𝑐𝑡

Page 24: Show and tell takmin

Neural Image Caption (NIC)

24

静止画から説明文を生成

𝑆∗ = argmax𝑆𝑝 𝑆|𝐼

画像説明文

𝑆 = 𝑆0, 𝑆1, ⋯

単語

可変長の系列データ

Page 25: Show and tell takmin

Neural Image Caption (NIC)

25

静止画から説明文を生成

𝑆∗ = argmax𝑆𝑝 𝑆|𝐼

画像説明文

𝑝 𝑆|𝐼; 𝜃 =

𝑡=0

𝑁

𝑝 𝑆𝑡|𝐼, 𝑆0, ⋯ , 𝑆𝑡−1 ; 𝜃

𝑆 = 𝑆0, 𝑆1, ⋯

単語数

各単語はその前の単語列の影響を受ける。

Page 26: Show and tell takmin

Neural Image Caption (NIC)

26

静止画から説明文を生成

𝑝 𝑆|𝐼; 𝜃 =

𝑡=0

𝑁

𝑝 𝑆𝑡|𝐼, 𝑆0, ⋯ , 𝑆𝑡−1 ; 𝜃パラメータ

単語数

学習データ 𝐼, 𝑆 から学習

Page 27: Show and tell takmin

Neural Image Caption (NIC)

27

LSTM

・・・・・・

・・・

入力

出力

隠れ層

𝜎

𝜎

Input Gate

Output GateForget Gate

𝜎

Updating Term

𝑥

𝑚𝑡

𝑐𝑡

𝑐𝑡−1

𝑚𝑡−1

𝑥𝑡 = 𝑊𝑒𝑆𝑡

𝑝𝑡 𝑆𝑡+1 = softmax 𝑚𝑡

Page 28: Show and tell takmin

Neural Image Caption (NIC)

28

Page 29: Show and tell takmin

Neural Image Caption (NIC)

29

画像からDeep CNNで特徴ベクトルを取得

LSTMへの最初の入力(𝒙−𝟏)

Page 30: Show and tell takmin

Neural Image Caption (NIC)

30

単語𝑺𝟎を入力

次の単語が𝑺𝟏である確率

Page 31: Show and tell takmin

Neural Image Caption (NIC)

31

𝒎𝟎, 𝒄𝟎

Page 32: Show and tell takmin

NICの学習

32

ImageNet + Drop outでPretraining

ランダムにパラメータを初期化

Page 33: Show and tell takmin

NICの学習

33

学習データ

予測確率

Page 34: Show and tell takmin

NICの学習

34

学習データ

予測確率

誤差逆伝播

Page 35: Show and tell takmin

NICで予測 (Sampling)

35

Deep CNNで特徴ベクトルを取得

入力画像を与える

Page 36: Show and tell takmin

NICで予測 (Sampling)

36Special Start Word

最も確率の高い単語𝑺𝟏を選択

Page 37: Show and tell takmin

NICで予測 (Sampling)

37

選択した単語𝑺𝟏を入力

end-of-sentence tokenが現れるまで続ける

Page 38: Show and tell takmin

NICで予測 (BeamSearch)

38

Best kの単語を保持

Page 39: Show and tell takmin

NICで予測 (BeamSearch)

39

Best kの文章を保持

k個の単語入力

Page 40: Show and tell takmin

NICで予測 (BeamSearch)

40

Best kの文章を保持

k個の単語入力

以下の実験ではBeamSearchを使用

Page 41: Show and tell takmin

Dataset

41

実験に使用したデータセット

Page 42: Show and tell takmin

実験結果

42

3つの指標でMSCOCOデータセットに対し定量評価

人が評価した性能に近い値を出すことができた

Page 43: Show and tell takmin

他の手法との比較

43

既存手法より大幅な精度改善

Page 44: Show and tell takmin

上位N個の文章例

44

同じ画像に対し異なる表現を得られる

学習データにない新しい表現が生成された。

Page 45: Show and tell takmin

Ranking Results

45

Page 46: Show and tell takmin

人間による評価

46

Amazon Mechanical Turkで1枚の画像につき2人、4段階評価 Ground Truthには遠く及ばなかった(→BLEUなどの評価指標に課

題)

Page 47: Show and tell takmin

人間による評価

47

Page 48: Show and tell takmin

Analysis of Embedding

48

Word Embedding Vector [20]という手法を用いて、ある単語の近傍を取得

Page 49: Show and tell takmin

まとめ

49

Deep CNNとRNNを用いて、画像から説明文を生成する手法を提案。

1つのネットワークとして誤差逆伝播でパラメータを学習

RNNにはLSTMを用い、長い文でも学習時に伝播した誤差が発散しない

従来法と比較し、大幅な精度改善