View source on GitHub
|
A preprocessing layer which randomly crops images during training.
Inherits From: Layer, Operation
tf.keras.layers.RandomCrop(
height, width, seed=None, data_format=None, name=None, **kwargs
)
During training, this layer will randomly choose a location to crop images
down to a target size. The layer will crop all the images in the same batch
to the same cropping location.
At inference time, and during training if an input image is smaller than the
target size, the input will be resized and cropped so as to return the
largest possible window in the image that matches the target aspect ratio.
If you need to apply random cropping at inference time, set `training` to
True when calling the layer.
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 <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:
`(..., target_height, target_width, channels)`.
Args:
height: Integer, the height of the output shape.
width: Integer, the width of the output shape.
seed: Integer. Used to create a random seed.
**kwargs: Base layer keyword arguments, such as
`name` and `dtype`.
Example:
layer = keras.layers.RandomCrop(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
)
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
)
bounding_boxes = { "boxes": (batch, num_boxes, 4), # left-top-right-bottom (xyxy) "labels": (batch, num_boxes, num_classes), } or bounding_boxes = { "boxes": (num_boxes, 4), "labels": (num_boxes, num_classes), }
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