Tensorflowを使ってその画像が何を表しているのかを調べたいと思う。
TensorflowのImage Recognition
Tensorflowのページのチュートリアルをみてみると、画像認識のチュートリアルがあります。
Image Recognition | TensorFlow
チュートリアルでは、パンダの画像をパンダと認識させるものなので、ちょっと実行してみましょう。
実行環境としては、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
は自分が持っている画像に対して使うこともできます。今回はこのブルドッグの画像を判定してみます。
$ 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%と一番高いので合っていますが、そこまで確率は高くないですね。ただ、とりあえず、プログラムで画像を認識させるということはできました。