关于python:在Google Colab上进行深度学习:加载大型图像数据集的时间很长,如何加快该过程?

Deep learnin on Google Colab: loading large image dataset is very long, how to accelerate the process?

我正在使用Keras构建深度学习模型,并加快计算速度,我想使用google colab上可用的GPU。

我的图像文件已经加载到我的Google驱动器上。我有24'000张图像要在4000张图像上进行训练以测试我的模型。

但是,当我将图像加载到数组中时,需要很长时间(将近2小时)
因此,每次我使用google colab笔记本时,这样做不是很方便。

您知道如何加快这一过程吗?这是我当前的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TRAIN_DIR  ="Training_set/X"
TRAIN_DIR_Y ="Training_set/Y"
IMG_SIZE = 128

def parse_img_data(path):
    X_train = []
    index_train = []
    img_ind = []
    for img in tqdm(os.listdir(path)):
        img_ind.append(int(img.split('.')[0])-1)
        path = os.path.join(TRAIN_DIR,img)
        img = cv2.imread(path,cv2.IMREAD_COLOR)
        img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))
        X_train.append(np.array(img))
    return np.array(img_ind), np.array(X_train)

ind_train, X_train = parse_img_data(TRAIN_DIR)

如果您能帮助我,我将不胜感激。

泽维尔


不确定是否可以解决问题。我遇到了同样的问题。
在我运行CNN并工作之前,对特定的数据文件夹使用os.listdir之后。

1
print(os.listdir("./drive/My Drive/Colab Notebooks/dataset"))

from numpy import savez_compressed
trainX, trainy = parse_img_data('/content/drive/My Drive/Training_set/')
savez_compressed('dataset.npz', trainX, train)

您可以第一次加载和保存数据,然后一遍又一遍地使用它

import numpy as np
data=np.load('/content/drive/My Drive/dataset.npz')
trainX,trainy=data['arr_0'],data['arr_1']


我一直在尝试,对于那些好奇的人,我无法使用目录驱动器中带有Google驱动器内部文件夹的流。 collab文件环境无法读取路径,并显示"文件夹不存在"错误。我一直在尝试解决问题并搜索堆栈,类似的问题已在此处与Google合作发布,在这里Google Colab无法访问驱动器内容,没有有效的解决方案,由于某种原因,很多人对提出要求的人持否定态度。

我发现在google colab中读取20k图像的唯一解决方案是上传它们,然后对其进行处理,浪费了两个可悲的时间。这是有道理的,google使用id标识驱动器内部的事物,来自目录的流要求它既要标识数据集,又要标识具有文件夹绝对路径的类,这与google驱动器标识方法不兼容。另一种可能是使用Google云环境,而不是我想并付款。我们免费提供了许多免费软件。这是我的新手对情况的了解,如果有误,请纠正我。

edit1:我能够使用Google collab上目录中的流,google也会用路径识别事物,问题是,如果您使用os.getcwd(),它将无法正常工作,如果您使用它,它将告诉您当前的工作目录是" / content",而实际上是" / content / drive /我的驱动器/foldersinsideyourdrive/...../folderthathasyourcollabnotebook/。如果在traingenerator中更改了路径,则它包括此内容设置,并忽略os,它可以工作,但是,即使使用目录中的流,但仍然存在ram问题,无论如何也无法训练我的cnn,但这可能只是我自己发生的事情。

确保执行

1
2
from google.colab import drive
drive.mount('/content/drive/')

以便笔记本识别路径


您可以尝试挂载Google云端硬盘文件夹(您可以从"示例"菜单中找到代码段),然后将ImageDataGeneratorflow_from_directory()结合使用。在此处查看文档