nvidia.dali.fn.experimental.filter#

nvidia.dali.fn.experimental.filter(__data, __filter, __fill_value=None, /, *, anchor=[-1], border='reflect_101', bytes_per_sample_hint=[0], dtype=None, mode='same', preserve=False, device=None, name=None)#

使用提供的滤波器卷积图像。

注意

实际上,该操作器计算的是相关性,而不是卷积,即在计算滤波器和图像的乘积时,滤波器元素的顺序不会翻转。

此操作器允许序列输入。

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:
  • __data (TensorList) –

    输入样本批次。

    样本可以是图像、视频或体积(3D)数据。样本可以包含通道:支持通道优先和通道最后布局。对于视频/序列,帧范围必须在通道范围之前,例如,支持 "FCHW" 布局的视频,但不支持 "CFHW" 样本。

    支持以下类型的样本:int8、int16、uint8、uint16、float16、float32。

    请注意,用于计算的中间类型始终为 float32。

    注意

    CPU 变体不支持体积(3D)数据,也不支持以下类型的输入:int8 和 float16。

  • __filter (TensorList) –

    滤波器批次。

    对于具有两个空间维度(图像或视频)的输入,每个滤波器必须是 2D 数组(或要应用于视频输入的 per-frame 2D 数组序列)。对于体积输入,滤波器必须是 3D 数组。滤波器值必须具有 float32 类型。

  • __fill_value (TensorList, optional) –

    用于填充的标量批次。

    如果 "border" 设置为 "constant",则当与滤波器卷积时,输入样本将使用相应的标量进行填充。标量必须与输入样本的类型相同。对于视频/序列输入,可以指定标量数组以应用于 per-frame

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

    指定滤波器在输入上的位置。

    如果滤波器大小为 (r, s),锚点为 (a, b),则位置 (x, y) 的输出是滤波器与输入矩形的乘积,该矩形跨越角点:左上角 (x - a, y - b) 和右下角 (x - a + r - 1, x - b + s - 1)

    如果指定 -1(默认值),则使用滤波器范围的中间值(向下舍入为整数),对于奇数大小的滤波器,这将导致滤波器在输入上居中。

    锚点必须是 2D 或 3D 点,具体取决于输入维度,其每个范围都位于滤波器边界内([0, ..., filter_extent - 1])。锚点范围的顺序对应于滤波器范围的顺序。

    "valid" 模式下,此参数将被忽略。

    支持 per-frame 输入。

  • border (str, optional, default = ‘reflect_101’) –

    控制如何处理样本上超出边界的滤波器位置。

    支持的值为:"reflect_101""reflect_1001""wrap""clamp""constant"

    • "reflect_101"(默认值),反射输入,但不重复最外层的值 (dcb|abcdefghi|hgf)。

    • "reflect_1001":反射输入,包括最外层的值 (cba|abcdefghi|ihg)

    • "wrap":包裹输入 (ghi|abcdefghi|abc)。

    • "clamp":输入使用最外层的值进行填充 (aaa|abcdefghi|iii)。

    • "constant":输入使用用户提供的标量(默认为零)进行填充。在样本内。

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

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

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

  • dtype (nvidia.dali.types.DALIDataType, optional) –

    输出数据类型。输出类型可以是 float 或必须与输入类型相同。如果未设置,则使用输入类型。

    注意

    用于实际计算的中间类型为 float32。如果输出为整数类型,则值将被钳制到输出类型范围。

  • mode (str, optional, default = ‘same’) –

    支持的值为:"same""valid"

    • "same"(默认值):输入和输出大小相同,并且 border 用于处理超出边界的滤波器位置。

    • "valid":输出样本被裁剪(裁剪 filter_extent - 1),以便所有滤波器位置完全位于输入样本内。

  • preserve (bool, optional, default = False) – 阻止操作器从图中移除,即使其输出未使用。