如何防止 RAM 填满图像分类 (DL)

Posted

技术标签:

【中文标题】如何防止 RAM 填满图像分类 (DL)【英文标题】:How to prevent RAM from filling up in image Classification (DL) 【发布时间】:2021-11-16 04:17:12 【问题描述】:

我是 ML 新手,遇到了问题。 我有 10000 张图片 (300,300) 像素。我想将它们放入 DL 模型中进行分类。但我的问题是当我对图像进行规范化(将每个图像从 uint8 转换为浮动并除以 255)时,我的 Ram 崩溃了!我的意思是,我的 Google Colab RAM 已满。

是否有解决此问题的方法或技术? 有没有办法(例如)我可以将我的数据分成 3 部分(每部分 3300 张图像)然后标准化并将这部分提供给模型进行单独训练? (在第 1 部分之后,清空 RAM 和第 2 部分 Normalize+trainin)

谢谢。

这是我的代码:

data_train = np.asarray(data_train)
data_train = data_train.astype('float16') #data_train.shape: (10000, 300, 300, 3)
data_valid = np.asarray(data_valid)
data_valid = data_valid.astype('float16')

data_train/=255.0  #This part fills my memory !! 
data_valid/=255.0  #This part fills my memory !!

model = #confing the model ...
model.compile(loss=... ,optimizer=...,metrics=...)
datagen = ImageDataGenerator(...)
datagen.fit(data_train)
history = model.fit(datagen.flow(data_train,labels_train,batch_size=...),
                    steps_per_epoch=...,
                    epochs=...,
                    validation_data=(data_valid,labels_valid))

【问题讨论】:

【参考方案1】:

通常,我们不会一次加载所有数据(在您的情况下为 10,000 张图像)。您需要一次加载到内存的最小图像数量是您的批量大小。 对于您的第二个问题 - 是的,这是处理大型数据集的公认方式。首先,您必须只加载batch_size 数量的图像进行归一化并提供给分类器。看看this 是否有助于您的实施。

【讨论】:

以上是关于如何防止 RAM 填满图像分类 (DL)的主要内容,如果未能解决你的问题,请参考以下文章

AlexNet详解

AI遮天传 DL-深度学习在计算机视觉中的应用

使用 dl4j 图像到图像 DataSetIterator

计算机视觉算法——图像分类网络总结

DL学习笔记-CNN 相关知识

CV开山之作:《AlexNet》深度学习图像分类经典论文总结学习笔记(原文+总结)