首页 > 解决方案 > 使用 CoLab 在 Google Drive 上的 OpenCV imread 和 imwrite 太慢

问题描述

我正在使用 Google CoLab 并运行一段代码,该代码会迭代 170K-190K 图像,使用函数从gdrive/My Drive/folder1/img.jpg之类的路径读取它们,然后使用函数cv2.imread调整它们的大小cv2.resize,然后将它们写入像gdrive/My Drive/folder2/img.jpg这样的路径,使用cv2.imwrite.

但这太慢了。我曾经使用 Jupyter Notebook 在我的设备上运行,在 Linux Ubuntu LTS18.04 操作系统上运行,并且迭代速度很快。现在,每次迭代需要近 30 秒,这将估计代码将需要近 65 天?!

是什么导致它在 CoLab 上如此缓慢,我怎样才能让它更快?

提前致谢。

标签: pythonimageopencvgoogle-colaboratorydrive

解决方案


这不是 OpenCV 的问题,而是 Google Drive 的问题。即使您在 Google Colaboratory 中执行,从 Google Drive 访问文件也很慢。

一种更好的方法是将文件复制到 Colab 存储中,然后您将获得更快的性能,这将基于您使用的运行时(CPU/GPU/TPU)。

要复制文件,您可以使用 shutil 库(Shutil 文档):

import shutil

# To copy files
shutil.copyfile('source_file_location', 'destination_file_location')

# To copy multiple files of folder with some conditions
import os
for file in os.listdir('folder_path'):
    if file.endswith('.jpg'):
        shutil.copyfile('folder_path' + file, 'desination_folder_path' + file)

# To copy folders
shutil.copytree('source_path', 'destination_path')  

由于您在 Google Drive 上的一个文件夹中有许多文件,因此访问所有文件可能会失败(有时)。将文件分批保存在多个文件夹中是一个很好的做法(这将消除通过 Colab 使用 Google Drive 时的一些错误)。查看更多关于这个


推荐阅读