1

私は tflearn を初めて使用し、入力画像が MxN グレースケールまたは MxNx3 RGB のいずれかである画像入力 - >画像出力回帰問題を解決するために CNN をトレーニングしようとしています。

メモリに収まらない非常に大きなトレーニング セットがあるため、「オンザフライ」でトレーニングし、トレーニングでイメージを使用する準備ができたら、ディスクから画像を取得したいと考えています。

image_preloader は、X が入力画像であり、y が X に対応するスカラー ラベルのセットである場合に、常に問題を解決するという前提を置いているようです。

X と y の両方が画像である回帰問題に対して、tflearn フレームワーク内で同様のことを行う最良の方法は何ですか? 明らかな何かが欠けているように感じますが、Data Utils、Data Augmentation、および Data Preprocessing セクションを調べましたが、何も表示されません。

私がやろうとしていることの全範囲について:私はディスク上に大量の画像を持っています。その場で、画像をロードし、画像にいくつかの変更を加えて、入力画像 X と y を定義できるようにする必要があります。X と y を適切に定義するには、ディスク上のイメージを拡張する必要があります。ディスクから読み取ったミニバッチ X があれば、X と ya のバッチを一度に定義できます。

4

1 に答える 1

0

純粋な TensorFlow では、次のようなものを使用できます。

def load_image(type="feature")
  files = '/path/to/my/images/%s/*.jpg' % type
  filename_queue = tf.train.string_input_producer(tf.gfile.Glob(files))
  reader = tf.WholeFileReader()
  filename, data = reader.read()
  image_tensor = tf.image.decode_jpeg(data, channels=3)
  return image_tensor

channels=3inは、元は異なる色空間にあった場合でも、decode_jpeg画像がすべて のテンソルであることを保証することに注意してください。[h, w, 3]

この時点で、単一の画像テンソルがあります。次のように、バックグラウンド キューを使用してそれらをバッチ処理できます。

features = load_image("feature")
labels = load_image("labels")
batch_size = 64
input_batch, label_batch = tf.train.shuffle_batch([features, labels],
  batch_size=batch_size, num_threads=4, capacity=1000 + 3 * batch_size,
  min_after_dequeue=1000)

キューランナーも開始する必要があります。これ (および最後のコード スニペットのマジック ナンバー) は、バッチ処理に関するドキュメントでかなり詳しく説明されています。

于 2016-12-21T21:50:10.887 に答える