Pythonで簡単な画像分類を行うためには?

python

画像分類は、コンピュータビジョンの重要なタスクの一つです。Pythonの豊富な機械学習ライブラリを活用することで、簡単かつ効果的に画像分類を実施することができます。本記事では、Python 3.7を使用して猫と犬の画像を分類する簡単な画像分類モデルを構築する手法について詳しく解説します。ダミーデータを用いて具体的な手順を説明します。

使用するライブラリ

本記事では、以下のライブラリを使用します。

  • Python 3.7: プログラミング言語のバージョンとして、Python 3.7を使用します。
  • TensorFlow 2.5: 機械学習フレームワークであり、画像分類モデルの構築やトレーニングに使用します。
  • Keras 2.4.3: TensorFlowの上に構築された高レベルのニューラルネットワークAPIであり、モデルの作成やトレーニングを簡単に行うことができます。
  • OpenCV 4.2.0: 画像の読み込みや前処理を行うためのライブラリです。

ダミーデータの作成と前処理

まず、簡単なダミーデータを作成しましょう。ダミーデータとして、猫と犬の画像データセットを用意します。

  1. ダウンロードした猫と犬の画像をそれぞれ”cat_images”と”dog_images”というフォルダに保存します。
  2. 以下のPythonコードを使用して、画像を読み込み、リサイズしてデータセットを作成します。

import os
import numpy as np
import cv2
#ダミーデータの作成
data = []
labels = []

cat_path = "cat_images"
dog_path = "dog_images"

for img_file in os.listdir(cat_path):
img = cv2.imread(os.path.join(cat_path, img_file))
img = cv2.resize(img, (64, 64)) # 画像のサイズを統一する
data.append(img)
labels.append(0) # 猫のラベルを0とする

for img_file in os.listdir(dog_path):
img = cv2.imread(os.path.join(dog_path, img_file))
img = cv2.resize(img, (64, 64))
data.append(img)
labels.append(1) # 犬のラベルを1とする

#データのシャッフル
data = np.array(data)
labels = np.array(labels)
shuffle_indices = np.random.permutation(len(data))
data = data[shuffle_indices]
labels = labels[shuffle_indices]

モデルの構築とトレーニング

次に、画像分類モデルを構築しましょう。以下のPythonコードを使用して、モデルのアーキテクチャを定義し、データセットを用いてトレーニングを行います。


from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
#モデルの構築
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

#モデルのコンパイル
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

#モデルのトレーニング
model.fit(data, labels, epochs=10, batch_size=32)

予測の実行と結果の解釈

モデルのトレーニングが終了したら、新しい画像を分類するためにモデルを使用することができます。以下のPythonコードを使用して、新しい画像に対する予測を実行します。


import cv2
import numpy as np
def predict_image(image_path):
img = cv2.imread(image_path)
img = cv2.resize(img, (64, 64))
img = np.expand_dims(img, axis=0)
prediction = model.predict(img)
if prediction[0][0] > 0.5:
    return "犬"
else:
    return "猫"

#予測の実行
image_path = "test_image.jpg"
prediction = predict_image(image_path)
print("予測結果:", prediction)

まとめ

この記事では、Pythonを使用して簡単な画像分類を行う手法について詳しく解説しました。Python 3.7を使用し、TensorFlow 2.5とKeras 2.4.3を活用して、猫と犬の画像を分類するモデルを構築しました。ダミーデータを用いてデータセットを作成し、モデルの構築、トレーニング、予測を行いました。また、OpenCVを使用して画像の読み込みや前処理を行いました。 画像分類は、機械学習の応用の一つであり、さまざまな分野で活用されています。猫と犬の分類という具体的な例を通じて、画像分類の基本的な手法とモデル構築の流れを理解することができました。 Pythonを使用した画像分類は、機械学習の初心者から上級者まで幅広いレベルの人々にとって興味深いテーマです。ぜひこの記事を参考にして、自分自身の画像分類プロジェクトを始めてみてください。成功への第一歩となることでしょう。

コメント