AutoKeras 作成したモデルを用いての画像分類
AutoKerasで学習したモデルの保存と読み込みを試してみました。AutoKeras 作成したモデルの保存と呼び出し、モデルの内容確認
今回はモデルを読み込んで画像の分類を試してみます。
テストデータの判定
作成したモデルを読み込み分類してみます。
- import tensorflow as tf
- from tensorflow.keras.datasets import cifar10
- import numpy as np
- import tkinter as tk
- from PIL import Image, ImageTk
- (x_train, y_train), (x_test, y_test) = cifar10.load_data()
- # 出力したモデルの読み込み
- model = tf.keras.models.load_model('model.h5')
- # 最初のテスト画像を判定
- predicted_y = model.predict(x_test[1])
- print(predicted_y)
- # 確信度が最大値のインデックス表示
- print(np.argmax(predicted_y))
- # 判定した画像を表示
- 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_test[1]))
- img = img.resize((128, 128)) # 画像を拡大表示
- tk_img = ImageTk.PhotoImage(img)
- canvas.create_image(
- 0,
- 0,
- image=tk_img,
- anchor=tk.NW
- )
- root.mainloop()
実行結果
[[3.22687876e-04 8.15596506e-02 1.15753856e-07 3.03708219e-07
2.27200161e-08 5.22791144e-09 1.87353741e-08 4.26373497e-08
9.17966664e-01 1.50418127e-04]]
8
分類は「8(ship:船)」です。
正しく認識できているようです。
画像ファイルを読み込んでの判定
用意されたデータセットからではなく、画像ファイルを読み込んで判定を行ってみます。
まず、先程表示した船の画像をファイルに保存。
Python mnistデータセットの内容を画像ファイルに出力する(pillow使用)
- import numpy as np
- from PIL import Image
- from tensorflow.keras.datasets import cifar10
- (x_train, y_train), (x_test, y_test) = cifar10.load_data()
- img = Image.fromarray(np.uint8(x_test[1]))
- img.save('ship.png')
以下の画像が出力できました。
この画像を読み込んで判定を行ってみます。
- import tensorflow as tf
- from PIL import Image
- import numpy as np
- img = np.array(Image.open('ship.png'))
- # 出力したモデルの読み込み
- model = tf.keras.models.load_model('model.h5')
- # テスト画像を判定
- predicted_y = model.predict(img)
- print(predicted_y)
- # 確信度が最大値のインデックス表示
- print(np.argmax(predicted_y))
実行結果
[[3.22687876e-04 8.15596506e-02 1.15753856e-07 3.03708219e-07
2.27200161e-08 5.22791144e-09 1.87353741e-08 4.26373497e-08
9.17966664e-01 1.50418127e-04]]
8
先ほどと同じく、「8(ship:船)」という分類になりました。
【参考URL】
Python, NumPyで画像処理(読み込み、演算、保存)