nvidia.dali.fn.per_frame#

nvidia.dali.fn.per_frame(__input, /, *, bytes_per_sample_hint=[0], preserve=False, replace=False, device=None, name=None)#

将输入张量标记为序列。

该操作符修改输入数据的布局字符串,以指示批次包含序列。只有布局受到影响,而数据保持不变。

该操作符可用于在处理序列时馈送每帧张量参数。例如,以下代码片段显示了如何将 gaussian_blur 应用于序列批次,以便为每个序列中的每个帧使用不同的 sigma

@pipeline_def
def random_per_frame_blur():
  video, _ = fn.readers.video_resize(sequence_length=50, ...)
  sigma = fn.random.uniform(range=[0.5, 5], shape=(50,))
  blurred = fn.gaussian_blur(video, sigma=fn.per_frame(sigma))
  return blurred

请注意,指定为每帧参数的批次中每个张量的最外层维度必须与给定运算符处理的相应序列中的帧数匹配。例如,在提供的示例中,video 批次中的每个序列都有 50 帧,因此 sigma 的形状为 (50,)

请查阅给定序列处理运算符的参数文档,以了解它是否支持每帧输入。

如果传递给 per-frame 运算符的输入没有布局,则会设置一个新的布局,该布局以 F 开头,并用 * 填充以匹配输入的维度。否则,根据 replace 标志,运算符要么检查布局的第一个字符是否等于 F,要么将该字符替换为 F

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:

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

关键词参数:
  • bytes_per_sample_hint (int 或 list of int, 可选, 默认 = [0]) –

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

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

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

  • replace (bool, 可选, 默认 = False) – 控制对已指定布局的输入的处理。如果设置为 False,则当布局的第一个字符不是 F 时,操作符会报错。如果设置为 True,则布局的第一个字符将替换为 F