import numpy as np
import pprint
from tensorflow import keras
from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
= "images/P1071064.jpeg"
image_path = 224 image_size
Apple SiliconのMacでは、GPU対応のTensorFlowが使えるということで、TensorFlowを使った機械学習です。Keras組み込みのVGG16で画像の分類をやってみます。
準備
Pythonの準備です。
識別する画像は以下のものです。
VGG16による画像識別実行
image
に画像を読み込み、形式を整えたうえで、preprocess_input
で前処理を実行します。そして、predict
で分類実行、decode_predictions
でデコードします。デフォルトでは上位5番目までの結果が返されます。
= VGG16(input_shape = (image_size, image_size, 3))
vgg16 = keras.utils.load_img(image_path,
image = (image_size, image_size))
target_size = keras.utils.img_to_array(image)
input_arr = np.array([input_arr])
input_arr = preprocess_input(input_arr)
preprocessed_image = vgg16.predict(preprocessed_image)
predict = decode_predictions(predict) result
結果
結果の表示です。pprint
で整形しています。
pprint.pprint(result)
[[('n01847000', 'drake', 1.0),
('n01667778', 'terrapin', 1.5397424e-20),
('n01855672', 'goose', 6.006676e-26),
('n02056570', 'king_penguin', 6.160868e-31),
('n01855032', 'red-breasted_merganser', 6.5141483e-32)]]
“drake”は「雄ガモ」の意味ですので、ただしく分類されたようです。