【发布时间】:2018-11-06 13:15:04
【问题描述】:
好的,所以代码是这样的 X1 是加载的高光谱图像,尺寸为 (512x512x91) 我要做的基本上是裁剪 64x64x91 大小的矩阵,变化的步幅为 2。这给了我总共 49952 个图像,每个 64x64x91 大小但是当我运行 for 循环时,我得到了内存错误。 我的系统有 8 GB 内存。
data_images_0=np.zeros((49952,256,256,91))
k=0
for i in range(0,512-64,2):
r=64
print(k)
for j in range (0,512-64,2):
#print(k)
data_images_0[k,:,:,:]=X1[i:i+r,j:j+r,:]
k=k+1
我有一张作为 Mat 文件加载的高光谱图像,尺寸为 (512x512x91)。我想使用这个图像的块作为我的 CNN 的输入,例如使用 64x64x91 的裁剪。问题是,一旦我从原始图像中创建了作物,我就无法加载数据,因为一次加载所有作物会给我带来内存错误。 我可以做些什么来分批加载我裁剪的数据,这样我就不会收到这样的内存错误。 我应该将我的数据转换成其他格式还是以其他方式处理问题?
【问题讨论】:
-
您的图像是简单地存储为矩阵还是某种图像格式?
-
欢迎来到 SO。请提供一个最小、完整和可验证的示例。 向我们展示您最近尝试的代码以及您遇到的问题。并解释为什么结果不是你所期望的。编辑您的问题以包含代码,请不要在评论中添加它,因为它可能不可读。 stackoverflow.com/help/mcve
-
是的,它存储为矩阵......基本上 512x512 是空间维度,91 是通道或深度......它只是每个像素值的矩阵
-
Matlab 最新格式的 .mat 文件 (v7.3) 是压缩的,所以没有太多选择,只能全部解压。此外,数据以列的主要顺序存储,因此 64x64x91 数组的样本将遍布整个 512x512x91 体积。现在,高光谱图像只包含大约 2250 万像素:它应该很容易放入内存中。
-
请包含如何生成作物的示例代码。这很重要,因为它可以解释为什么内存不足,展示如何存储作物,并提供如何将它们放入文件以便于访问的想法。
标签: python matlab numpy out-of-memory image-preprocessing