ボンジニアの備忘録

中小SIerからWeb系のベンチャーに企業に転職。基本的にはごく普通の平凡なエンジニアです。思ったことをつらつら書いていきます。

Kerasで画像分類を試してみる

実験内容

今回は下記のワンちゃんの画像を使ってImageNetの学習済みモデルで実験をしてみたいと思います。コード量は少なく、簡単にできるのでみなさん色々遊んでみてください!
f:id:yujikawa11:20170109152856j:plain:w200

Kerasをインストール

$ pip install keras

プログラム実装

from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from keras.preprocessing import image
import numpy as np
import sys

"""
ImageNetで学習済みのVGG16モデルを使って入力画像を予測
"""
# モデルの読み込み
model = VGG16(weights='imagenet')
# 入力画像のロード
filename = "./dog.jpg"
img = image.load_img(filename, target_size=(224, 224))
# 入力画像の行列化
x = image.img_to_array(img)
# 4次元テンソル
x = np.expand_dims(x, axis=0)
# 予測
preds = model.predict(preprocess_input(x))
results = decode_predictions(preds, top=5)[0]
# 結果出力
for result in results:
    print(result)

出力結果

('n02110806', 'basenji', 0.25577912)
('n02113023', 'Pembroke', 0.087493889)
('n02115641', 'dingo', 0.077256948)
('n02085620', 'Chihuahua', 0.062823117)
('n02113186', 'Cardigan', 0.0560412)

一番似ているのはバセンジー?
f:id:yujikawa11:20170109153218j:plain

写真の状態でだいぶ変わりますが、他の画像とかで遊んでみたらほとんど正解していましたよー!面白いですね。

このような画像分類を学ぶ際に参考にしたら良い本はこちらの本です。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

ゼロから作るDeep Learning [ 斎藤 康毅 ]
価格:3672円(税込、送料無料) (2017/1/9時点)