处理马萨诸塞州道路数据集中的图像时出现内存错误

Memory Error while working with images in Massachussets Road Dataset

马萨诸塞州道路数据集中的一幅图像的尺寸为 (1500,1500,3)。其中 image_height = image_width = 1500 ,3 用于 RGB 通道。

我使用 skimage.external.tifffile.imread 读取图像,然后将它们存储在 numpy 数组中,数组的维度为 ((number_of_images),1500,1500,3) ,这给了我一个 Memory Error.

对于解决方案,我查看了 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:

1500 x 1500 图像,再加上这些是用于分类的彩色图像,尤其是如果您有很多图像,肯定会让您 运行 内存不足。

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

调整图像的大小,如果图像有相当的纹理,您可以侥幸逃脱。鉴于您选择的数据集,我们当然可以解决这个问题。 您还用 标记了您的 post。这些全尺寸图像对于 CNN 来说绝对是不切实际的,无论是在计算方面还是在参数方面。就像我之前说的,最好在训练(当然还有测试)之前调整图像的大小。