• Jetson Nano 部署(2):DeepStream介绍


    DeepStream介绍

    Nvidia视频分析栈

    在这里插入图片描述
    上图所示是Nvidia用于视频分析的软件栈:最上面的是Pytho API 以及C++ API为应用和服务提供相关接口,再下面面是DeepStream SDK ,再下面一层是CUDA-X包括CUDA、Tensor RT、Triton Inference Server、MultiMedia等用于加速的库 ,底下的是的计算平台比如JetsonT4等,也就是说上面的软件栈可以部署在Nvidia的硬件平台上,比如JetsonT4

    DeepStream 处理流程

    在这里插入图片描述
    上图是DeepStream视频处理流程,其实对于视频分析涉及到的处理还是非常多的。通过这幅图可以看到:

    • 视频流输入后,会进行capture捕获,然后对视频解码(Decode),然后进行图像的处理包括scale、dewarp、crop等,下面就是Batching在多视频流情况下进行批次化,然后送入神经网络进行检测、分类、分割等任务,需要视频跟踪的话也有Tracking模块,然后在屏幕上进行显示,最后将视频分析结果输出用来存储、显示、以及云端分析等。
    • 所以整个流程都让我们开发,工作量是非常大的,所以deepstream把很多模块都做好了,我们只要针对DNN(s)深度学习模块做适当处理,比如将深度学习模型训练的权重文件,转为相应的格式(如onnx,wts),然后转换为 tensorrt engine,然后就完成deepstream处理。对于Deepstream 中DNN(s)前面的模块或后面的模块可以不去处理,或者做很少一部分工作,这样我们对视频的分析和处理就变得非常方便了。

    在这里插入图片描述
    上图是deepstream处理的示例,我们由视频源所产生的视频流,经过解码、批处理然后做目标检测,需要的话可以加上跟踪器,后面可以加上(secondary classifer)第二次分类器,然后进行On Screen Display,处理完成后可以送到边缘进行计算存储显示也可以发送到云端。这样的话我们就可以做边缘计算并且还可以与云端进行交互。

    NvInfer 和 DeepStream

    在这里插入图片描述

    对于部署YOLOv5的话,我们需要用到DeepStreamTensorrt ,我们需要对DeepStream进行配置,并且对NvInfer也需要配置。在配置前,我们需要一个 Tensorrt 引擎文件,以及NMS相关的后处理模块。对于 Tensorrt 引擎文件,我们可以在别的平台比如自己的电脑上用GPU训练得到权重文件,然后在Jetson nano上编译生成 tensorrt engine,利用引擎文件和deepstream一起来进行视频流的加速分析。

  • 相关阅读:
    huggingface笔记: accelerate estimate-memory 命令
    05 - 雷达的发展与应用
    Kafka从入门到精通
    YOLOX backbone——CSPDarknet的实现
    【算法|动态规划No.20】leetcode416. 分割等和子集
    leetcode 58
    linux常用命令
    Linux 安装apache
    Linux系统编程(四)——signal信号处理
    C++ 编写时间类Time
  • 原文地址:https://blog.csdn.net/weixin_38346042/article/details/126401646