将给定的 PIL 图像裁剪到随机尺寸和长宽比,并使用随机插值。
在这篇文档中,我们将介绍 timm
中的 RandomResizedCropAndInterpolation
数据增强。除非在训练模型时传递了 --no-aug
标志,否则此增强默认应用于 timm
中的输入数据。在这种情况下,除了 Resize
和 CenterCrop
之外,不会应用任何其他增强。
由于 RandomResizedCropAndInterpolation
增强默认应用,我们不会深入研究如何将其应用于训练数据的示例。任何训练脚本都会应用此技术,例如下面的脚本
python train.py ../imagenette2-320
要不对输入数据应用任何数据增强,可以像这样传递 --no-aug
标志
python train.py ../imagenette2-320 --no-aug
在本节中,我们将介绍如何利用 timm
库将此数据增强技术应用于我们的输入数据。让我们来看一个示例。
from timm.data.transforms import RandomResizedCropAndInterpolation
from PIL import Image
from matplotlib import pyplot as plt
tfm = RandomResizedCropAndInterpolation(size=224)
X = Image.open("../../imagenette2-320/train/n01440764/ILSVRC2012_val_00000293.JPEG")
plt.imshow(X)
像往常一样,我们创建一个输入图像 X
,它是本文档其他地方常用的“丁鱥”(tench) 图像。
注意:
RandomResizedCropAndInterpolation
期望输入是 PIL.Image
的实例,而不是 torch.tensor
。现在让我们多次应用变换并可视化结果。
for i in range(6):
plt.subplot(2, 3, i+1)
plt.imshow(tfm(X))
如下所示,我们可以看到变换正在工作,它正在随机裁剪/调整输入图像的大小,并且还随机改变图像的长宽比。