【问题标题】:gstreamer custom plugin for nvidia gpu用于 nvidia gpu 的 gstreamer 自定义插件
【发布时间】:2020-11-01 07:25:29
【问题描述】:

我想开发一个gstreamer插件,可以使用显卡(NVIDIA RTX2xxx)的GPU提供的加速。目标是拥有一个快速的 gstreamer 管道来处理视频流,其中包括自定义过滤器。

经过两天的谷歌搜索,我找不到任何示例或提示。

  1. 找到的最佳替代方法之一是使用“nvivafilter”,将 cuda 模块作为参数传递。但是,没有地方解释如何安装此插件或提供示例。最糟糕的是,它似乎可能特定于 Nvidia Jetson 硬件。

  2. 另一种选择似乎在 opencv python 脚本中使用 gstreamer。但这意味着我不知道如何影响性能的混合。

  3. 这个 gstreamer tutorial 讨论了几个库。但似乎过时了,没有提供细节。

  4. RidgeRun 似乎有类似于“nvivafilter”的东西,但不是 FOSS。

有任何关于如何进行的示例或建议。

【问题讨论】:

    标签: gpu gstreamer nvidia


    【解决方案1】:

    我建议您从安装 DS 5.0 开始,并探索提供的示例和应用程序。它建立在 Gstreamer 之上。 DeepstreamInstalation guide

    安装很简单。您会发现已构建的自定义解析器。 您将需要安装以下内容:Ubuntu 18.04GStreamer 1.14.1NVIDIA driver 440 或更高版本、CUDA 10.2TensorRT 7.0 或更高版本。

    以下是运行具有 4 个流的应用的示例。 deepstream-app -c /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

    DS 的优势在于所有视频管道都在 GPU 上进行了优化,包括解码和预处理。您始终可以仅在 opencv 旁边运行 Gstreamer,根据我的经验,这不是一个有效的实现。

    构建自定义解析器: 解析器需要将原始张量数据从推理转换为检测对象周围边界框的 (x,y) 位置。此后处理算法将根据检测架构而有所不同。 如果使用 Deepstream 4.0、Transfer Learning Toolkit 1.0 和 TensorRT 6.0:按照存储库中的说明进行操作 https://github.com/NVIDIA-AI-IOT/deepstream_4.x_apps

    如果使用 Deepstream 5.0、Transfer Learning Toolkit 2.0 和 TensorRT 7.0:继续遵循 https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps 的说明

    资源:

    1. 起始页:https://developer.nvidia.com/deepstream-sdk
    2. 深流下载及资源:https://developer.nvidia.com/deepstream-getting-started
    3. 快速入门手册:https://docs.nvidia.com/metropolis/deepstream/dev-guide/index.html
    4. 将 TLT 模型与 Deepstream SDK 集成:https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps
    5. 深流开发博客:https://devblogs.nvidia.com/building-iva-apps-using-deepstream-5.0/
    6. 插件手册:https://docs.nvidia.com/metropolis/deepstream/plugin-manual/index.html
    7. Deepstream 5.0 发行说明:https://docs.nvidia.com/metropolis/deepstream/DeepStream_5.0_Release_Notes.pdf
    8. Transfer Learning Toolkit v2.0 发行说明:https://docs.nvidia.com/metropolis/TLT/tlt-release-notes/index.html
    9. Transfer Learning Toolkit v2.0 入门指南:https://docs.nvidia.com/metropolis/TLT/tlt-getting-started-guide/index.html
    10. Metropolis 文档:https://docs.nvidia.com/metropolis/
    11. 张量RT:https://developer.nvidia.com/tensorrt
    12. TensorRT 文档:https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html
    13. TensorRT 开发博客:https://devblogs.nvidia.com/speeding-up-deep-learning-inference-using-tensorrt/
    14. TensorRT 开源软件:https://github.com/NVIDIA/TensorRT
    15. https://gstreamer.freedesktop.org/documentation/base/gstbasetransform.html?gi-language=cGood 运气。

    【讨论】:

    • 在您看来,是否可以将深度流用于自定义应用程序?例如:人脸识别这意味着我想使用解码多流和深度流的一个检测器进行人脸检测,但是对于人脸识别,深度流不支持任何模型来完成这项任务,我想知道我怎么能将面部记录系统集成到深度蒸汽中?我想得到深流的计数和坐标等输出,有可能吗?
    • 是的,你可以。大多数时候,您有两个级别的复杂性。您需要首先优化您的模型并转换为 TRT。如果它是一个受支持的模型,那么您将需要构建您的应用程序解析器。现在,如果不支持模型,您可能需要编写自己的插件并进行一些手术。在您的情况下,我建议本教程 (DetectNet) 包含 faceNet 预训练模型。另外我建议使用 DS Docker 容器,这样可以节省您的时间。 github.com/dusty-nv/jetson-inference/blob/master/docs/…
    • 非常感谢,我在jetson平台上测试了一些deep stream的例子和应用程序,但我的问题是,DS使用nvinfer插件来推断分类和检测和分割等模型。但是如果我想使用我的自定义网络,比如人脸识别,我的模型如何支持 DS 的 nvinfer?人脸记录方案不在 DS 和 nvinfer 插件中。如何支持人脸识别等自定义模型?我必须为我的模型添加白色自定义插件,比如 nvinfer?
    • 如果可能,请回答问题并查看 nvidia 表单中的链接:forums.developer.nvidia.com/t/some-question-about-deep-stream-5/…
    • 你是对的。如果不支持模型,您可能需要编写自己的插件。假设您有一个复杂的模型,trt 引擎构建将需要一些工作。然后编写自己的自定义解析器。你检查过这个吗? forums.developer.nvidia.com/t/face-detection-deepstream-sdk-4/…
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 2016-12-29
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多