RandomFlip layer

[source]

RandomFlip class

keras.layers.RandomFlip(
    mode="horizontal_and_vertical", seed=None, data_format=None, **kwargs
)

A preprocessing layer which randomly flips images during training.

This layer will flip the images horizontally and or vertically based on the
`mode` attribute. During inference time, the output will be identical to
input. Call the layer with `training=True` to flip the input.
Input pixel values can be of any range (e.g. `[0., 1.)` or `[0, 255]`) and
of integer or floating point dtype.
By default, the layer will output floats.

**Note:** This layer is safe to use inside a [`tf.data`](https://www.tensorflow.org/api_docs/python/tf/data) or `grain` pipeline
(independently of which backend you're using).

# Input shape
    3D (unbatched) or 4D (batched) tensor with shape:
    `(..., height, width, channels)`, in `"channels_last"` format.

# Output shape
    3D (unbatched) or 4D (batched) tensor with shape:
    `(..., height, width, channels)`, in `"channels_last"` format.

# Arguments
    mode: String indicating which flip mode to use. Can be `"horizontal"`,
        `"vertical"`, or `"horizontal_and_vertical"`. `"horizontal"` is a
        left-right flip and `"vertical"` is a top-bottom flip. Defaults to
        `"horizontal_and_vertical"`
    seed: Integer. Used to create a random seed.
    **kwargs: Base layer keyword arguments, such as
        `name` and `dtype`.

# Example
layer = keras.layers.RandomFlip(bounding_box_format="xyxy")
images = np.random.randint(0, 255, (4, 224, 224, 3), dtype="uint8")

bounding_boxes = {
    "boxes": np.array([
        [[10, 20, 100, 150], [50, 60, 200, 250]],
        [[15, 25, 110, 160], [55, 65, 210, 260]],
        [[20, 30, 120, 170], [60, 70, 220, 270]],
        [[25, 35, 130, 180], [65, 75, 230, 280]],
    ], dtype="float32"),
    "labels": np.array([[0, 1], [1, 2], [2, 3], [0, 3]], dtype="int32")
}

labels = keras.ops.one_hot(
    np.array([0, 1, 2, 3]),
    num_classes=4
)

segmentation_masks = np.random.randint(0, 3, (4, 224, 224, 1), dtype="uint8")

output = layer(
    {
        "images": images,
        "bounding_boxes": bounding_boxes,
        "labels": labels,
        "segmentation_masks": segmentation_masks
    },
    training=True
)

Guides and examples using RandomFlip