nvidia.dali.fn.laplacian#

nvidia.dali.fn.laplacian(__input, /, *, bytes_per_sample_hint=[0], dtype=None, normalized_kernel=False, preserve=False, scale=[1.0], smoothing_size=None, window_size=[3], device=None, name=None)#

计算输入的拉普拉斯算子。

拉普拉斯算子计算为关于每个空间维度的二阶偏导数的总和。每个偏导数都使用可分离卷积来近似,该卷积在偏导数方向上使用导数窗口,并在其余轴上使用平滑窗口。

默认情况下,每个偏导数都通过沿所有空间轴卷积来近似:偏导数方向上的轴使用 window_size 的导数窗口,其余轴与相同大小的平滑窗口卷积。如果指定了 smoothing_size,则应用于给定轴的平滑窗口可以具有与导数窗口不同的大小。指定 smoothing_size = 1 意味着在垂直于导数方向的轴上不进行平滑处理。

window_sizesmoothing_size 都可以指定为单个值或每个轴的值。例如,对于体积输入,如果指定了 window_size=[dz, dy, dx]smoothing_size=[sz, sy, sx],则将使用以下窗口

  • 对于 z 方向的偏导数:沿 z 轴大小为 dz 的导数窗口,以及分别沿 yx 轴大小为 sysx 的平滑窗口。

  • 对于 y 方向的偏导数:沿 y 轴大小为 dy 的导数窗口,以及分别沿 zx 轴大小为 szsx 的平滑窗口。

  • 对于 x 方向的偏导数:沿 x 轴大小为 dx 的导数窗口,以及分别沿 zy 轴大小为 szsy 的平滑窗口。

窗口大小和平滑大小必须为奇数。导数窗口的大小必须至少为 3。平滑窗口的大小可以为 1,这意味着沿相应轴不进行平滑处理。

要标准化偏导数,可以使用 normalized_kernel=True。每个偏导数都按 2^(-s + n + 2) 缩放,其中 s 是用于计算给定偏导数的窗口大小之和(包括平滑窗口),n 是数据维度/轴的数量。或者,您可以指定 scale 参数来自定义缩放因子。Scale 可以是单个值或 n 个值,每个偏导数一个值。

操作符使用 32 位浮点数作为中间类型。

注意

通道 C 和帧 F 维度不被视为数据轴。如果存在通道,则仅支持通道优先或通道最后的输入。

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

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:

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

关键字参数:
  • bytes_per_sample_hint (int 或 list of int, optional, default = [0]) –

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

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

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

    输出数据类型。

    支持的类型:FLOAT。如果未设置,则使用输入类型。

  • normalized_kernel (bool, optional, default = False) – 如果设置为 True,则自动缩放偏导数内核。如果指定了 scale,则必须为 False。

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

  • scale (float 或 list of float 或 TensorList of float, optional, default = [1.0]) –

    手动缩放偏导数的因子。

    支持 per-frame 输入。

  • smoothing_size (intlist of intTensorList of int, optional) –

    卷积中使用的平滑窗口的大小。

    平滑大小必须为奇数,介于 1 到 23 之间。

    支持 per-frame 输入。

  • window_size (int 或 list of int 或 TensorList of int, optional, default = [3]) –

    卷积中使用的导数窗口的大小。

    窗口大小必须为奇数,介于 3 到 23 之间。

    支持 per-frame 输入。