在Massachussets Road Dataset中处理图像时出现内存错误

时间:2018-03-21 06:20:16

标签: numpy image-processing machine-learning conv-neural-network scikit-image

Massachussets Road Dataset中的图像尺寸为(1500,1500,3)。其中image_height = image_width = 1500,而3表示 RGB 频道。

我使用 skimage.external.tifffile.imread 来读取图像,然后将它们存储在具有尺寸((number_of_images),1500,1500的 numpy 数组中, 3),这给了我一个内存错误

对于解决方案,我查看了 PIL 模块,该模块有助于将图像重塑为更小的尺寸,但我想知道这是否会导致我丢失一些关键信息。

错误消息

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-25-4133a180c798> in <module>()
     200 if __name__ == '__main__':
     201 
-->  202     create_train_data()
     203 
     204     create_test_data()

<ipython-input-25-4133a180c798> in create_train_data()
     41 
     42 
---> 43     imgs = np.ndarray((total, image_rows, image_cols,3), dtype=np.uint8)
     44 
     45 

MemoryError:

1 个答案:

答案 0 :(得分:0)

1500 x 1500图像,由于这些是用于分类的彩色图像,尤其是如果你有很多图像,这肯定会让你的内存耗尽。

这里没有使用稀疏矩阵保存内存,因为数据很密集。您无法选择,只能调整图像大小。它还取决于图像的复杂程度。

如果图像纹理相当,则可以调整图像的大小。鉴于您所选择的数据集,我们当然可以逃脱这一点。  您还使用标记了自己的帖子。这些全尺寸图像对于CNN,计算方面和参数方面肯定是不切实际的。就像我之前所说的那样,最好在训练之前(当然还有测试)调整图像大小。