TFLearn:如何在图像中使用图像预加载器 - >想象出回归问题

时间:2016-12-21 16:17:19

标签: image tensorflow tflearn

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

我有一个非常大的训练集,不适合记忆,所以我想“在飞行中”训练,从训练准备消耗它们时从磁盘中提取图像。

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

在tflearn框架中,为X和y都是图像的回归问题做类似事情的最佳方法是什么?我觉得我必须遗漏一些显而易见的东西,但我已经浏览了数据实用程序,数据增强和数据预处理部分,但没有看到任何内容。

对于我正在尝试的全部范围:我在磁盘上有大量图像。在运行中,我需要能够加载我的图像,然后对图像进行一些修改以定义输入图像X和y。需要增加磁盘上的图像以正确定义X和y。给定从磁盘读取的小批量X,我可以一次定义X和y。

1 个答案:

答案 0 :(得分: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=3中的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)

您也需要启动队列运行程序。这个(以及最后一个代码片段中的幻数)在the documentation on batching中得到了相当好的解释。