簡體   English   中英

NVIDIA DALI:無法使用 NVIDIA DALI 管道中的 reader.video 加載視頻

[英]NVIDIA DALI : unable to load videos using readers.video in NVIDIA DALI pipeline

嘗試為 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:構建管道時出現嚴重錯誤:構建運算符時出錯:遇到 reader__Video:[/opt/dali/dali/operators/reader/loader/video_loader.cc:117] 斷言“dir:= nullptr”失敗。 無法打開目錄 ['sintel_trailer-720p_0.mp4']。

我已經參考了 NVIDIA DALI 的文檔進行視頻處理,但無法解決,

請查看參考: NVIDIA DALI DOCS 視頻處理

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參數。 沒有它,運算符只返回一個 output。 如果您想更好地了解操作符,請參閱DALI 手冊

經過 NVIDIA DALI 的一些研究和論壇討論后,得到了這個答案,請參閱問題/3503鏈接以獲得詳細的答案討論。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM