Keras に入門する 画像分類 Part.3 独自の分類器を作ってみる

前回準備した画像で学習してみる

https://colab.research.google.com/drive/1NQhm5hCOFqv1v-QZM-AuGr1bDWbz2Mgh

学習結果は

WARNING:tensorflow:Variable *= will be deprecated. Use `var.assign(var * other)` if you want assignment to the variable value or `x = x * y` if you want a new python Tensor object.
Train on 7722 samples, validate on 200 samples
Epoch 1/100
7722/7722 [==============================] - 6s 765us/step - loss: 2.2591 - acc: 0.1444 - val_loss: 2.1802 - val_acc: 0.2200
Epoch 2/100
7722/7722 [==============================] - 4s 508us/step - loss: 2.0826 - acc: 0.2370 - val_loss: 2.0145 - val_acc: 0.2700
Epoch 3/100

...

Epoch 99/100
7722/7722 [==============================] - 4s 500us/step - loss: 0.6649 - acc: 0.7762 - val_loss: 1.5615 - val_acc: 0.5650
Epoch 100/100
7722/7722 [==============================] - 4s 502us/step - loss: 0.6505 - acc: 0.7835 - val_loss: 1.3909 - val_acc: 0.5450
<keras.callbacks.History at 0x7f75c9ba2780>

テストデータの分類精度は55%程度までしかあがらなかった

検証用に2個ずつ残しておいた画像を分類してみる

model.predict_classes(x_valid)
→ array([5, 0, 1, 7, 6, 5, 3, 3, 4, 4, 5, 9, 6, 6, 5, 6, 8, 8, 9, 1])

12/20で60%の正解だった

(すべて正解していれば [0, 0, 1, 1, 2, 2, 3, 3, ... , 9, 9] となるはず)

外れたやつをいくつか見てみる

f:id:uhiaha888:20180930024459p:plain

1枚目はカレーの画像だけど、キャラ弁的に何かが乗っかっているみたいなので分類は難しいのかも

2枚目は餃子の画像だけど32x32に縮小すると何かわからない

f:id:uhiaha888:20180930024512p:plain

3枚目と4枚目はハンバーグの画像のはずだけど僕がみても何かよくわからない

逆に当たっていたのも見てみると

f:id:uhiaha888:20180930025112p:plain

オムライスは黄色が特徴的だからかどちらも正解

f:id:uhiaha888:20180930025238p:plain

カレーやラーメンもそれっぽい画像は当てられていた

ということで、自分で集めた画像データでもそれなりの分類をできた

やったね