使用图像变换会显着减慢训练速度吗?

Does using an image transform significantly slow down training?

我看到许多深度学习研究人员经常使用图像变换。它们似乎被视为免费 GPU 或 CPU 个周期。

示例:

transformations = transforms.Compose([
        transforms.Resize(255),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    ])

train_set = datasets.ImageFolder(data_dir + "/train", transform = transformations)

在这种特定情况下,预先处理图像并将其保存以备将来以其他格式使用不是更好吗?我有时会看到这种情况,但很少见。

或者我错了,GPU 上的转换器非常快,不值得额外的代码或麻烦?

这实际上取决于您如何设置数据加载器。一般在CPU上进行transform,然后将transform后的数据移到GPU。 Pytorch 数据加载器有一个 'prefetch_factor' 参数,允许它们与 GPU 计算模型并行地预先计算您的数据(使用转换)。话虽这么说,像你在这里这样的固定转换,预先计算整个数据集并在计算之前保存它也可能是一个有效的策略。