作成した機械学習モデルを用いて画像認識を行う

以前、7種類の野菜の画像認識を行う機械学習モデルをTensorflow Kerasを用いて作成したので作成した機械学習モデルを保存して、保存したモデルを読み込んで新たに撮影した画像の野菜の識別を行ってみたいと考えそのための方法を調べて実行してみたのでその過程を示していきたい。

機械学習モデルを作成する部分についてはこの記事では詳しく述べないが参考にしたサイトは以下のものである。

ここから自分で作成した機械学習モデルを用いて画像認識を行う方法を書いていく。まず、別のプログラム上でも使えるように作成した機械学習モデルをファイルとして保存する。モデルの保存方法は以下のとおりである。

model.save('./model/○○.h5')

第一引数にはモデルの保存先のパスを指定する。これでモデルを保存することができた。保存したモデルを用いて画像認識を行うために新しいpythonプログラムを作成する。次のようなディレクトリで今回は進めていく。

gazouninsiki
-main.py
-a.jpg
-model.h5

それではmain.pyの中身を記述していきたいと思う。今回は作成したモデルを用いてa.jpgという画像を画像認識するプログラムを作成する。作成したプログラム全体は以下のとおりである。

import tensorflow as tf
import numpy as np
from PIL import Image

model = tf.keras.models.load_model('./model.h5')

img = np.array(Image.open("./a.jpg").resize((128, 128))) / 255.0
img_expand = img[np.newaxis, ...]

prediction_label = model.predict(img_expand)
label_num = prediction_label[0].argmax()
labels = ['hourensou', 'jagaimo', 'kyabetu', 'ninjin', 'retasu', 'tamanegi', 'tomato']
print(labels[label_num])

まず必要なものをインポートしていく。今回のプログラムで必要なのは
・tensorflow
・numpy
・PIL の Image
の3つである。

そのあとに先ほど保存したモデルを読み込んでいく。モデルの読み込みは

tf.keras.models.load_models('<モデルのパス>')

で行うことができる。モデルを読み込んだら次は画像を読み込んでモデルで推測できるようにするために処理する必要がある。

img = np.array(Image.open("./a.jpg").resize((128, 128))) / 255.0
img_expand = img[np.newaxis, ...]

ただ読み込んだだけだと画像のタプルは(128,128,3)という形になる。しかしモデルに渡す場合は(1,128,128,3)のように4つの数が必要であるため、2行目の処理を行うことで追加している。

そのあとは読み込んだモデルで推測を行う。推測は

model.predict(img_expand)


で行うことができる。推測を行うとそれぞれのラベルである確率のリストが返されるので、その中で最も確率の高いものを抽出するために2行目の

label_num = prediction_label[0].argmax()


という処理を行っている。ここで帰ってくるのは数字であるから、ラベル名を表示したいのであればラベル名のリストをあらかじめ作成しておく必要がある。

最後にラベル名のリストのlabel_num番目の値を表示するようにすれば、欲しかった画像がなんであるかということのモデルが導き出した答えを表示することができる。

今回のプログラムを作成する上で参考にしたサイトを以下に示す。


この記事が気に入ったらサポートをしてみませんか?