python - 使用 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 上如此缓慢,我怎样才能让它更快?
提前致谢。
解决方案
这不是 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 时的一些错误)。查看更多关于这个
推荐阅读
- android - 如何使用tinymce删除Android中的灰色覆盖
- c# - 访问 C# 中的每个类元素
- java - 尝试在“R 中的 id”中添加符号时出现 IDE 错误
- php - 如何使特色图像/缩略图具有响应性?
- python - 如何删除数据框中间隔之间的值
- spring - 如何从 Mono 平面图中获取 Flux?
- java - JAVA:如何以低内存占用写入 .xlsx
- ubuntu - CMake 在简单的测试程序上失败
- reactjs - TypeError:尝试在 Firefox 中的 POST 期间获取资源时出现 NetworkError
- ffmpeg - FFMPEG 将音轨合并为一个并使用 NVENC 进行编码