Shortcuts

SanitizeBoundingBoxes

class torchvision.transforms.v2.SanitizeBoundingBoxes(min_size: float = 1.0, min_area: float = 1.0, labels_getter: Optional[Union[Callable[[Any], Any], str]] = 'default')[source]

Remove degenerate/invalid bounding boxes and their corresponding labels and masks.

This transform removes bounding boxes and their associated labels/masks that:

  • are below a given min_size or min_area: by default this also removes degenerate boxes that have e.g. X2 <= X1.

  • have any coordinate outside of their corresponding image. You may want to call ClampBoundingBoxes first to avoid undesired removals.

It can also sanitize other tensors like the “iscrowd” or “area” properties from COCO (see labels_getter parameter).

It is recommended to call it at the end of a pipeline, before passing the input to the models. It is critical to call this transform if RandomIoUCrop was called. If you want to be extra careful, you may call it after all transforms that may modify bounding boxes but once at the end should be enough in most cases.

Parameters:
  • min_size (float, optional) – The size below which bounding boxes are removed. Default is 1.

  • min_area (float, optional) – The area below which bounding boxes are removed. Default is 1.

  • labels_getter (callable or str or None, optional) –

    indicates how to identify the labels in the input (or anything else that needs to be sanitized along with the bounding boxes). By default, this will try to find a “labels” key in the input (case-insensitive), if the input is a dict or it is a tuple whose second element is a dict. This heuristic should work well with a lot of datasets, including the built-in torchvision datasets.

    It can also be a callable that takes the same input as the transform, and returns either:

    • A single tensor (the labels)

    • A tuple/list of tensors, each of which will be subject to the same sanitization as the bounding boxes. This is useful to sanitize multiple tensors like the labels, and the “iscrowd” or “area” properties from COCO.

    If labels_getter is None then only bounding boxes are sanitized.

Examples using SanitizeBoundingBoxes:

Getting started with transforms v2

Getting started with transforms v2

Transforms v2: End-to-end object detection/segmentation example

Transforms v2: End-to-end object detection/segmentation example
forward(*inputs: Any) Any[source]

Do not override this! Use transform() instead.

transform(inpt: Any, params: Dict[str, Any]) Any[source]

Method to override for custom transforms.

See How to write your own v2 transforms

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources