【发布时间】:2021-08-31 00:55:33
【问题描述】:
我在 Google Colab 的驱动器中有一个名为 dir 的列表,其中包含 18900 个 RGB 图像(3 个通道)的目录,尺寸为 64x64 像素。我使用 PIL 库中的 Image 模块打开了第一张图片:img = Image.open(dir[0])。我将图像转换为带有 numpy 库的数组:array = np.asarray(img)。现在,我想用代表我的图像的数组制作一个列表。因此,我使用循环制作了以下脚本以打开所有图像:
img = [None]* len(dir)
for i in range(len(dir)):
img[i] = Image.open(dir[i])
但它会持续运行大约 20 分钟,我没有结果。 有没有最快的方法可以从包含我的图像的 18900 个目录的列表中创建一个包含 18900 个数组的列表?
【问题讨论】:
-
Google Colab 在从云端硬盘加载图像时特别长,因此即使您的图像非常小(例如 256x256 像素),Colab 花费这么多时间也是正常的。只要您继续使用云端硬盘,恐怕没有完美的答案,但我听说过其他可能会提高全局运行时间的解决方案(例如 GCP)。
-
我的图像是 RGB(3 通道),尺寸为 64x64 像素。
-
这并不能解决问题:即使您的图像很轻,与您在本地计算机上可以实现的相比,Colab 仍然会花费大量时间来加载它们
-
不知道 Colab ,但多线程通常用于这种情况,例如。
with concurrent.futures.ThreadPoolExecutor(max_workers=32) as executor: executor.map(read_image, range(len(dir)))和def read_image(i): img[i] = numpy.asarray(Image.open(dir[i]))。
标签: python numpy python-imaging-library google-colaboratory