コンテンツにスキップ

第6章 学習済みモデルの使用

1 学習済みモデルとは

既に学習済みのモデルを利用することが出来ます。さまざまな学習済みモデルが公開されていますが、ここでは軽量の MobileNet を利用します。

MobileNetはスマートフォンなどの軽量デバイスでも利用できるように開発された軽量のモデルです。ImageNetという画像のデータセットで学習されたモデルでは、1000種類以上の画像分類が可能です。

2 モデルの構築

では、MobileNetのモデルを構築します。 deep_image.ipynb に以下を記述します。

from tensorflow.keras.applications import MobileNet

# MobileNetモデルをロード(事前学習済みの重みを使用)
model = MobileNet(weights='imagenet')

model.summary()

初回はダウンロードに時間がかかります。

3 推論

実際に推論してみましょう。まず、画像を読み込みます。

from tensorflow.keras.preprocessing import image
import matplotlib.pyplot as plt

# 画像を読み込み、サイズ変更して配列に変換
img_path = "zou.jpg"
img = image.load_img(img_path, target_size=(224, 224))
plt.imshow(img)
plt.show()

では読み込んだ画像が何かを予測してみます。imgを入力できる形 xに変換し、予想します。予想の上位5つを確率と共に表示します。

from tensorflow.keras.applications.mobilenet import preprocess_input, decode_predictions
import numpy as np

# 画像を入力できる形に変換
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

# 推論を実行
pred = model.predict(x)

# 推論結果のトップ5を表示
results = decode_predictions(pred, top=5)[0]
for id, name, pct in results:
    print(name, pct)