View source on GitHub
|
A preprocessing layer which randomly adjusts contrast during training.
Inherits From: Layer, Operation
tf.keras.layers.RandomContrast(
factor, value_range=(0, 255), seed=None, **kwargs
)
This layer will randomly adjust the contrast of an image or images
by a random factor. Contrast is adjusted independently
for each channel of each image during training.
For each channel, this layer computes the mean of the image pixels in the
channel and then adjusts each component `x` of each pixel to
`(x - mean) * contrast_factor + mean`.
Input pixel values can be of any range (e.g. `[0., 1.)` or `[0, 255]`) and
in integer or floating point dtype.
By default, the layer will output floats.
Note: This layer is safe to use inside a <a href="../../../tf/data"><code>tf.data</code></a> 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.
Args:
factor: a positive float represented as fraction of value, or a tuple of
size 2 representing lower and upper bound.
When represented as a single float, lower = upper.
The contrast factor will be randomly picked between
`[1.0 - lower, 1.0 + upper]`. For any pixel x in the channel,
the output will be `(x - mean) * factor + mean`
where `mean` is the mean value of the channel.
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 set up.
seed: Integer. Used to create a random seed.
Example:
layer = keras.layers.RandomContrast(value_range=(0, 255))
images = np.random.randint(0, 255, (8, 224, 224, 3), dtype="uint8")
labels = keras.ops.one_hot(
np.array([0, 1, 2, 0, 1, 2, 0, 1]),
num_classes=3
)
segmentation_masks = np.random.randint(0, 3, (8, 224, 224, 1), dtype="uint8")
output = layer(
{
"images": images,
"labels": labels,
"segmentation_masks": segmentation_masks
},
training=True
)
Methods
convert_weight
convert_weight(
weight
)
Convert the weight if it is from the a different backend.
from_config
@classmethodfrom_config( config )
Creates an operation from its config.
This method is the reverse of get_config, capable of instantiating the
same operation from the config dictionary.
if "dtype" in config and isinstance(config["dtype"], dict):
policy = dtype_policies.deserialize(config["dtype"])
| Args | |
|---|---|
config
|
A Python dictionary, typically the output of get_config.
|
| Returns | |
|---|---|
| An operation instance. |
get_random_transformation
get_random_transformation(
data, training=True, seed=None
)
transform_bounding_boxes
transform_bounding_boxes(
bounding_boxes, transformation, training=True
)
transform_images
transform_images(
images, transformation, training=True
)
transform_labels
transform_labels(
labels, transformation, training=True
)
transform_segmentation_masks
transform_segmentation_masks(
segmentation_masks, transformation, training=True
)
transform_single_bounding_box
transform_single_bounding_box(
bounding_box, transformation, training=True
)
transform_single_image
transform_single_image(
image, transformation, training=True
)
transform_single_label
transform_single_label(
label, transformation, training=True
)
transform_single_segmentation_mask
transform_single_segmentation_mask(
segmentation_mask, transformation, training=True
)
View source on GitHub