我应该在PIL图像上使用变换,还是在PyTorch张量上使用变换



我的输入是PIL图像。假设我有以下转换组成:

transforms.Compose([
transforms.RandomResizedCrop(size=224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()])

由于PyTorch中的大多数变换都可以在PIL图像和张量上工作,我想知道应该按哪个顺序使用它们。我应该先在PIL图像上使用所有可能使用的变换,然后变换到张量,还是应该先变换到张量然后在张量上应用其他变换?一个比另一个更有效吗?

更改顺序通常没有真正的优势。但是,将ToTensor移出变换链也有好处。具体来说,您不能对PIL映像进行JIT转换,这可能会对优化产生影响。因此,最好在数据加载代码中将PIL图像转换为张量,然后根据需要进行转换。我推荐您参考文档以了解更多有关此方面的信息。

在您提到的转换的情况下,我认为顺序无关紧要。但对于一个完整的工作流程来说,顺序对理解有很大帮助。

例如,在给定的代码中,首先裁剪图像,然后使用随机水平翻转进行数据增强。在完成这两个操作后,将其转换为PyTorch张量,这是有意义的。

最新更新