【问题标题】:TFLearn: How to use image preloader for image in -> image out regression problemsTFLearn:如何使用图像预加载器处理图像输入 -> 图像输出回归问题
【发布时间】:2016-12-21 16:17:18
【问题描述】:

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

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

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

对于 X 和 y 都是图像的回归问题,在 tflearn 框架中执行类似操作的最佳方法是什么?我觉得我必须遗漏一些明显的东西,但我浏览了数据实用程序、数据增强和数据预处理部分,但什么也没看到。

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

【问题讨论】:

  • 你可以自己加载它们而不是依赖框架吗?

标签: image tensorflow tflearn


【解决方案1】:

在纯 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

注意decode_jpeg 中的channels=3 将确保您的图像都是[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 很好地解释了这一点(以及最后一个代码 sn-p 中的幻数)。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2021-11-19
    • 2022-10-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多