如何加快 ImageNet 的“ImageFolder”速度

Kev*_*Sun 5 image-processing computer-vision imagenet pytorch torchvision

我在一所大学,所有的文件系统都在远程系统中,无论我在哪里使用我的帐户登录,我都可以访问我的主目录。即使我通过 SSH 命令登录 GPU 服务器。这是我使用GPU服务器读取数据的情况。

目前,我使用 PyTorch 在 ImageNet 上从头开始训练 ResNet,我的代码仅使用同一台计算机中的所有 GPU,我发现“torchvision.datasets.ImageFolder”将花费近两个小时。

您能否提供一些如何加快“torchvision.datasets.ImageFolder”速度的经验?非常感谢。

Sha*_*hai 1

为什么需要这么长时间?
设置ImageFolder可能需要很长时间,尤其是当图像存储在速度较慢的远程磁盘上时。出现此延迟的原因是__init__数据集的函数会遍历图像文件夹中的所有文件并检查该文件是否是图像文件。对于 ImageNet,这可能需要相当长的时间,因为有超过 100 万个文件需要检查。

你能做什么?
- 正如Kevin Sun已经指出的那样,将数据集复制到本地(可能更快)存储可以显着加快速度。
- 或者,您可以创建一个修改后的数据集类,它不会读取所有文件,而是依赖于文件的缓存列表 - 您提前准备一次并用于所有运行的缓存列表。