在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. 介绍一个单独的预处理步骤,该步骤将imread使用所有必需的规范化步骤将读取的JPEG图像转换为Numpy数据结构。将Numpy对象存储到磁盘,以便您的主要培训过程只需使用即可读取它们numpy.fromfile()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章