2017-11-09 9 views
1

Google MLエンジンとGoogle Storageを使用してTensorFlowでSSDモデルをトレーニングしています。 TFのobject detection exampleでは、すべての画像を1つの大きなTFRecordファイルに入れます。しかし、このスキームでは、すべての画像のサブセットを選択することによって異なる訓練セットを組み立てたい場合、所与の画像は、画像が属する訓練セットごとに1回、複数回記憶される。Google MLエンジンとGoogle Storageを使用してトレーニング用の多数の画像を保存するベストプラクティス

代わりに、各画像を個別のファイルとして保存し、URLのフラットなリストを使用して、さまざまなデータセットの画像のメンバーシップを示すことができます。しかし、私の経験に基づいて、Google Storageは多数の小さなファイルを読み込むために最適化されておらず、トレーニングスループットが低くなっています。

良いスループットを達成しながら複数の画像を複数回保存しないようにする方法があるかどうかを確認したいと思います。

+0

ちょうどよく分かりますが、与えられた画像のサブセットを選択する能力が必要なので、1つのファイルでトレーニングを設定する必要はありませんか? – MarkCutajar

+0

@MarkCutajarそうですね。それ以外の場合は、各データセットの大きなトレーニングデータファイルを生成するために何時間も費やさなければなりません。 – mr49

答えて

0

GCSの小さなファイルはスループットを低下させます。

いくつかのアイデア:

  1. フルパイプを維持するためにmany reading threadsを使用して入力パイプラインを構築します。 (newer APIへのリンク)
  2. 起動時にファイルをローカルディスクにコピーします。
  3. TFグラフの構造を使用してファイルを除外します。

1番はあなたをかなり遠くにさせるでしょう。

0

私はどうなるのか、多数のファイルがトレーニングスループットが低下たので、次のとおりです。

  • 大tfrecordに画像を置きます。レコードは、フィールドの1つがサブセットキーになるように設定されます。
  • 新しいDataset APIを使用すると、適切な解析関数を使用して必要なデータセットのみを読み込みます。

イメージが適切にシャッフルされていると仮定すると、パイプラインのデータが不足しないように、選択するサブセットが十分に大きく、かなりの読み込みスレッドが使用されます。

もう1つのアプローチは、tfrecordsをより小さなサブセットに分割することですが、各イメージのファイルは分割しないことになります。いずれにせよ、あなたは取り組む必要があるいくつかの問題を抱えていますが、これは問題の可能性が低いオプションを選択する場合です。

関連する問題