In this piece of documentation, we will be looking at the RandomResizedCropAndInterpolation data augmentation in timm. This augmentation get's applied in timm to the input data by default unless the --no-aug flag has been passed to train the model, in which case no augmentations except Resize and CenterCrop get applied.
Since this RandomResizedCropAndInterpolation augmentation get's applied by default, we don't look into an example on how we could apply it to the training data. Any training script applies this technique such as the one below:
python train.py ../imagenette2-320
To not apply any data augmentation to the input data, one could pass in the --no-aug flag like so:
python train.py ../imagenette2-320 --no-aug
In this section we will be looking at how we could leverage the timm library to apply this data augmentation technique to our input data. Let's see an example.
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)
As usual, we create an input image X which is the usual image of a "tench" as used everywhere else in this documentation.
RandomResizedCropAndInterpolation expects the input to be an instance of PIL.Image and not torch.tensor. Let's now apply the transform multiple times and visualize the results.
for i in range(6):
plt.subplot(2, 3, i+1)
plt.imshow(tfm(X))
As can be seen below, we can see the transform is working and it is randomly cropping/resizing the input image and also randomly changing the aspect ratio of the image.