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 处理流程

Jetson Nano 部署(2):DeepStream介绍_第1张图片
上图是DeepStream视频处理流程,其实对于视频分析涉及到的处理还是非常多的。通过这幅图可以看到:

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

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

NvInfer 和 DeepStream

Jetson Nano 部署(2):DeepStream介绍_第3张图片

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

你可能感兴趣的:(模型部署,深度学习,计算机视觉,人工智能)