Python
 Computer >> コンピューター >  >> プログラミング >> Python

TensorFlowとPythonを使って花のデータセットをディスクから読み込み、モデル化する方法

TensorFlowの「image_dataset_from_directory」メソッドを使用すると、花のデータセットをディスクから読み込み、モデル化することができます。

関連記事:
TensorFlowとは何か?KerasはTensorFlowとどのように連携してニューラルネットワークを構築するのか?

少なくとも1つの畳み込み層(convolutional layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNを利用することで、画像認識向けの学習モデルを効率的に構築できます。

画像分類における転移学習(Transfer Learning)の基本的な考え方は、「大規模かつ汎用的なデータセットで訓練されたモデルは、視覚世界における汎用モデルとして効果的に機能できる」というものです。こうしたモデルはすでに特徴マップを学習しているため、開発者は大規模なデータセットを使って大規模なモデルをゼロから訓練し直す必要がありません。

TensorFlow Hubは、事前訓練済みのTensorFlowモデルを集めたリポジトリです。TensorFlowを使えば、これらの学習済みモデルをファインチューニングすることも可能です。

本記事では、tf.kerasと組み合わせてTensorFlow Hubのモデルを利用する方法、特にTensorFlow Hubが提供する画像分類モデルの使い方を解説します。その後、転移学習によってカスタム画像クラスに対応したモデルへとファインチューニングできます。具体的には、事前訓練済みの分類器モデルに画像を入力し、それが何であるかを予測させます。この処理は、追加の訓練を行わずに実行できる点が大きな魅力です。

以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できる環境であり、面倒な設定は一切不要で、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookを基盤として構築されています。

サンプルコード

print("The flower dataset")
data_root = tf.keras.utils.get_file(
'flower_photos','https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
print("Load data into the model using images off disk with image_dataset_from_directory")
batch_size = 32
img_height = 224
img_width = 224
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
str(data_root),
validation_split=0.2,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)

コード出典:https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub

出力結果

The flower dataset
Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz
228818944/228813984 [==============================] - 4s 0us/step
Load data into the model using images off disk with image_dataset_from_directory
Found 3670 files belonging to 5 classes.
Using 2936 files for training.

解説

  • 異なるクラスでモデルを訓練したい場合は、TFHubが提供する事前訓練済みモデルを利用できます。
  • モデルの最上位層を再訓練することで、独自のカスタム画像分類器を作成できます。
  • これにより、自分のデータセットに含まれるクラスを正確に認識できるようになります。
  • 本記事では花のデータセット(flower photos)を使用します。
  • モデルはimage_dataset_from_directoryメソッドを使い、ディスク上の画像ファイルから直接訓練されます。
  1. TensorFlowとPythonを使ってデータセットを視覚化する方法

    ここでは、花のデータセットを使用します。このデータセットは、Googleが提供するAPI経由でダウンロードでき、「get_file」メソッドにAPIのURLを引数として渡すことで、データを開発環境に取得できます。 ダウンロードしたデータは「matplotlib」ライブラリを使って視覚化できます。「imshow」メソッドを使用すると、コンソール上に画像を表示することが可能です。 TensorFlowとKerasの連携 関連記事: TensorFlowとは何か?KerasはどのようにTensorFlowと連携してニューラルネットワークを構築するのか? 本記事ではKeras Sequential

  2. TensorFlowとPythonを使って花のデータセットを可視化する方法

    花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col