处理马萨诸塞州道路数据集中的图像时出现内存错误
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 图像,再加上这些是用于分类的彩色图像,尤其是如果您有很多图像,肯定会让您 运行 内存不足。
这里使用稀疏矩阵不会节省内存,因为数据很密集。您别无选择,只能调整图像大小。它还取决于图像的复杂程度。
调整图像的大小,如果图像有相当的纹理,您可以侥幸逃脱。鉴于您选择的数据集,我们当然可以解决这个问题。
您还用 conv-neural-network 标记了您的 post。这些全尺寸图像对于 CNN 来说绝对是不切实际的,无论是在计算方面还是在参数方面。就像我之前说的,最好在训练(当然还有测试)之前调整图像的大小。
马萨诸塞州道路数据集中的一幅图像的尺寸为 (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 图像,再加上这些是用于分类的彩色图像,尤其是如果您有很多图像,肯定会让您 运行 内存不足。
这里使用稀疏矩阵不会节省内存,因为数据很密集。您别无选择,只能调整图像大小。它还取决于图像的复杂程度。
调整图像的大小,如果图像有相当的纹理,您可以侥幸逃脱。鉴于您选择的数据集,我们当然可以解决这个问题。 您还用 conv-neural-network 标记了您的 post。这些全尺寸图像对于 CNN 来说绝对是不切实际的,无论是在计算方面还是在参数方面。就像我之前说的,最好在训练(当然还有测试)之前调整图像的大小。