2016年09月11日
_ [computer] TensorFlowにて、ImageNetの学習データを使った画像認識テスト
画像認識のデータサンプルを提供している、としてImageNetを見ていましたら、「・・「TensorFlow」でImageNetの学習データを使った画像認識を試してみた・・」(http://qiita.com/nkjm/items/a2dada74d48b29f0e5f4)と言うHPを見つけましたので、早速その通りやってみました。
TensorFlowのインストールから書かれていますが、見てみると先日のインストール作業で、ImageNetを使うこのプログラムも既に入っていましたので、後は該当ディレクトリに移ってプログラムを実行するだけでOKでした。初回実行時にデータが自動的にダウンロードされて、続いてテスト用として用意済みのパンダの画像の認識が行われるようです。
(tensorflow)$ cd ~/tensorflow/lib/python2.7/site-packages/tensorflow/models/image/imagenet
(tensorflow)$ python classify_image.py
>> Downloading inception-2015-12-05.tgz 100.0%
Succesfully downloaded inception-2015-12-05.tgz 88931400 bytes.
W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization().
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89233)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00859)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00264)
custard apple (score = 0.00141)
earthstar (score = 0.00107)
結果は上記のように、およそ90%程の確率でパンダと認識されています。試しに、それ以外の画像として、私のパソコン内に有った南仏の葡萄畑の画像を入力してみました。
(tensorflow)$ python classify_image.py --image_file /mnt/z/aaa.jpg
W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization().
stone wall (score = 0.55500)
maze, labyrinth (score = 0.18647)
megalith, megalithic structure (score = 0.02037)
valley, vale (score = 0.01720)
lakeside, lakeshore (score = 0.01040)
上記が結果ですが、小さく見える石の壁を一番に検出したみたいで、葡萄畑の認識は出来なかった様です。まぁ、人間でも難しいかも知れませんが、、。
次に、もう少し簡単そうな物として、ワインの画像を入力してみました。
(tensorflow)$ python classify_image.py --image_file /mnt/z/bbb.jpg
W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization().
beer bottle (score = 0.36366)
pop bottle, soda bottle (score = 0.08542)
red wine (score = 0.07003)
wine bottle (score = 0.05824)
whiskey jug (score = 0.01884)
36%、ビール瓶と認識されました。赤ワインとしてはたった7%ですね。わずか2つの例ですが、なかなか正確には判別するのは流石に難しいようです。でも処理としては、現段階ではGPUも使っていないのに、すぐに結果が出力される感じで、思いの外速かったです。