繁体   English   中英

在Python中导入图像的有效方法

[英]Efficient way of importing images in Python

我有一个大约22,000张图像的数据集(整个数据大约900 Mb),我想将其导入Python以训练CNN。

我使用以下代码将其导入并将其全部保存在名为X的数组中:

import scipy.misc as sm

for i in range (start, end):

    imageLink = "./dataSet/" + str(dataSet[i, 0]) + "/" + str(dataSet[i, 1])
    image = sm.imread(imageLink)
    X = np.append(X, image, axis = 0)

这有一些问题,

  1. 非常慢。 大约30分钟,仅将大约1000张图像导入python,随着图像数量的增加,速度会变慢。

  2. 它占用大量RAM。 导入大约2000张图像大约需要16 GB的RAM(我的机器只有16GB,所以我最终使用了交换内存,这使它的运行速度变慢了)。

图像尺寸均为640×480。

我是在做错事还是正常现象? 有没有更好/更快的导入图像的方法?

谢谢。

以下是针对此类任务的一些一般建议:

  1. 如果还没有,请升级到快速SSD。 无论处理做什么,快速的硬件都是至关重要的。
  2. 不要将整个数据集加载到内存中。 建立一个批处理机制,一次加载例如100个文件,对其进行处理,并为下一个批处理释放内存。
  3. 在处理第一个批处理时,使用第二个线程来构建下一个批处理。
  4. 引入转换JPEG图像读取通过单独的预处理步骤imread到numpy的数据结构与所有需要正常化步骤。 将Numpy对象存储到磁盘,以便您的主要培训过程只需使用numpy.fromfile()即可读取它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM