RandomAugmentationPipeline
classkeras_cv.layers.RandomAugmentationPipeline(
layers, augmentations_per_image, rate=1.0, auto_vectorize=False, seed=None, **kwargs
)
RandomAugmentationPipeline constructs a pipeline based on provided arguments.
The implemented policy does the following: for each input provided in
call
(), the policy first inputs a random number, if the number is < rate,
the policy then selects a random layer from the provided list of layers
.
It then calls the layer()
on the inputs. This is done
augmentations_per_image
times.
This layer can be used to create custom policies resembling RandAugment
or
AutoAugment
.
Example
# construct a list of layers
layers = keras_cv.layers.RandAugment.get_standard_policy(
value_range=(0, 255), magnitude=0.75, magnitude_stddev=0.3
)
layers = layers[:4] # slice out some layers you don't want for whatever
reason
layers = layers + [keras_cv.layers.GridMask()]
# create the pipeline.
pipeline = keras_cv.layers.RandomAugmentationPipeline(
layers=layers, augmentations_per_image=3
)
augmented_images = pipeline(images)
Arguments
keras.Layers
. These are randomly inputs during
augmentation to augment the inputs passed in call()
. The layers
passed should subclass BaseImageAugmentationLayer
. Passing
layers=[]
would result in a no-op.call()
method.augmentations_per_image=3
and
rate=0.5
, the odds an image will receive no augmentations is
0.5^3, or 0.50.50.5.tf.vectorized_map
or tf.map_fn
to
apply the augmentations. This offers a significant performance
boost, but can only be used if all the layers provided to the
layers
argument support auto vectorization.