Tensorflowを使って画像認識をしてみる

Tensorflowを使ってその画像が何を表しているのかを調べたいと思う。

TensorflowのImage Recognition

Tensorflowのページのチュートリアルをみてみると、画像認識のチュートリアルがあります。

Image Recognition  |  TensorFlow

f:id:utr066:20180908155311p:plain

チュートリアルでは、パンダの画像をパンダと認識させるものなので、ちょっと実行してみましょう。

実行環境としては、anacondaにtensorflowを入れて使っています。

GitHub - tensorflow/models: Models and examples built with TensorFlow

Githubから画像認識を行うためのファイルを取得してそれを実行します。models/tutorials/image/imagenetの中にclassify_image.pyというものがあるはず。これを実行しましょう。

$ python classify_image.py
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
custard apple (score = 0.00147)
earthstar (score = 0.00117)

一番上のパンダの列の確率が0.89107と一番高いですね。プログラムはパンダの画像をパンダだと判断してくれたようです。

自分が持っている画像を認識させる

さっき使ったclassify_image.pyは自分が持っている画像に対して使うこともできます。今回はこのブルドッグの画像を判定してみます。

f:id:utr066:20180908155914j:plain

$ python classify_image.py --image_file="bulldog.jpg"

--image_file="保存している画像"のように記述することによって、その画像を解析することができます。

結果はこんな感じになりました。

French bulldog (score = 0.40884)
boxer (score = 0.19887)
bull mastiff (score = 0.07549)
American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier (score = 0.01267)
Boston bull, Boston terrier (score = 0.01237)

French bulldogの確率が約40%と一番高いので合っていますが、そこまで確率は高くないですね。ただ、とりあえず、プログラムで画像を認識させるということはできました。