我是tflearn的新手,我正在尝试训练CNN解决图像问题 - >图像输出回归问题,输入图像是MxN灰度或MxNx3 RGB。
我有一个非常大的训练集,不适合记忆,所以我想“在飞行中”训练,从训练准备消耗它们时从磁盘中提取图像。
image_preloader似乎假设我们将始终解决X是输入图像的问题,y是一组与X对应的标量标签。
在tflearn框架中,为X和y都是图像的回归问题做类似事情的最佳方法是什么?我觉得我必须遗漏一些显而易见的东西,但我已经浏览了数据实用程序,数据增强和数据预处理部分,但没有看到任何内容。
对于我正在尝试的全部范围:我在磁盘上有大量图像。在运行中,我需要能够加载我的图像,然后对图像进行一些修改以定义输入图像X和y。需要增加磁盘上的图像以正确定义X和y。给定从磁盘读取的小批量X,我可以一次定义X和y。
答案 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中得到了相当好的解释。