AutoKeras CIFAR10 画像分類を試す
自動的に画像分類を行ってくれるAutoKerashttps://autokeras.com/
以前から存在は知っていたのですが、バージョンが1となり安定してそうなので試してみました。
CIFAR10
チュートリアルのサンプルでは、手書き文字のMNISTを分類しています。
https://autokeras.com/tutorial/image_classification/
これを参考に、CIFAR10のカラー画像の分類を試してみます。
https://keras.io/ja/datasets/
ラベルの意味はこのようになるとのこと。
ラベル | 内容 |
0 | airplane(飛行機) |
1 | automobile(自動車) |
2 | bird(鳥) |
3 | cat(猫) |
4 | deer(鹿) |
5 | dog(犬) |
6 | frog(カエル) |
7 | horse(馬) |
8 | ship(船) |
9 | truck(トラック) |
CIFAR-10:物体カラー写真(乗り物や動物など)の画像データセット
1件取り出して表示してみます。
- import numpy as np
- from tensorflow.keras.datasets import cifar10
- import tkinter as tk
- from PIL import Image, ImageTk
- (x_train, y_train), (x_test, y_test) = cifar10.load_data()
- print(x_train.shape) # (50000, 32, 32, 3)
- print(y_train.shape) # (50000, 1)
- print(y_train[:3]) # array([6, 9, 9], dtype=uint8)
- print(y_train[0])
- root = tk.Tk()
- root.geometry('200x200')
- root.title('cifar10 image')
- canvas = tk.Canvas(
- root,
- width=128,
- height=128
- )
- canvas.place(x=0, y=0)
- #PILでjpgを使用
- img = Image.fromarray(np.uint8(x_train[0]))
- img = img.resize((128, 128)) # 画像を拡大表示
- tk_img = ImageTk.PhotoImage(img)
- canvas.create_image(
- 0,
- 0,
- image=tk_img,
- anchor=tk.NW
- )
- root.mainloop()
ラベルは「6」でカエルですね。
サンプルプログラム
サンプルはこのようになりました。
- from tensorflow.keras.datasets import cifar10
- import autokeras as ak
- (x_train, y_train), (x_test, y_test) = cifar10.load_data()
- clf = ak.ImageClassifier(
- overwrite=True,
- max_trials=1)
- # Feed the image classifier with training data.
- clf.fit(x_train, y_train, epochs=10)
- # Predict with the best model.
- predicted_y = clf.predict(x_test)
- print(predicted_y)
- # Evaluate the best model with testing data.
- print(clf.evaluate(x_test, y_test))
実行すると...
313/313 [==============================] - 1s 2ms/step - loss: 0.8231 - accuracy: 0.7216
[0.8230726718902588, 0.7215999960899353]
正答率0.72ということでしょうか。ちょっと低いですね。
学習については改めて調べてみようと思います。
引き続きモデルの保存や呼び出し、モデルを用いた画像の判定について試してみます。
コメント