画像の分類に取り組んでおり、データ拡張を実装したい場合は、2つを組み合わせて、強力な 'ImageDataGenerator`クラスを使用してフォルダーからバッチを直接ロードできます。
見ていスチールハーフメッシュマスクのマニュアルを!
そのリンクから例をコピーして貼り付けることはしませんが、実行する手順の概要を説明できます。
ジェネレータクラスを作成します。 data_gen = ImageDataGenerator()
オンザフライで拡張を実行したい場合は、クラスの作成時に指定できます。 data_gen = ImageDataGenerator(samplewise_center=True, ...)
たとえば、feature_wise正規化(サンプルごとではない)など、データセットに関する統計が必要な拡張プロセスを使用する場合は、データの一部を表示してジェネレータを準備する必要がありますdata_gen.fit(training_data)
。このfit
方法は、平均値や標準偏差などを事前に計算するだけで、後で正規化に使用されます。
ジェネレーターはモデルのfit_generator
メソッドに入り、ジェネレーターのメソッドを呼び出しますflow_from_directory
:
model.fit_generator(training_data=data_gen.flow_from_directory('/path/to/folder/'), ...)
検証データにImageDataGeneratorを使用して別のジェネレーターを作成することもできます。その場合、拡張を適用しないでください。これにより、検証テストが実際のデータで実行され、モデルのパフォーマンスを正確に把握できます。
いずれにせよ、これらのジェネレーターは理論的には永久に実行され、フォルダーからバッチを生成します。したがって、Kerasからのコールバック関数を使用して、特定の基準が満たされたときに停止することをお勧めします。EarlyStoppingクラスのドキュメントを参照してください。これを手動で行うこともできますが、Kerasを使用すると非常に簡単になります。
きめ細かな制御が必要な場合は、上記のすべてを手動で行い、ディスクから1つのバッチに対して十分なサンプルをロードし、いくつかの拡張を実行してから、model.train_on_batch()
メソッドを実行します。詳細を知りたい場合は、まずKerasの方法を学び、次に必要に応じてTensorflowを組み合わせた独自の詳細モデルに進むのが最善です。2つは非常にうまく一緒に使用できます!