Python导入.jpeg文件的文件夹

时间:2018-02-03 01:21:31

标签: python tensorflow machine-learning jpeg

我试图使用tensorflow在python中学习图像分类,我不确定如何在我的图像文件夹中读取。我的训练集超过10,000 .jpeg图像。我一直在使用MNIST教程和其他人,但是我没有看到有关导入整个文件夹的任何信息,而没有按照每个图像路径创建所有图像的数组(这种尺寸不可能)。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

使用数据集对象(在TF 1.4 +中添加)。

要开始使用,您应该阅读有关新输入管道的精心编写的开发人员指南。

https://www.tensorflow.org/programmers_guide/datasets

特别是,您希望使用list_files生成所有文件名的数据集:

ds = tf.data.Dataset.list_files('*.jpg')

现在您可以使用这些文件加载​​图片:

ds = ds.map(map_func=load_image)

load_image函数应接受张量(文件名)并输出张量(张量形式的图像)

这样的事情:

def load_image(filename_tensor):
  return tf.image.decode_jpeg(filename_tensor)

该功能可能需要稍微扩展,您可能希望在其中添加数据扩充,因此请考虑您需要的核心骨架。

当您完成此操作后,您将创建一个读取数据的迭代器。绝对阅读上面引用的程序员指南。页面上的最后一个示例几乎就是您想要的。它是一个很好的数据输入管道,以及Tensorflow未来的发展方向。

请注意,使用数据集管道意味着您不需要通过sess.run feed_dict方法将图像传递到tenorflow。

答案 1 :(得分:1)

import glob
import numpy as np
globs = glob.glob('./test/*')

import PIL.Image as img

def img_array(path):
    image = img.open(path)
    tmp = np.array(image)
    image.close()
    return tmp

np.array(list(map(img_array, globs)))

用枕头打开它并将其转换为numpy数组并将所有数组映射到一个列表中。

out:

array([[[226, 245, 252],
        [227, 246, 253],
        [228, 247, 254],
        ...,