TensorFlowで花のデータセットのファイルパスから(画像, ラベル)ペアを作成する方法
TensorFlowで画像分類モデルを構築する際、ファイルパスから(画像, ラベル)ペアを作成することは重要な前処理ステップです。まず、ファイルパスをパスコンポーネントのリストに変換します。次に、後ろから2番目の値をクラスディレクトリとして取得し、ラベルを整数形式にエンコードします。その後、圧縮された文字列をテンソルに変換し、必要なサイズにリサイズします。
使用するデータセットについて
本記事では、数千枚の花の画像を含む「flowersデータセット」を使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。
以下のコードはGoogle Colaboratory上で実行できます。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できる環境であり、事前の設定が一切不要で、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
print("ファイルパスを(画像,ラベル)ペアに変換する関数")
print("まず、パスをパスコンポーネントのリストに変換します")
print("次に、後ろから2番目の値をクラスディレクトリとして追加します")
print("ラベルは整数としてエンコードされます")
def get_label(file_path):
parts = tf.strings.split(file_path, os.path.sep)
one_hot = parts[-2] == class_names
return tf.argmax(one_hot)
print("圧縮された文字列を3次元のint型テンソルに変換します")
print("画像を必要なサイズにリサイズします")
def decode_img(img):
img = tf.image.decode_jpeg(img, channels=3)
return tf.image.resize(img, [img_height, img_width])
print("生データを文字列値としてファイルから読み込みます")
def process_path(file_path):
label = get_label(file_path)
img = tf.io.read_file(file_path)
img = decode_img(img)
return img, labelコード出典:https://www.tensorflow.org/tutorials/load_data/images
出力結果
ファイルパスを(画像,ラベル)ペアに変換する関数 まず、パスをパスコンポーネントのリストに変換します 次に、後ろから2番目の値をクラスディレクトリとして追加します ラベルは整数としてエンコードされます 圧縮された文字列を3次元のint型テンソルに変換します 画像を必要なサイズにリサイズします 生データを文字列値としてファイルから読み込みます
コードの解説
- get_label関数:ファイルパスを(画像, ラベル)ペアに変換するために定義されています。
- tf.strings.splitを使って、ファイルパスをパスコンポーネントのリストに変換します。
- 後ろから2番目の要素がクラス名(ディレクトリ名)に該当するため、これを取得してクラスディレクトリとして扱います。
- tf.argmaxを使い、ラベルを整数値としてエンコードします。
- decode_img関数:画像をデコードしてリサイズし、返すための関数です。
- まずtf.image.decode_jpegで圧縮された文字列を3次元の整数テンソルに変換し、その後tf.image.resizeで指定サイズにリサイズします。
- process_path関数:ファイルから生データを文字列値として読み込み、上記の処理を組み合わせて(画像, ラベル)ペアを返す関数です。
この一連の処理により、TensorFlowのtf.data APIと組み合わせることで、大量の画像データを効率的に読み込み、学習用のデータパイプラインを構築できます。
-
TensorFlowで花のデータセットを使ってモデルの学習を続ける方法
花のデータセットでモデルの学習を継続するには、Kerasのfitメソッドを使用します。このメソッドには、エポック数(データ全体を何回繰り返してモデルを構築するかの回数)も指定します。学習の過程では、サンプル画像がコンソール上に表示されることもあります。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットは5つのサブディレクトリで構成されており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。以下のコードはGoogle Colaboratory(Google Colab)上で実行しています。Goo
-
TensorFlowとPythonを使って花のデータセットを可視化する方法
花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col