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]

移除退化/无效的边界框及其对应的标签和掩码。

此转换移除边界框及其相关的标签/掩码,条件是:

  • 低于给定的min_sizemin_area:默认情况下,这也会移除退化的框,例如X2 <= X1。

  • 有任何坐标超出其对应图像的范围。你可能想先调用ClampBoundingBoxes以避免不必要的移除。

它还可以清理其他张量,如COCO中的“iscrowd”或“area”属性 (参见labels_getter参数)。

建议在将输入传递给模型之前,在管道的末尾调用它。如果调用了RandomIoUCrop,则调用此转换至关重要。如果您想格外小心,可以在所有可能修改边界框的转换之后调用它,但在大多数情况下,在末尾调用一次应该足够了。

Parameters:
  • min_size (float, 可选) – 小于此大小的边界框将被移除。默认值为1。

  • min_area (float, 可选) – 面积小于此值的边界框将被移除。默认值为1。

  • labels_getter (callablestrNone, 可选) –

    指示如何在输入中识别标签 (或任何需要与边界框一起清理的内容)。 默认情况下,如果输入是字典或元组且其第二个元素是字典,则会尝试在输入中查找“labels”键(不区分大小写)。 这种启发式方法应该适用于许多数据集,包括内置的torchvision数据集。

    它也可以是一个可调用对象,接受与转换相同的输入,并返回以下之一:

    • 单个张量(标签)

    • 张量的元组/列表,每个张量都将受到与边界框相同的清理。 这对于清理多个张量(如标签和COCO中的“iscrowd”或“area”属性)非常有用。

    如果 labels_getter 为 None,则仅清理边界框。

使用SanitizeBoundingBoxes的示例:

开始使用 transforms v2

Getting started with transforms v2

Transforms v2: 端到端目标检测/分割示例

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

定义每次调用时执行的计算。

应该由所有子类覆盖。

注意

尽管前向传递的配方需要在此函数内定义,但之后应该调用Module实例而不是这个,因为前者负责运行已注册的钩子,而后者则默默地忽略它们。