はじめに
深層学習フレームワーク「Keras」を使って、画像分類 AI を作ります。
今回は、Keras に内包されているモデル「MobileNetV2」を使います。
imagenet データセットを学習した重みを読み込むことで、手元にある画像を分類します。
01 準備
必要なライブラリ
requirements.txt
numpy
tensorflow
必要なデータ
画像を 1 枚用意してください。なんでもいいです。
02 コード全文
コード全文
mobilenet_sample.py
# MobileNet
import numpy as np
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.applications.imagenet_utils import preprocess_input
from tensorflow.keras.applications.imagenet_utils import decode_predictions
from tensorflow.keras.preprocessing import image
# モデルを読み込む
model = MobileNetV2(weights='imagenet')
print("\n◆Model:")
print(f"{model.name}")
# モデルの構造を表示(長いよ)
#print(model.summary())
# 分類したい画像を用意してください(何でもいいよ)
img_path = 'src/cat.jpeg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
# モデルを使って予測
print("\n◆Predict:")
preds = model.predict(x)
preds_top = decode_predictions(preds, top=3)[0]
# 結果を表示
print(f"{preds_top[0][1]} {preds_top[0][2]*100:.2f}%")
03 出力結果
出力結果
result
◆Model:
mobilenetv2_1.00_224
◆Predict:
1/1 [==============================] - 1s 664ms/step
tiger 15.30%
補足
- imagenet データセットを学習した重みを使用しています。
- 初回はモデルと重みのダウンロードをするため、時間がかかります。
- MobileNet には、いくつかの種類とバージョンがあります。
参考:
MobileNet とは: