Chapter 15無料公開

🤖有名モデルを使ってみよう04【MobileNet】

NekoAllergy
NekoAllergy
2022.08.18に更新

はじめに

深層学習フレームワーク「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 には、いくつかの種類とバージョンがあります。

参考:
https://keras.io/api/applications/

MobileNet とは:
https://qiita.com/omiita/items/77dadd5a7b16a104df83