TensorFlowとKerasで花の画像データセットを前処理する方法
はじめに
花の画像データセットは、Kerasが提供する前処理APIを使用することで簡単に前処理できます。このAPIには「image_dataset_from_directory」というメソッドが用意されており、検証用データの分割方法やデータが保存されているディレクトリ、その他のパラメータを指定するだけで、データセットを効率的に処理することが可能です。
関連記事:TensorFlowとは何か?KerasとTensorFlowを連携させてニューラルネットワークを作成する方法
Keras Sequential APIについて
本記事では、Keras Sequential APIを使用します。これは、各レイヤーがちょうど1つの入力テンソルと1つの出力テンソルを持つ、シンプルな層のスタックからなるモデルを構築する際に非常に役立つAPIです。画像分類器はkeras.Sequentialモデルを使って作成し、データはpreprocessing.image_dataset_from_directoryを使用して読み込みます。
過学習(オーバーフィッティング)への対策
ディスクからデータを効率的に読み込んだ後は、過学習の有無を確認し、適切な対策を講じることが重要です。主な対策としては、以下のような手法があります。
- データ拡張(Data Augmentation):画像に回転や反転などの変換を加えて、学習データのバリエーションを増やす手法
- ドロップアウト(Dropout):学習時に一部のニューロンをランダムに無効化し、汎化性能を高める手法
使用するデータセットの概要
今回使用するデータセットには約3,700枚の花の画像が含まれており、クラスごとに1つのサブディレクトリ、合計5つのサブディレクトリに分類されています。クラスは以下の5種類です。
- daisy(デイジー)
- dandelion(タンポポ)
- roses(バラ)
- sunflowers(ひまわり)
- tulips(チューリップ)
実行環境:Google Colaboratory
本記事のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるクラウド環境で、面倒な設定は一切不要です。また、GPU(グラフィックス処理ユニット)へ無料でアクセスできる点も大きな魅力です。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
print("Pre-processing the dataset using keras.preprocessing")
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
class_names = train_ds.class_names
print("The class names are:")
print(class_names)コード引用元:https://www.tensorflow.org/tutorials/images/classification
出力結果
Pre-processing the dataset using keras.preprocessing Found 3670 files belonging to 5 classes. Using 734 files for validation. The class names are: ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips']
コードの解説
- データセットはkeras.preprocessingメソッドを使用して処理されます。
- validation_split=0.2を指定することで、全データの20%が検証用データとして自動的に分割されます。
- 次のステップとして、クラス名をコンソールに表示し、データセットの構成を確認します。
-
PythonとKerasを使ってモデルの重みを手動で保存・復元する方法
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムや深層学習アプリケーションの実装などに広く利用されています。研究用途から本番環境まで、さまざまな場面で活用されています。Kerasは、ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)プロジェクトの研究の一環として開発されました。KerasはPythonで記述された深層学習APIであり、機械学習の問題解決を効率的に行うための生産性の高いインターフェースを備えた
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ