我有一个大约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)
这有一些问题,
速度非常慢。大约30分钟只将大约1000张图像导入到python中,随着图像数量的增加,它会变慢。
占用大量内存。导入大约2000个图像需要大约16 GB的RAM(我的机器只有16GB,所以我最终使用交换内存,这使得它更慢,我想)。
图像尺寸均为640×480。
我做错了什么或这是正常的吗?是否有更好/更快的方法来导入图像?
谢谢。
答案 0 :(得分:1)
以下是此类任务的一些一般性建议:
imread
读取的JPEG图像转换为Numpy数据结构,并执行所有必需的规范化步骤。将Numpy对象存储到磁盘,以便主要培训过程只需使用numpy.fromfile()
。