NVIDIA DALI:无法使用 NVIDIA DALI 管道中的 reader.video 加载视频
Posted
技术标签:
【中文标题】NVIDIA DALI:无法使用 NVIDIA DALI 管道中的 reader.video 加载视频【英文标题】:NVIDIA DALI : unable to load videos using readers.video in NVIDIA DALI pipeline 【发布时间】:2021-12-29 08:12:36 【问题描述】:尝试为 NVIDIA DALI 管道加载视频以进行视频处理,但无法加载 .mp4 视频。
import os
import numpy as np
from nvidia.dali import pipeline_def
import nvidia.dali.fn as fn
import nvidia.dali.types as types
batch_size=2
sequence_length=8
initial_prefetch_size=16
video_directory=['sintel_trailer-720p_0.mp4']
n_iter=6
print(video_directory)
@pipeline_def
def video_pipe(file_root):
video, labels = fn.readers.video(device="gpu", file_root=file_root, sequence_length=sequence_length,
random_shuffle=True, initial_fill=initial_prefetch_size)
return video, labels
pipe = video_pipe(batch_size=batch_size, num_threads=2, device_id=0, file_root=video_directory, seed=12345)
pipe.build()
上面的 DALI 管道在加载视频时显示以下问题:
RuntimeError: 构建管道时出现严重错误: Error when 构造操作符:readers__视频遇到: [/opt/dali/dali/operators/reader/loader/video_loader.cc:117] 断言 “dir!= nullptr”失败:目录 ['sintel_trailer-720p_0.mp4'] 可以 打不开。
我参考了 NVIDIA DALI 的文档进行视频处理,但无法解决,
请查看参考:NVIDIA DALI DOCS VIDEO PROCESSING
【问题讨论】:
【参考方案1】:file_root
参数指向根目录,DALI 应在其中搜索视频,file_list
参数应指向列出所有要加载的样本的文件。
但是,从您的示例来看,filenames
参数必须是更适合您需求的参数。
您的示例应该按预期工作,具有以下管道定义:
@pipeline_def
def video_pipe(file_root):
video, labels = fn.readers.video(device="gpu", filenames=file_root, labels=[], sequence_length=sequence_length,
random_shuffle=True, initial_fill=initial_prefetch_size)
return video, labels
我也添加了labels
参数。没有它,运算符只返回一个输出。如果您想更好地了解运营商,请查看DALI manual。
【讨论】:
【参考方案2】:经过 NVIDIA DALI 的一些研究和论坛讨论得到这个答案,请参考issues/3503 链接了解详细的答案讨论。 谢谢
【讨论】:
以上是关于NVIDIA DALI:无法使用 NVIDIA DALI 管道中的 reader.video 加载视频的主要内容,如果未能解决你的问题,请参考以下文章