nvidia.dali.fn.segmentation.random_object_bbox#

nvidia.dali.fn.segmentation.random_object_bbox(__input, /, *, background=0, bytes_per_sample_hint=[0], cache_objects=False, class_weights=None, classes=None, foreground_prob=1.0, format='anchor_shape', ignore_class=False, k_largest=None, output_class=False, preserve=False, seed=-1, threshold=None, device=None, name=None)#

从mask中随机选择一个对象并返回其边界框。

此操作符将标记的分段图作为输入。以 foreground_prob 的概率,它随机选择一个标签(均匀地或根据作为 class_weights 给出的分布),提取具有所选标签的像素的连接 blob,并随机选择其中一个 blob。可以根据 k_largestthreshold 进一步过滤 blob。输出是以 format 中描述的格式之一的所选 blob 的边界框。

以 1-foreground_prob 的概率,返回输入的整个区域。

支持的后端
  • ‘cpu’

参数:

__input (TensorList) – 操作符的输入。

关键词参数:
  • background (int 或 int 的 TensorList, 可选, 默认 = 0) –

    背景标签。

    如果未指定,则为 0 或任何不在 classes 中的值。

  • bytes_per_sample_hint (int 或 int 列表, 可选, 默认 = [0]) –

    输出大小提示,单位为字节/样本。

    如果指定,则位于 GPU 或页锁定主机内存中的操作符输出将被预先分配以适应此大小的样本批次。

  • cache_objects (bool, 可选, 默认 = False) –

    缓存对象边界框,以避免在先前看到的输入中查找对象 blob 的计算成本。

    搜索连接像素的 blob 并查找框可能需要很长时间。当数据集的项目很少,但项目大小很大时,可以使用缓存来保存框,并在再次看到相同的输入时重复使用它们。输入基于 256 位哈希进行比较,这比重新计算对象框要快得多。

  • class_weights (floatfloat 列表float 的 TensorList, 可选) –

    前景类别的相对概率。

    每个值对应于 classes 中的类标签。如果未指定 classes,则会分配连续的基于 1 的标签。

    权重的总和不必等于 1 - 如果不等于 1,则权重将被归一化。

  • classes (intint 列表int 的 TensorList, 可选) –

    被视作前景的标签列表。

    如果未指定,则所有不等于 background 的标签都被视作前景。

  • foreground_prob (float 或 float 的 TensorList, 可选, 默认 = 1.0) – 选择前景边界框的概率。

  • format (str, 可选, 默认 = ‘anchor_shape’) –

    数据返回的格式。

    可能的选项有:
    • “anchor_shape”(默认)- 有两个输出:锚点和形状

    • “start_end” - 有两个输出:边界框的起始坐标和超出的结束坐标

    • “box” - 有一个输出,其中包含串联的起始和结束坐标

  • ignore_class (bool, 可选, 默认 = False) –

    如果为 True,则所有对象都以相等的概率被选中,而与其所属的类别无关。否则,首先选择一个类别,然后从此类别中随机选择一个对象。

    此参数与 classesclass_weightsoutput_class 不兼容。

    注意

    此标志仅影响 blob 被选择的概率。它不会导致不同类别的 blob 被合并。

  • k_largest (int, 可选) –

    如果指定,则框按体积降序排序,并且仅考虑 k_largest 个。

    如果 ignore_class 为 True,则 k_largest 指的是所有框;否则,它指的是所选类别。

  • output_class (bool, 可选, 默认 = False) –

    如果为 True,则会生成一个额外的输出,其中包含所选框所属类别的标签,如果所选框不是对象边界框,则包含背景标签。

    当发生以下任何一种情况时,输出可能不是对象边界框
    • 样本是随机选择的(根据 foreground_prob)而不是前景框

    • 样本不包含任何前景对象

    • 没有边界框满足所需的大小阈值。

  • preserve (bool, 可选, 默认 = False) – 即使操作符的输出未使用,也阻止其从图中移除。

  • seed (int, 可选, 默认 = -1) – 随机种子;如果未设置,将自动分配一个。

  • threshold (intint 列表int 的 TensorList, 可选) –

    要返回的边界框的每轴最小尺寸。

    如果所选类别不包含任何满足此条件的边界框,则会拒绝该类别并选择另一个类别。 如果没有类别包含令人满意的框,则返回整个输入区域。