如何存储和加载巨大的图像数据集?

时间:2017-04-18 13:56:45

标签: python image numpy pickle conv-neural-network

我有一个要存储的大图像数据集。我有300,000张图片。每个图像都是28800像素的矢量,这意味着我有一个(300000, 28800)

的矩阵

我将其存储如下

img_arr = np.stack(images, axis=0)

np.savetxt('pixels_dataset_large.csv',img_arr,delimiter=",")

然而,加载它需要很长时间,有时会出现内存错误:

data_pixels=np.genfromtxt("pixels_dataset_large.csv", delimiter=',')

有没有其他方法可以最佳地存储和加载它?

1 个答案:

答案 0 :(得分:1)

如果您将300,000 x 28,000个数据保存到csv,那么假设浮点表示您正在查看输出文件大小只有几TB,具体取决于输出的精度。即使你周围有一个太字节的磁盘空间,CSV在这种规模上也是非​​常低效的。

在这种情况下,我建议使用一些二进制存储方案(例如hdf5)。您可以查看xarray软件包:它非常适合处理此大小的密集数组数据,它具有与NumPy非常相似的API,甚至可以利用{ {3}}用于透明支持并行和/或内存映射计算。

相关问题