TensorFlow 画像キャプション・モデル – コンピュータ・ビジョンと自然言語処理の融合
今年 (2016) の 9 月に Google 社により、Microsoft COCO 2015 画像キャプショニング・チャレンジで優秀な成績をおさめた、画像キャプション・モデルが TensorFlow 実装のオープンソースとして公開されました。(キャプションは画像の簡単な説明文です。)
動作検証してみましたので、簡単にご報告します。自前の画像でも試してみましたが、確率つきで3つのキャプション候補が表示され、(人間が見ても)十分に理解可能な結果が得られました。
該当する Google Research Blog 記事は以下です :
Show and Tell: image captioning open sourced in TensorFlow | Google Research Blog
このブログによれば、2014 年に Google Brain チームの研究員が画像を正確に記述するキャプションの自動生成のための機械学習システムのトレーニングを実行し、システムの更なる開発によって Microsoft COCO 2015 画像キャプショニング・チャレンジ(= 正確な画像キャプション計算のベストなアルゴリズムを競うコンペティション)においてトップタイの成績をおさめるという成功に導かれたとのことです。
そして更に、その画像キャプション・モデル最新版を TensorFlow 実装のオープンソースモデルとして利用可能にするとのことで、このリリースはキャプショニング・システムのコンピュータ・ビジョン・コンポーネントへの本質的な改善を含み、オリジナル・システムに比較してより詳細で正確な記述を生成できるようです。
該当ペーパーは以下 :
Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge
abstact を簡単にまとめておくと以下のような内容で、最後にコンペと TensorFlow への言及もあります :
自動的に画像の内容を説明することは、コンピュータ・ビジョンと自然言語処理を結びつける、人口知能における基本的な問題です。このペーパーでは、深層 recurrent アーキテクチャをベースとする生成モデルを提示しますが、これはコンピュータ・ビジョンと機械翻訳における最近の進歩を結合し、画像を説明する自然言語の文群を生成するために利用可能なものです。モデルは与えられた訓練画像のターゲット説明文の尤度を最大化するようにトレーニングされます。幾つかのデータセット上での実験はモデルの正確さと画像説明から単独で学習した言語の流暢さを示します。モデルは質的にも量的にも非常に正確なことが多々あります。
それから少し違う角度からの関連記事と Google / University of Edinburgh 共著のペーパーです :
Google researchers teach AIs to see the important parts of images — and tell you about them
Discovering the physical parts of an articulated object class from multiple videos
TensorFlow “Show and Tell ” モデル
今回はオープンソース・モデルの単なる動作検証ですので特に難しい話しはありません。
例によって TensorBoard でグラフを確認しておきますと、Inception モデルと LSTM を組み合わせていますね :
トレーニング
以下は損失と Perplexity(= 言語モデルの評価尺度、複雑さを表します) のグラフです。
もう少しトレーニングした方が良さそうです :
検証結果
Microsoft COCO 2015 画像で試すのが一番精度が高いだろうと考えて、ランダムに試してみました。
最初はお皿に盛られた肉、ブロッコリそしてポテトです :
キャプション候補は以下の3つ。合っていますが、1つ目と3つ目の違いはピリオドの有無でしょうか :
Captions for image COCO_val2014_000000224012.jpg: 0) a plate of food with meat and vegetables . (p=0.000409) 1) a plate of food with meat and broccoli . (p=0.000255) 2) a plate of food with meat and vegetables (p=0.000025)
次に海とサーファー。このキャプション・モデルの紹介記事では、(異なる画像ですが)良く利用される題材です :
Captions for image COCO_val2014_000000224477.jpg: 0) a man riding a wave on top of a surfboard . (p=0.034516) 1) a person riding a wave on a surfboard . (p=0.007086) 2) a man riding a wave on a surfboard in the ocean . (p=0.004863)
Captions for image COCO_val2014_000000224000.jpg: 0) a herd of sheep grazing in a field . (p=0.000379) 1) a herd of sheep walking down a road . (p=0.000219) 2) a herd of sheep walking down a street . (p=0.000148)
0) a man riding a bike down a street . (p=0.000337) 1) a bicycle is parked on the side of the road . (p=0.000283) 2) a bicycle is parked on the side of a road . (p=0.000143)
Captions for image COCO_val2014_000000224037.jpg: 0) a group of boats docked in the water . (p=0.000443) 1) a group of boats floating in the water . (p=0.000402) 2) a group of boats docked in a harbor . (p=0.000140)
Imagenet の画像も幾つか試してみましたが、結果はあまり芳しくありませんでした。
おそらく、Imagenet の画像は粗すぎるのだと思います。
0) a white car parked in front of a car . (p=0.000060) 1) a white car parked in front of a parking meter . (p=0.000031) 2) a white car parked in front of a car (p=0.000019)
自前の画像でも幾つか試してみました :
0) a cat is sitting on the floor next to a laptop . (p=0.000014) 1) a cat is sitting on the floor next to a computer . (p=0.000008) 2) a cat is sitting on the floor next to a cat . (p=0.000007)
0) a bunch of apples are sitting on a table (p=0.000065) 1) a bunch of apples are sitting on a plate (p=0.000026) 2) a bunch of apples are sitting on a table . (p=0.000024)
以上