ยป Keras API reference / KerasCV / Layers / Preprocessing layers / RandAugment layer

RandAugment layer

[source]

RandAugment class

keras_cv.layers.RandAugment(
    value_range,
    augmentations_per_image=3,
    magnitude=0.5,
    magnitude_stddev=0.15,
    rate=0.9090909090909091,
    geometric=True,
    seed=None,
    **kwargs
)

RandAugment performs the Rand Augment operation on input images.

This layer can be thought of as an all in one image augmentation layer. The policy implemented by this layer has been benchmarked extensively and is effective on a wide variety of datasets.

The policy operates as follows:

For each augmentation in the range [0, augmentations_per_image], the policy selects a random operation from a list of operations. It then samples a random number and if that number is less than rate applies it to the given image.

References

Arguments

  • value_range: the range of values the incoming images will have. Represented as a two number tuple written [low, high]. This is typically either [0, 1] or [0, 255] depending on how your preprocessing pipeline is setup.
  • augmentations_per_image: the number of layers to use in the rand augment policy. Defaults to 3.
  • magnitude: magnitude is the mean of the normal distribution used to sample the magnitude used for each data augmentation. magnitude should be a float in the range [0, 1]. A magnitude of 0 indicates that the augmentations are as weak as possible (not recommended), while a value of 1.0 implies use of the strongest possible augmentation. All magnitudes are clipped to the range [0, 1] after sampling. Defaults to 0.5.
  • magnitude_stddev: the standard deviation to use when drawing values for the perturbations. Keep in mind magnitude will still be clipped to the range [0, 1] after samples are drawn from the normal distribution. Defaults to 0.15.
  • rate: the rate at which to apply each augmentation. This parameter is applied on a per-distortion layer, per image. Should be in the range [0, 1]. To reproduce the original RandAugment paper results, set this to 10/11. The original RandAugment paper includes an Identity transform. By setting the rate to 10/11 in our implementation, the behavior is identical to sampling an Identity augmentation 10/11th of the time. Defaults to 1.0.
  • geometric: whether or not to include geometric augmentations. This should be set to False when performing object detection. Defaults to True.

Usage:

(x_test, y_test), _ = tf.keras.datasets.cifar10.load_data()
rand_augment = keras_cv.layers.RandAugment(
    value_range=(0, 255), augmentations_per_image=3, magnitude=0.5
)
x_test = rand_augment(x_test)