nvidia.dali.fn.readers.video_resize#

nvidia.dali.fn.readers.video_resize(*, additional_decode_surfaces=2, antialias=True, bytes_per_sample_hint=[0], channels=3, dont_use_mmap=False, dtype=DALIDataType.UINT8, enable_frame_num=False, enable_timestamps=False, file_list='', file_list_frame_num=False, file_list_include_preceding_frame=False, file_root='', filenames=[], image_type=DALIImageType.RGB, initial_fill=1024, interp_type=DALIInterpType.INTERP_LINEAR, labels=None, lazy_init=False, mag_filter=DALIInterpType.INTERP_LINEAR, max_size=None, min_filter=DALIInterpType.INTERP_LINEAR, minibatch_size=32, mode='default', normalized=False, num_shards=1, pad_last_batch=False, pad_sequences=False, prefetch_queue_depth=1, preserve=False, random_shuffle=False, read_ahead=False, resize_longer=0.0, resize_shorter=0.0, resize_x=0.0, resize_y=0.0, resize_z=0.0, roi_end=None, roi_relative=False, roi_start=None, seed=-1, sequence_length, shard_id=0, size=None, skip_cached_images=False, skip_vfr_check=False, step=-1, stick_to_shard=False, stride=1, subpixel_scale=True, temp_buffer_hint=0, tensor_init_bytes=1048576, device=None, name=None)#

使用 FFmpeg 和 NVDECODE 加载、解码和调整视频文件大小,NVDECODE 是 NVIDIA GPU 的硬件加速视频解码。

视频流可以是大多数容器文件格式。FFmpeg 用于解析视频容器,并返回形状为 (N, F, H, W, C) 的序列批次,其中 N 是批次大小,F 是序列中的帧数。

此操作符结合了 nvidia.dali.fn.video_reader()nvidia.dali.fn.resize() 的功能。

注意

解码器仅支持恒定帧率视频。

支持的后端
  • ‘gpu’

关键字参数:
  • additional_decode_surfaces (int, 可选, 默认 = 2) –

    超出最低要求之外要使用的其他解码表面。

    当解码器无法确定最少数量的解码表面时,将忽略此参数

    注意

    当驱动程序是旧版本时,可能会发生这种情况。

    此参数可用于权衡内存使用量和性能。

  • antialias (bool, 可选, 默认 = True) –

    如果启用,则在缩小比例时应用抗锯齿滤波器。

    注意

    最近邻插值不支持抗锯齿。

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

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

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

  • channels (int, 可选, 默认 = 3) – 通道数。

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

    如果设置为 True,则加载器将使用普通文件 I/O,而不是尝试在内存中映射文件。

    映射在访问本地文件系统时提供了一点性能优势,但大多数网络文件系统不提供最佳性能。

  • dtype (nvidia.dali.types.DALIDataType, 可选, 默认 = DALIDataType.UINT8) –

    输出数据类型。

    支持的类型:UINT8FLOAT

  • enable_frame_num (bool, 可选, 默认 = False) – 如果传递了 file_listfilenames 参数,则返回帧号输出。

  • enable_timestamps (bool, 可选, 默认 = False) – 如果传递了 file_listfilenames 参数,则返回时间戳输出。

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

    包含 file label [start_frame [end_frame]] 值的列表的文件路径。

    正值表示确切的帧,负值表示从末尾开始的第 N 帧(它遵循 python 数组索引模式),开始帧和结束帧的相等值将产生一个空序列和一个警告。此选项与 filenamesfile_root 互斥。

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

    如果在 file_list 中提供了开始/结束时间戳,您可以将它们解释为帧号而不是时间戳。

    如果提供了浮点值,则开始帧号将向上舍入,结束帧号将向下舍入。

    帧号从 0 开始。

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

    更改 file_list 开始和结束帧时间戳如何转换为帧号的行为。

    如果在 file_list 中将开始/结束时间戳作为时间戳提供,则开始帧计算为 ceil(start_time_stamp * FPS),结束帧计算为 floor(end_time_stamp * FPS)。如果此参数设置为 True,则公式更改为 floor(start_time_stamp * FPS)ceil(end_time_stamp * FPS)。实际上,第一个返回的帧不晚于,结束帧不早于提供的时间戳。此行为更符合可见时间戳与显示的视频帧的关联方式。

    注意

    file_list_frame_num 设置为 True 时,此选项不起作用。

    警告

    此选项可用于旧版行为兼容性。

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

    包含数据文件的目录的路径。

    此选项与 filenamesfile_list 互斥。

  • filenames (str 或 str 列表, 可选, 默认 = []) –

    要加载的视频文件的文件名。

    此选项与 file_listfile_root 互斥。

  • image_type (nvidia.dali.types.DALIImageType, 可选, 默认 = DALIImageType.RGB) – 输出帧的色彩空间(RGB 或 YCbCr)。

  • initial_fill (int, 可选, 默认 = 1024) –

    用于混洗的缓冲区大小。

    如果 random_shuffle 为 False,则忽略此参数。

  • interp_type (nvidia.dali.types.DALIInterpTypeDALIInterpType 张量列表, 可选, 默认 = DALIInterpType.INTERP_LINEAR) –

    要使用的插值类型。

    使用 min_filtermag_filter 来指定用于缩小和放大比例的不同滤波。

    注意

    现在不推荐使用 INTERP_TRIANGULAR,应将其替换为

    启用 antialias 的 INTERP_LINEAR 的组合。

  • labels (intint 列表,可选) –

    filenames 参数中列出的文件关联的标签。

    如果提供空列表,则顺序的从 0 开始的索引将用作标签。如果未提供,则不会生成任何标签。

  • lazy_init (bool, 可选, 默认 = False) – 仅在第一次运行时(而不是在构造函数中)解析和准备数据集元数据。

  • mag_filter (nvidia.dali.types.DALIInterpTypeDALIInterpType 张量列表, 可选, 默认 = DALIInterpType.INTERP_LINEAR) – 放大比例时使用的滤波器。

  • max_size (floatfloat 列表,可选) –

    输出大小的限制。

    当操作符配置为保持纵横比并且仅指定较小尺寸时,另一个(或多个)尺寸可能会变得非常大。当使用 resize_shorter 参数或“not_smaller”模式或当某些范围未指定时,可能会发生这种情况。

    此参数限制了输出可以变得多大。可以按轴或统一为所有轴指定此值。

    注意

    当与“not_smaller”模式或 resize_shorter 参数一起使用时,max_size 优先,并且保持纵横比 - 例如,使用 mode="not_smaller", size=800, max_size=1400 调整大小,大小为 1200x600 的图像将调整为 1400x700。

  • min_filter (nvidia.dali.types.DALIInterpTypeDALIInterpType 张量列表, 可选, 默认 = DALIInterpType.INTERP_LINEAR) – 缩小比例时使用的滤波器。

  • minibatch_size (int, 可选, 默认 = 32) – 内核调用中处理的最大图像数量。

  • mode (str, 可选, 默认 = ‘default’) –

    调整大小模式。

    以下是支持模式的列表

    • "default" - 图像调整为指定大小。
      缺失的范围将按提供的范围的平均比例进行缩放。
    • "stretch" - 图像调整为指定大小。
      缺失的范围根本不缩放。
    • "not_larger" - 调整图像大小,保持纵横比,使输出图像的任何范围都不超过指定大小。
      例如,1280x720,所需的输出大小为 640x480,实际生成 640x360 输出。
    • "not_smaller" - 调整图像大小,保持纵横比,使输出图像的任何范围都不小于指定大小。
      例如,640x480 图像,所需的输出大小为 1920x1080,实际生成 1920x1440 输出。

      此参数与 resize_longerresize_shorter 互斥。

  • normalized (bool, optional, default = False) – 获取归一化数据作为输出。

  • num_shards (int, optional, default = 1) –

    将数据划分为指定数量的分片(shard)。

    这通常用于多 GPU 或多节点训练。

  • pad_last_batch (bool, optional, default = False) –

    如果设置为 True,则通过重复最后一个样本来填充分片。

    注意

    如果各个分片之间的批次数量不同,此选项可能会导致将一整批重复样本添加到数据集中。

  • pad_sequences (bool, optional, default = False) –

    如果视频末尾的帧数不足,则允许创建不完整的序列。

    冗余帧将置零。 对应的时间戳和帧号将设置为 -1。

  • prefetch_queue_depth (int, optional, default = 1) –

    指定内部加载器要预取的批次数量。

    当 pipeline 受 CPU 阶段限制时,应增加此值,以内存消耗换取与加载器线程更好的交错。

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

  • random_shuffle (bool, optional, default = False) –

    确定是否随机打乱数据。

    大小等于 initial_fill 的预取缓冲区用于顺序读取数据,然后随机选择样本以形成批次。

  • read_ahead (bool, optional, default = False) –

    确定是否应预读访问的数据。

    对于 LMDB、RecordIO 或 TFRecord 等大型文件,此参数会减慢首次访问速度,但会缩短所有后续访问的时间。

  • resize_longer (float or TensorList of float, optional, default = 0.0) –

    调整大小后的图像的较长边的长度。

    此选项与 resize_shorter 和显式大小参数互斥,并且运算符保持原始图像的宽高比。 此选项等效于为所有维度指定相同的大小和 mode="not_larger"

  • resize_shorter (float or TensorList of float, optional, default = 0.0) –

    调整大小后的图像的较短边的长度。

    此选项与 resize_longer 和显式大小参数互斥,并且运算符保持原始图像的宽高比。 此选项等效于为所有维度指定相同的大小和 mode="not_smaller"。 可以通过设置 max_size 参数来限制较长边的长度。 有关更多信息,请参阅 max_size 参数文档。

  • resize_x (float or TensorList of float, optional, default = 0.0) –

    调整大小后的图像的 X 维度长度。

    此选项与 resize_shorterresize_longersize 互斥。 如果未指定 resize_y 或为 0,则运算符保持原始图像的宽高比。 负值会翻转图像。

  • resize_y (float or TensorList of float, optional, default = 0.0) –

    调整大小后的图像的 Y 维度长度。

    此选项与 resize_shorterresize_longersize 互斥。 如果未指定 resize_x 或为 0,则运算符保持原始图像的宽高比。 负值会翻转图像。

  • resize_z (float or TensorList of float, optional, default = 0.0) –

    调整大小后的体积的 Z 维度长度。

    此选项与 resize_shorterresize_longersize 互斥。 如果 resize_xresize_y 未指定或为 0,则运算符将保持原始体积的宽高比。 负值会翻转体积。

  • roi_end (floatlist of floatTensorList of float, optional) –

    输入感兴趣区域 (ROI) 的结束坐标。

    必须与 roi_start 一起指定。 坐标遵循张量形状顺序,这与 size 相同。 坐标可以是绝对坐标(以像素为单位,这是默认值)或相对坐标 (0..1),具体取决于 relative_roi 参数的值。 如果任何维度中的 ROI 起始坐标大于 ROI 结束坐标,则该区域在该维度中翻转。

  • roi_relative (bool, optional, default = False) – 如果为 true,则 ROI 坐标相对于输入大小,其中 0 表示顶部/左侧,1 表示底部/右侧

  • roi_start (floatlist of floatTensorList of float, optional) –

    输入感兴趣区域 (ROI) 的起始坐标。

    必须与 roi_end 一起指定。 坐标遵循张量形状顺序,这与 size 相同。 坐标可以是绝对坐标(以像素为单位,这是默认值)或相对坐标 (0..1),具体取决于 relative_roi 参数的值。 如果任何维度中的 ROI 起始坐标大于 ROI 结束坐标,则该区域在该维度中翻转。

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

  • sequence_length (int) – 每个序列要加载的帧数。

  • shard_id (int, optional, default = 0) – 要读取的分片索引。

  • size (floatlist of floatTensorList of float, optional) –

    所需的输出大小。

    必须是列表/元组,每个空间维度一个条目,不包括视频帧和通道。 范围为 0 的维度将被视为不存在,并且输出大小将根据其他范围和 mode 参数计算。

  • skip_cached_images (bool, optional, default = False) –

    如果设置为 True,则当样本在解码器缓存中时,将跳过加载数据。

    在这种情况下,加载器的输出将为空。

  • skip_vfr_check (bool, optional, default = False) –

    跳过对可变帧率 (VFR) 视频的检查。

    使用此标志可抑制对 VFR 视频的误报检测。

    警告

    当数据集确实包含 VFR 文件时,设置此标志可能会导致解码器故障。

  • step (int, optional, default = -1) –

    每个序列之间的帧间隔。

    当值小于 0 时,step 将设置为 sequence_length

  • stick_to_shard (bool, optional, default = False) –

    确定读取器是否应坚持数据分片而不是遍历整个数据集。

    如果使用解码器缓存,它可以显著减少要缓存的数据量,但可能会影响训练的准确性。

  • stride (int, optional, default = 1) – 序列中连续帧之间的距离。

  • subpixel_scale (bool, optional, default = True) –

    如果为 True,则直接指定或计算的分数大小将导致调整输入 ROI 以保持缩放比例。

    否则,将调整缩放比例,以便源图像映射到四舍五入的输出大小。

  • temp_buffer_hint (int, optional, default = 0) –

    用于重采样的临时缓冲区的初始大小(以字节为单位)。

    注意

    此参数对于 CPU 变体将被忽略。

  • tensor_init_bytes (int, optional, default = 1048576) – 每个图像要分配多少内存的提示。