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) –输出数据类型。
支持的类型:
UINT8
或FLOAT
。enable_frame_num¶ (bool, 可选, 默认 = False) – 如果传递了
file_list
或filenames
参数,则返回帧号输出。enable_timestamps¶ (bool, 可选, 默认 = False) – 如果传递了
file_list
或filenames
参数,则返回时间戳输出。file_list¶ (str, 可选, 默认 = ‘’) –
包含
file label [start_frame [end_frame]]
值的列表的文件路径。正值表示确切的帧,负值表示从末尾开始的第 N 帧(它遵循 python 数组索引模式),开始帧和结束帧的相等值将产生一个空序列和一个警告。此选项与
filenames
和file_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, 可选, 默认 = ‘’) –
包含数据文件的目录的路径。
filenames¶ (str 或 str 列表, 可选, 默认 = []) –
要加载的视频文件的文件名。
image_type¶ (
nvidia.dali.types.DALIImageType
, 可选, 默认 = DALIImageType.RGB) – 输出帧的色彩空间(RGB 或 YCbCr)。initial_fill¶ (int, 可选, 默认 = 1024) –
用于混洗的缓冲区大小。
如果
random_shuffle
为 False,则忽略此参数。interp_type¶ (
nvidia.dali.types.DALIInterpType
或 DALIInterpType 张量列表, 可选, 默认 = DALIInterpType.INTERP_LINEAR) –要使用的插值类型。
使用
min_filter
和mag_filter
来指定用于缩小和放大比例的不同滤波。注意
现在不推荐使用 INTERP_TRIANGULAR,应将其替换为
启用
antialias
的 INTERP_LINEAR 的组合。labels¶ (int 或 int 列表,可选) –
与
filenames
参数中列出的文件关联的标签。如果提供空列表,则顺序的从 0 开始的索引将用作标签。如果未提供,则不会生成任何标签。
lazy_init¶ (bool, 可选, 默认 = False) – 仅在第一次运行时(而不是在构造函数中)解析和准备数据集元数据。
mag_filter¶ (
nvidia.dali.types.DALIInterpType
或 DALIInterpType 张量列表, 可选, 默认 = DALIInterpType.INTERP_LINEAR) – 放大比例时使用的滤波器。max_size¶ (float 或 float 列表,可选) –
输出大小的限制。
当操作符配置为保持纵横比并且仅指定较小尺寸时,另一个(或多个)尺寸可能会变得非常大。当使用
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.DALIInterpType
或 DALIInterpType 张量列表, 可选, 默认 = DALIInterpType.INTERP_LINEAR) – 缩小比例时使用的滤波器。minibatch_size¶ (int, 可选, 默认 = 32) – 内核调用中处理的最大图像数量。
mode¶ (str, 可选, 默认 = ‘default’) –
调整大小模式。
以下是支持模式的列表
"default"
- 图像调整为指定大小。缺失的范围将按提供的范围的平均比例进行缩放。"stretch"
- 图像调整为指定大小。缺失的范围根本不缩放。"not_larger"
- 调整图像大小,保持纵横比,使输出图像的任何范围都不超过指定大小。例如,1280x720,所需的输出大小为 640x480,实际生成 640x360 输出。"not_smaller"
- 调整图像大小,保持纵横比,使输出图像的任何范围都不小于指定大小。例如,640x480 图像,所需的输出大小为 1920x1080,实际生成 1920x1440 输出。此参数与
resize_longer
和resize_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_shorter
、resize_longer
和size
互斥。 如果未指定resize_y
或为 0,则运算符保持原始图像的宽高比。 负值会翻转图像。resize_y¶ (float or TensorList of float, optional, default = 0.0) –
调整大小后的图像的 Y 维度长度。
此选项与
resize_shorter
、resize_longer
和size
互斥。 如果未指定resize_x
或为 0,则运算符保持原始图像的宽高比。 负值会翻转图像。resize_z¶ (float or TensorList of float, optional, default = 0.0) –
调整大小后的体积的 Z 维度长度。
此选项与
resize_shorter
、resize_longer
和size
互斥。 如果resize_x
和resize_y
未指定或为 0,则运算符将保持原始体积的宽高比。 负值会翻转体积。roi_end¶ (float 或 list of float 或 TensorList 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¶ (float 或 list of float 或 TensorList 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¶ (float 或 list of float 或 TensorList 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) – 每个图像要分配多少内存的提示。
另请参阅