将图像文件夹转换为numpy数组会消耗整个RAM

时间:2019-08-08 14:56:50

标签: python numpy dataset

我正在尝试将celebA数据集(https://www.kaggle.com/jessicali9530/celeba-dataset)图像文件夹转换为numpy数组,以供以后转换为.pkl文件(以便将数据用作mnist或cifar)。

我愿意找到一种更好的转换方法,因为这种方法绝对消耗了整个RAM。

from PIL import Image
import pickle
from glob import glob
import numpy as np

TARGET_IMAGES = "img_align_celeba/*.jpg"

def generate_dataset(glob_files):
   dataset = []
   for _, file_name in enumerate(sorted(glob(glob_files))):
       img = Image.open(file_name)
       pixels = list(img.getdata())
       dataset.append(pixels)
   return np.array(dataset)

celebAdata = generate_dataset(TARGET_IMAGES)

我很想知道mnist作者是如何做到这一点的,但是任何可行的方法都是受欢迎的。

1 个答案:

答案 0 :(得分:0)

您可以在Keras中即时转换任何类型的数据,并在训练期间一次将其加载到内存中。 请参见documentation,搜索“使用.flow_from_directory(directory)的示例”。