1

我是 tflearn 的新手,我正在尝试训练一个 CNN 来解决图像输入 - > 图像输出回归问题,其中输入图像是 MxN 灰度或 MxNx3 RGB。

我有一个非常大的训练集,不适合内存,所以我想“即时”训练,在训练准备好使用它们时从磁盘中提取图像。

image_preloader 似乎假设我们将始终解决其中 X 是输入图像且 y 是对应于 X 的一组标量标签的问题。

对于 X 和 y 都是图像的回归问题,在 tflearn 框架中执行类似操作的最佳方法是什么?我觉得我必须遗漏一些明显的东西,但是我浏览了 Data Utils、Data Augmentation 和 Data Preprocessing 部分并没有看到任何东西。

对于我正在尝试做的全部范围:我在磁盘上有大量图像。在运行中,我需要能够加载我的图像,然后对图像进行一些修改以定义输入图像 X 和 y。需要扩充磁盘上的图像以正确定义 X 和 y。给定从磁盘读取的 minibatch 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=3indecode_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 回答