Python 如何从文件夹中创建图像数据集

Python 如何从文件夹中创建图像数据集,python,tensorflow,machine-learning,dataset,tensorflow-datasets,Python,Tensorflow,Machine Learning,Dataset,Tensorflow Datasets,我有一个文件夹中的35000多张图像的数据集。如何在python中将这些图像转换成一个数组,其中包含训练图像,我可以将其输入到张量流深度学习模型中?方法1(简单但不推荐) 使用numpy、PIL或opencv加载数据,并使用占位符将其提供给网络。这意味着您的数据足够小,可以放入内存中。示例代码如下所示 import glob import cv2 import numpy as np import tensorflow as tf data = [] for i in glob.glob('p

我有一个文件夹中的35000多张图像的数据集。如何在python中将这些图像转换成一个数组,其中包含
训练图像
,我可以将其输入到张量流深度学习模型中?

方法1(简单但不推荐) 使用numpy、PIL或opencv加载数据,并使用占位符将其提供给网络。这意味着您的数据足够小,可以放入内存中。示例代码如下所示

import glob
import cv2
import numpy as np
import tensorflow as tf

data = []
for i in glob.glob('path/to/my/data/**/*.png', recursive=True):
    data.append(cv2.imread(i))

data = np.stack(data) # array of shape [num_images, height, width, channel]

def get_batch(data, batch_size):
    data_size = data.shape[0]
    indexes = list(range(data_size))
    np.random.shuffle(indexes)
    for i in range(0, data_size, batch_size):
        yield data[indexes[i:i+batch_size]]

images = tf.placeholder(tf.float32, [None, height, width, channel])
my_net = build_network(images)

...

for epoch in range(max_epochs):
    for batch_images in get_batch(data, batch_size):
        sess.run(train_op, feed_dict={images: batch_images})
方法2(更复杂,但规模更好)
您应该从数据中创建TF记录,并使用TensorFlow中的队列机制和数据集API,而不是占位符。

要从数据集文件夹中获取所有文件/图像名称,请遵循以下步骤

import os

# train_images list of name of files or images in data set folder 
train_images = list()

image_path = ' path to the data set (image) folder '
for image in os.walk(image_path):
    train_images.append(image[2]) 
# os.walk('path') traverse recursively so used index 2 to give file name in same folder only
trian_images
是必需的数组,您可以将其传递/馈送给tensorflow


按照@Olivier Moindrot的解决方案,将train_图像传递到文件名,并根据您的需要标记数据。

嗨,我尝试了方法1,但我认为问题在于,我将其放在外部驱动器上,因为我使用了:
data_path='/Volumes/G-drive\mobile\USB-C/train'
并得到了一个
oserrno 2]没有这样的文件或目录:'/Volumes/G-DRIVE\\mobile\\USB-C/train'
我该如何解决这个问题?谢谢尝试删除转义字符“\”。您好,请澄清一下好吗?我是新手,所以非常感谢。谢谢通常,当路径中有空格时,如
my data
,需要使用\来转义空格。尝试删除这些多余的\并使用
data\u path='/Volumes/G-DRIVE mobile USB-C/train
.Works!data_path='/Volumes/G-DRIVE mobile USB-C/train无需使用评论空间为您自己的答案添加信息-请编辑并更新您的答案@谢谢你的即兴创作。你试过使用PIL图书馆吗?