okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

Kerasモデルを活用した画像推論手法

🔍 学習済みKerasモデルで画像を判定する【推論編】

前回の記事では、Keras + VGG16 を使って画像分類モデルを構築し、学習済みのモデルを keras_model.h5 として保存しました。

今回はそのモデルを使って、新しい画像を分類(推論)する方法を紹介します。


🎯 このスクリプトでできること

  • 学習済みの .h5 モデルを読み込み
  • 新しい画像を指定サイズに変換し、モデルに入力
  • 分類結果(ラベルとスコア)を出力

🧪 実行例:画像1枚を分類

from keras.models import load_model
import numpy as np
from keras.preprocessing.image import img_to_array, load_img

# ファイル名(拡張子は自動付加)
jpg_name = 'ELFADSC08920_TP_V'

# 学習済みモデルを読み込む
model = load_model('keras_model.h5')

# 判定対象の画像を読み込む(224x224にリサイズ)
img_path = ('target/' + jpg_name + '.jpg')
img = img_to_array(load_img(img_path, target_size=(224, 224)))

# 正規化(0〜1にスケーリング)
img_nad = img_to_array(img) / 255

# 4次元に変換(バッチ形式にする)
img_nad = img_nad[None, ...]

# 分類ラベルを定義(任意:データに応じて変更)
label = ['1', '2']

# 推論実行
pred = model.predict(img_nad, batch_size=1, verbose=0)
print('pred:', pred)

# 最も高いスコアの取得
score = np.max(pred)

# 最もスコアが高いクラスのラベルを取得
pred_label = label[np.argmax(pred[0])]

# 結果表示
print('name:', pred_label)
print('score:', score)

📦 フォルダ構成(例)

project/
├── keras_model.h5
├── target/
│   └── ELFADSC08920_TP_V.jpg
└── predict.py

🔍 出力結果の例

pred: [[0.12 0.88]]
name: 2
score: 0.88
  • name: 最も確率が高いクラス名(ここでは '2'
  • score: 推論されたそのスコア(ここでは 0.88

💡 応用ポイント

  • label = ['1', '2'] は、自分のデータセットに合わせてクラス名に変更可能です(例:['cat', 'dog']
  • WebアプリケーションやAPIとして組み込めば、リアルタイム画像判定も可能になります。
  • 複数画像に対応したバッチ推論にも拡張できます。

🧠 まとめ

このコードを使えば、前回構築したKerasの画像分類モデルを使って、任意の画像を簡単に推論することができます。AIの最終ステップである「推論」を自動化して、自分のプロジェクトやサービスに組み込んでみましょう!