从 Google Drive 读取图像时,Google Colab 太慢了

Posted

技术标签:

【中文标题】从 Google Drive 读取图像时,Google Colab 太慢了【英文标题】:Google Colab is so slow while reading images from Google Drive 【发布时间】:2020-03-25 23:59:18 【问题描述】:

我有自己的深度学习项目数据集。我将其上传到 Google Drive 并将其链接到 Colab 页面。但是 Colab 在一秒钟内只能读取 2-3 张图像,而我的计算机可以读取数十张。 (我使用 imread 来读取图像。)

keras的模型编译过程没有速度问题,但只有从Google Drive读取图像。有人知道解决方案吗?有人也遇到过这个问题,但仍未解决:Google Colab very slow reading data (images) from Google Drive(我知道这是链接中问题的重复,但我重新发布了它,因为它仍未解决。我希望这不是违反堆栈溢出规则。)

编辑:我用于读取图像的代码片段:

def getDataset(path, classes, pixel=32, rate=0.8):
    X = []
    Y = []

    i = 0
    # getting images:
    for root, _, files in os.walk(path):
        for file in files:
            imagePath = os.path.join(root, file)
            className = os.path.basename(root)

            try:
                image = Image.open(imagePath)
                image = np.asarray(image)
                image = np.array(Image.fromarray(image.astype('uint8')).resize((pixel, pixel)))
                image = image if len(image.shape) == 3 else color.gray2rgb(image)
                X.append(image)
                Y.append(classes[className])
            except:
                print(file, "could not be opened")

    X = np.asarray(X, dtype=np.float32)
    Y = np.asarray(Y, dtype=np.int16).reshape(1, -1)

    return shuffleDataset(X, Y, rate)

【问题讨论】:

你能提供你用来加载数据的代码吗? @Solvalou 我将它添加到问题描述中。 【参考方案1】:

将 zip 文件上传到驱动器。转移到 colab 后解压缩它们。文件复制开销很麻烦,因此您不应该复制大量文件,而是复制单个 zip 并解压缩。

【讨论】:

【参考方案2】:

我建议您将文件上传到 GitHub,然后将其克隆到 Colab。它可以将我的训练时间从 1 小时缩短到 3 分钟。

【讨论】:

【参考方案3】:

我想就解压缩文件的实际样子提供更详细的答案。这是加快数据读取速度的最佳方式,因为将文件解压缩到 VM 磁盘比从 Drive 中单独读取每个文件要快得多。

假设您在本地计算机的文件夹 Data 中有所需的图像或数据。压缩数据以获取 Data.zip 并将其上传到云端硬盘。

现在,安装您的驱动器并运行以下命令:

!unzip "/content/drive/My Drive/path/to/Data.Zip" -d "/content"

只需修改所有图片路径以通过/content/Data,读取图片会快得多。

【讨论】:

以上是关于从 Google Drive 读取图像时,Google Colab 太慢了的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何从 google drive public 读取 CSV 文件?

从 Google Drive 将图像添加到 GitHub Readme.md

从 google drive api 获取图像 URL 而不是内容

使用 Flutter 将图像上传到通用 Google Drive 帐户

使用 REST api 从 Google Drive 下载图片

来自 Google Drive Android Studio API 的图像被旋转