更加节省内存和速度的方式来读取和保存图像?

问题描述 投票:0回答:1

我正在训练一个神经网络。因此,我用下面的代码读取了182335张图片(png-文件)。

folders = glob.glob(r'path\to\images\*')
imagenames_list = []
for folder in folders:
    for f in glob.glob(folder+'/*.png'):
        imagenames_list.append(f)
read_images = []        

for image in imagenames_list:
    read_images.append(cv2.imread(image))

在对数据进行一些预处理后,我创建了一个pandas数据框架,并将其保存为pickle-file。

df.to_pickle(r'data\data_as_pddataframe.pkl')

df.head()

headers

由于图片数量巨大,我有一个相对较大的pickle文件(3GB)。正因为如此,它在这个文件中的读取持续了一些时间,也需要大量的内存。此外,当我要在Google Colab中训练网络时,由于数据量太大,Colab会崩溃。

因此,有没有一种更有效的方法1.读取数据,2.存储数据框架?

谢谢!我正在训练一个神经网络。

python pandas pickle
1个回答
1
投票

我会这样做。

  1. 确保你的模型的批处理量足够小 以保证输入数据和模型参数能在内存中找到合适的位置。
  2. 将图像作为图像保存在磁盘上。将非图像数据保存为Parquet、CSV或其他格式(不要用Pickle)。把图像文件名放在表格里。
  3. 把数据保存在磁盘上,不要全部加载到内存中。
  4. 将你的非图像数据作为常规数据框加载。只有当你的SGD批处理需要时,才从磁盘加载图像。
© www.soinside.com 2019 - 2024. All rights reserved.