nvidia.dali.fn.erase#

nvidia.dali.fn.erase(__input, /, *, anchor=[], axes=[1, 0], axis_names='HW', bytes_per_sample_hint=[0], centered_anchor=False, fill_value=[0.0], normalized=False, normalized_anchor=False, normalized_shape=False, preserve=False, shape=[], device=None, name=None)#

从输入张量中擦除一个或多个区域。

该区域由 anchor (起始点) 和 shape (维度) 指定。仅指定相关维度。未指定的维度被视为提供了轴的整个范围。要指定多个区域,anchorshape 连续表示多个点 (例如,anchor = (y0, x0, y1, x1, …) 和 shape = (h0, w0, h1, w1, …))。anchorshape 参数根据 axis_names 参数的值或 axes 参数的值进行解释。如果未提供 axis_namesaxes 参数,则必须指定除 C (通道) 之外的所有维度。

示例 1

anchor = (10, 20), shape = (190, 200), axis_names = “HW”, fill_value = 0

输入: layout = “HWC”, shape = (300, 300, 3)

擦除区域覆盖垂直维度 (高度) 上 10 到 200 之间的范围,以及水平维度 (宽度) 上 20 到 220 之间的范围。通道维度的范围未指定,因此介于 0 到 3 之间。结果为

output[y, x, c] = 0   if 20 <= x < 220 and 10 <= y < 200
output[y, x, c] = input[y, x, c]  otherwise

示例 2

anchor = (10, 250), shape = (20, 30), axis_names = “W”, fill_value = (118, 185, 0)

输入: layout = “HWC”, shape = (300, 300, 3)

提供了两个擦除区域,它们覆盖了 x=(10, 30) 和 x=(250, 280) 的两个垂直条带。擦除区域中的每个像素都填充了多通道值 (118, 185, 0)。结果为

output[y, x, :] = (118, 185, 0)   if 10 <= x < 30 or 250 <= x < 280
output[y, x, :] = input[y, x, :]  otherwise

示例 3

anchor = (0.15, 0.15), shape = (0.3, 0.3), axis_names = “HW”, fill_value = 100, normalized = True

输入: layout = “HWC”, shape = (300, 300, 3)

提供了一个在高度和宽度维度上具有归一化坐标的擦除区域。为所有通道提供了填充值。坐标可以通过乘以输入形状转换为绝对坐标。结果为

if (0.15 * 300 <= x < (0.3 + 0.15) * 300 and
    0.15 * 300 <= y < (0.3 + 0.15) * 300():
  output[y, x, c] = 100
else:
  output[y, x, c] = input[y, x, c]

示例 4: anchor = (0.15, 0.15), shape = (20, 30), normalized_anchor = True, normalized_shape = False

输入: layout = “HWC”, shape = (300, 300, 3)

一个擦除区域,其锚点以归一化坐标指定,形状以绝对坐标指定。由于未提供 axis_names,因此锚点和形状必须包含除 “C” (通道) 之外的所有维度。结果为

if (0.15 * 300 <= x < (0.15 * 300) + 20 and
   (0.15 * 300) <= y < (0.15 * 300) + 30):
  output[y, x, c] = 0
else:
  output[y, x, c] = input[y, x, c]

此操作符允许序列输入并支持体积数据。

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:

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

关键字参数:
  • anchor (float 或 float 列表或 float 的 TensorList,可选,默认值 = []) –

    擦除区域的锚点或起始点的坐标。

    仅应提供由 axis_namesaxes 指定的相关维度的坐标。

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

    用于 anchorshape 参数的维度顺序,作为维度索引。

    例如,axes=(1, 0) 表示 anchorshape 中的坐标按特定顺序引用维度 1 和 0。

  • axis_names (str,可选,默认值 = ‘HW’) –

    用于锚点和形状参数的维度顺序,如布局中所述。

    例如,axis_names=”HW” 表示 anchorshape 中的坐标按特定顺序引用维度 H (高度) 和 W (宽度)。

    注意

    axis_name*s 的优先级高于 *axes.

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

    每个样本的输出大小提示 (以字节为单位)。

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

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

    如果设置为 True,则锚点指的是区域的中心而不是左上角。

    这会在指定的 anchor 处产生居中擦除区域。

  • fill_value (float 或 float 列表或 float 的 TensorList,可选,默认值 = [0.0]) –

    用于填充擦除区域的值。

    可以指定为一个值 (例如,0) 或一个多通道值 (例如,(200, 210, 220))。如果提供了多通道填充值,则输入布局应包含通道维度 C

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

    确定是否应将锚点和形状参数解释为归一化坐标 (范围 [0.0, 1.0]) 或绝对坐标。

    分别为 normalized_shapenormalized_anchor 参数提供值是互斥的。

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

    确定是否应将锚点参数解释为归一化坐标 (范围 [0.0, 1.0]) 或绝对坐标。

    提供 normalized 的值是互斥的。

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

    确定是否应将形状参数解释为归一化坐标 (范围 [0.0, 1.0]) 或绝对坐标。

    提供 normalized 的值是互斥的。

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

  • shape (float 或 float 列表或 float 的 TensorList,可选,默认值 = []) –

    擦除区域的形状或维度值。

    仅应提供由 axis_namesaxes 指定的相关维度的坐标。