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_size
或min_area
的边界框及其相关的标签/掩码:默认情况下,它还会移除退化框,例如 X2 <= X1。
如果任何坐标超出其对应的图像。您可能需要先调用
ClampBoundingBoxes
以避免不必要的移除。
它还可以清除其他张量,例如 COCO 中的“iscrowd”或“area”属性(请参阅
labels_getter
参数)。建议在管道的末尾,将输入传递给模型之前调用它。如果调用了
RandomIoUCrop
,则调用此变换至关重要。如果您想格外小心,可以在所有可能修改边界框的变换之后调用它,但在大多数情况下,在最后调用一次就足够了。- 参数:
min_size (float, 可选) – 边界框被移除的最小尺寸。默认为 1。
min_area (float, 可选) – 边界框被移除的最小面积。默认为 1。
labels_getter (可调用对象 或 str 或 None, 可选) –
指示如何识别输入中的标签(或任何其他需要与边界框一起清除的内容)。默认情况下,如果输入是字典或其第二个元素是字典的元组,它将尝试在输入中查找“labels”键(不区分大小写)。这种启发式方法对于许多数据集(包括内置的 torchvision 数据集)都适用。
它也可以是一个可调用对象,它接受与变换相同的输入,并返回
单个张量(标签)
张量元组/列表,每个张量都将与边界框进行相同的清除。这对于清除多个张量(如标签以及 COCO 中的“iscrowd”或“area”属性)很有用。
如果
labels_getter
为 None,则只清除边界框。
使用
SanitizeBoundingBoxes
的示例