nvidia.dali.fn.experimental.readers.video#
- nvidia.dali.fn.experimental.readers.video(*, bytes_per_sample_hint=[0], dont_use_mmap=False, enable_frame_num=False, filenames=[], initial_fill=1024, labels=None, lazy_init=False, num_shards=1, pad_last_batch=False, prefetch_queue_depth=1, preserve=False, random_shuffle=False, read_ahead=False, seed=-1, sequence_length, shard_id=0, skip_cached_images=False, step=-1, stick_to_shard=False, stride=1, tensor_init_bytes=1048576, device=None, name=None)#
使用 FFmpeg 加载和解码视频文件。
视频流可以是大多数容器文件格式。FFmpeg 用于解析视频容器,并返回一批 sequence_length 帧的序列,形状为
(N, F, H, W, C)
,其中N
是批大小,F 是帧数。注意
不支持索引的容器(如 MPEG)需要 DALI 构建索引。
DALI 将会浏览视频并标记关键帧,以便即使在可变帧率的情况下也能有效地查找。
- 支持的后端
‘cpu’
‘gpu’
- 关键字参数:
bytes_per_sample_hint¶ (int or list of int, optional, default = [0]) –
每个样本的输出大小提示,以字节为单位。
如果指定,则驻留在 GPU 或页锁定主机内存中的算子输出将被预先分配,以容纳此大小的样本批次。
dont_use_mmap¶ (bool, optional, default = False) –
如果设置为 True,Loader 将使用普通文件 I/O 而不是尝试将文件映射到内存中。
当访问本地文件系统时,映射提供小的性能优势,但大多数网络文件系统不提供最佳性能。
enable_frame_num¶ (bool, optional, default = False) – 如果设置,则返回解码序列中第一帧的索引作为附加输出。
filenames¶ (str or list of str, optional, default = []) – 要加载的视频文件的绝对路径。
initial_fill¶ (int, optional, default = 1024) –
用于洗牌的缓冲区大小。
如果
random_shuffle
为 False,则忽略此参数。labels¶ (int or list of int, optional) – 与 filenames 参数中列出的文件关联的标签。如果未提供,则不会生成标签。
lazy_init¶ (bool, optional, default = False) – 仅在第一次运行时(而不是在构造函数中)解析和准备数据集元数据。
num_shards¶ (int, optional, default = 1) –
将数据划分为指定数量的部分(分片)。
这通常用于多 GPU 或多节点训练。
pad_last_batch¶ (bool, optional, default = False) –
如果设置为 True,则通过重复最后一个样本来填充分片。
注意
如果不同分片之间的批次数量不同,此选项可能会导致将整个重复样本批次添加到数据集。
prefetch_queue_depth¶ (int, optional, default = 1) –
指定要由内部 Loader 预取的批次数量。
当 pipeline 受 CPU 阶段限制时,应增加此值,以内存消耗换取与 Loader 线程更好的交错。
preserve¶ (bool, optional, default = False) – 即使算子的输出未使用,也阻止将其从图中删除。
random_shuffle¶ (bool, optional, default = False) –
确定是否随机洗牌数据。
使用大小等于 initial_fill 的预取缓冲区按顺序读取数据,然后随机选择样本以形成批次。
read_ahead¶ (bool, optional, default = False) –
确定是否应预读访问的数据。
对于 LMDB、RecordIO 或 TFRecord 等大型文件,此参数会减慢首次访问速度,但会减少所有后续访问的时间。
seed¶ (int, optional, default = -1) – 随机种子;如果未设置,将自动分配一个。
sequence_length¶ (int) – 每个序列要加载的帧数。
shard_id¶ (int, optional, default = 0) – 要读取的分片索引。
skip_cached_images¶ (bool, optional, default = False) –
如果设置为 True,则当样本位于解码器缓存中时,将跳过加载数据。
在这种情况下,加载器的输出将为空。
step¶ (int, optional, default = -1) –
每个序列之间的帧间隔。
当该值小于 0 时,step 将设置为 sequence_length。
stick_to_shard¶ (bool, optional, default = False) –
确定读取器是否应坚持数据分片,而不是遍历整个数据集。
如果使用解码器缓存,它可以显著减少要缓存的数据量,但可能会影响训练的准确性。
stride¶ (int, optional, default = 1) – 序列中连续帧之间的距离。
tensor_init_bytes¶ (int, optional, default = 1048576) – 每个图像要分配多少内存的提示。