VGG16を使用してPythonで精度の高い画像分類をしてみる!

python

はじめに

画像分類のタスクにおいて、VGG16は素晴らしい性能を発揮するモデルの一つです。この記事では、Pythonを使用してVGG16を実装し、心地よい精度で画像を分類する方法についてお話しします。

必要なライブラリのインストール

まず、TensorFlowとMatplotlibという便利なライブラリをインストールしておきましょう。

pip install tensorflow
pip install matplotlib

データセットの準備

画像分類に使うデータは、ここではKerasに組み込まれているCIFAR-10データセットを使用します。これを読み込んでみましょう。

from tensorflow.keras.datasets import cifar10

# データセットの読み込み
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

データの前処理

VGG16は特定の入力形式を必要とします。データを正規化し、適切な形に変換しておきます。

from tensorflow.keras.applications.vgg16 import preprocess_input
from tensorflow.keras.utils import to_categorical

# データの正規化
x_train = preprocess_input(x_train)
x_test = preprocess_input(x_test)

# ラベルをOne-Hotエンコーディング
y_train = to_categorical(y_train, num_classes=10)
y_test = to_categorical(y_test, num_classes=10)

VGG16モデルの構築

VGG16モデルを構築してみましょう。ベースモデルには分類用の層を追加します。

from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Flatten

# VGG16のベースモデルを読み込み
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(32, 32, 3))

# ベースモデルの上に分類用の層を追加
model = Model(inputs=base_model.input, outputs=Dense(10, activation='softmax')(Flatten()(base_model.output)))

モデルのコンパイル

モデルをコンパイルして訓練の準備を整えましょう。

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

モデルの訓練

データを使用してモデルを訓練します。

model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))

結果の評価

最後に、訓練が終わったらテストデータでモデルの性能を評価します。

loss, accuracy = model.evaluate(x_test, y_test)
print(f'Test Loss: {loss}, Test Accuracy: {accuracy}')

まとめ

この記事では、Pythonを使ってVGG16を実装し、画像分類タスクに適用する手順を紹介しました。データセットの用意、モデルの構築、訓練、評価のステップを踏むことで、高い精度の画像分類が可能です。ぜひ、コードを実行してみて、素敵な結果を楽しんでくださいね!

コメント