Automatic Augmentations¶
Automatic augmentations are family of probabilistic augmentation policies. When running automatic augmentation policy, each sample is processed with augmentations (operations that transform the image) selected randomly according to some probability distribution defined by the policy. DALI implements automatic augmentations with the usage of conditional execution.
The nvidia.dali.auto_aug
module contains ready to use policies for the popular automatic
augmentations - AutoAugment, RandAugment, and TrivialAugment - that can be
directly used within the processing pipeline definition. It provides a set of utilities to customize
the existing policies and allows to define new ones.
To use one of the policies define the pipeline using the
@pipeline_def
decorator and set enable_conditionals
to True
. Next, call the automatic augmentation function inside the pipeline. This example
applies the AutoAugment policy tuned for ImageNet:
from nvidia.dali import pipeline_def
from nvidia.dali.auto_aug import auto_augment
@pipeline_def(enable_conditionals=True)
def training_pipe(data_dir, image_size):
jpegs, labels = fn.readers.file(file_root=data_dir, ...)
shapes = fn.peek_image_shape(jpegs)
images = fn.decoders.image(jpegs, device="mixed", output_type=types.RGB)
# Applies the AutoAugment policy for ImageNet
augmented_images = auto_augment.auto_augment_image_net(images, shape=shapes)
resized_images = fn.resize(augmented_images, size=[image_size, image_size])
return resized_images, labels
RandAugment and TrivialAugment policies can be applied in similar fashion.
Note
To see a full example of using automatic augmentations for training, see the EfficientNet for PyTorch with DALI and AutoAugment example.
Automatic Augmentation Library Structure¶
The automatic augmentation library is built around several concepts:
augmentation - the image processing operation. DALI provides a list of common augmentations that are used in AutoAugment, RandAugment, and TrivialAugment, as well as API for customization of those operations.
@augmentation
decorator can be used to implement new augmentations.policy - a collection of augmentations and parameters that describe how to apply them to the input images - both the probability of application as well as the “strength” of the operation. DALI provides predefined policies as well as a way to define new ones - check the documentation for specific automatic augmentation scheme.
apply operation - a function that invokes a specified policy on a batch of images within the DALI pipeline.
To learn more about building or applying policies check the documentation for specific automatic augmentation scheme: AutoAugment, RandAugment, or TrivialAugment.