Deepstream 资料阅读记录

NVIDIA DeepStream是一个用于构建和部署智能视频分析应用的SDK,提供跨平台的框架,尤其优化了视频解码、模型推理速度和低功耗性能。它在多路视频和多传感器输入情况下表现出色,整合了NVIDIA的CUDA、TensorRT等工具,支持端到端的视频分析系统,包括数据源获取、解码、预处理、推理和可视化。DeepStream适用于零售、停车管理等场景,虽闭源但提供了部分开源插件,并支持直接运行TF/PyTorch模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言

  • 官方文档

  • 其他参考资料

  • 后续会跑一个例子,看了解下细节

  • 一句话总结:Deepstream 提供了智能视频分析系统的端到端解决方案。

  • 如何理解“端到端”:

    • 包含了视频分析系统的所有功能
    • 包括读取数据源、视频解码、图像预处理、模型推理、预测结果可视化、结果后处理,以及云端与边缘端的可靠通信。
  • 主要做了什么工作:提高系统的吞吐量。

    • 上面每一步操作都尽量使用 GPU 资源并行计算,提高资源利用率。
    • Deepstream 的主要优势体现在多路视频、多传感器输入的情况下,提高资源利用率。
  • 开发流程:提供了许多C++/Python apps,基本上就是在原有的项目中进行增减。这一部分还没有具体调研,需要后续用实例来证明。

  • 主要缺点:闭源,只能用在Jetson、Tesla设备上。

1 DeepStream: Next-Generation Video Analytics for Smart Cities

  • 链接翻译
  • 内容概述:介绍性质的BLOG
  • Deepstreeam 提供了基于深度学习的视频分析解决方案。
    • NVIDIA Metropolis 的一部分
    • 主要优化方向是:视频解码速度、模型推理速度、低功耗。
    • 主要解决的问题是 scale(同时处理多路视频),在于如何通过经济高效的方式扩展已有的应用。

The key to realizing the potential of video analytics is building applications that scale in a cost-effective manner.

  • Deepstream提供的Workflop
    • 总体流程就是或去数据源数据、视频解码、预处理、模型推理、其他更多操作。
    • 视频解码使用了 NVIDIA Video Codec SDK
    • 数据预处理主要就是色彩转换、resize等,通过custom CUDA kernels and NVIDIA Performance Primitives实现
    • 模型推理通过 TensorRT 实现

img

  • 目标检测实例

img

2 DeepStream SDK

  • 链接
  • 基本内容:整体介绍了Deepstream
  • DeepStream 是为了构建、部署视频智能分析应用与服务,提供跨平台、可扩展的部署框架。

Build and deploy AI-powered Intelligent Video Analytics apps and services. DeepStream offers a multi-platform scalable framework with TLS security to deploy on the edge and connect to any cloud.

  • Deepstream 在整体系统中的定位如下图所示
    • 整合NVidia的各类工具(如Cuda/TensorRT/Triton/视频解码等),提高英伟达设备(Jetson、Tesla)的资源利用率。

img

  • 性能如何
    • 这里是 end-to-end 的性能,包括了视频解码等。
    • 输入视频是 1080p + 30fps
    • batch size 是 FPS/30
    • Nano和TX2是FP16

image-20210701173813808

  • Deepstream 的优势

    • Seamless Development:无缝部署,不知道想表达什么意思

    • Managed IVA Apps & Services:管理、控制视频监控系统,

    • Powerful End-to-End AI Solutions:可以较快上手,而且是部署相关全套的工具都有

  • FAQ

    • Deepstream 是闭源的,但开源了部分插件
    • 主要应用于多路视频、多传感器数据分析,如零售场景、停车管理等。
    • 可通过Triton 直接运行TF/PyTorch模型。
    • 内置了一些常用模型,如SSD/YOLO等。

3. DeepStream Getting Started

  • 链接
  • 主要内容:罗列了 Deepstream 相关官方资料
  • 罗列的内容包括
    • SDK下载链接
    • 各种官方app(相关Github链接)
    • 文档、论坛地址

4. NVIDIA DeepStream SDK Developer Guide

  • 链接
  • 这应该是后续学习deepstream的主要资料。
  • 主要内容可分为
    • DeepStream Getting Started:包括简介、下载与安装、Docker容器等相关信息
    • DeepStream Samples:总结了官方源码资料
    • TLT Integration with DeepStream:迁移学习相关,TLT就是 Transfoer learning toolkit
    • Tutorials and How-to’s:NvDCF(跟踪算法)参数微调教程,自定义 yolo 教程(只支持yolov3)
    • DeepStream Performance:性能概述
    • DeepStream Custom Model:如何使用自定义模型(而不是内置的)
    • DeepStream Key Features:
      • Smart Video Record
      • IoT 中的通信问题
      • 在线模型升级
      • 为每一帧设置 NTP Timestamp
    • DeepStream Application Migration:从DS4.x迁移到DS5.x的方法
    • Plugins Development Guide:介绍了一堆插件
### NVIDIA Tegra 平台上的 TensorRT 安装与使用 #### 一、TensorRT 的基本概念 TensorRT 是一种高性能深度学习推理库,专为优化和加速 AI 推理而设计。它能够显著提升模型的运行效率并降低延迟时间[^1]。 --- #### 二、Tegra 平台上 TensorRT 的安装方法 ##### 1. 使用 DeepStream SDK 提供的基础容器环境 DeepStream SDK 基于 L4T (Linux For Tegra),提供了预构建的 Docker 镜像来简化开发流程。通过这些镜像可以直接获取到支持 TensorRT 的环境设置[^2]。 - **启动基础镜像** ```bash docker run --gpus all --name=jetson_test \ --privileged --ipc=host -p 23222:22 -p 34389:3389 \ -itd -v /data/yzm_iavs/:/data/yzm_iavs \ nvcr.io/nvidia/deepstream-l4t:5.0.1-20.09-samples /bin/bash ``` 上述命令会拉取一个包含最新版本 TensorRT 和其他必要工具链的官方镜像,并挂载指定目录用于数据交换。 - **更换国内源地址(可选)** 如果遇到网络连接问题,则可以替换默认仓库位置至更稳定的服务器节点上完成同步操作: ```bash sed -i 's|http://deb.debian.org|https://mirrors.tuna.tsinghua.edu.cn|' /etc/apt/sources.list.d/nvidia-l4t-apt-source.list && apt-get update ``` --- ##### 2. 手动编译安装方式 对于某些特殊需求场景下可能需要自行下载源码包重新定制化生成适合目标硬件架构下的动态链接库文件(.so)[^1]: - 下载对应分支标签号所对应的 tar.gz 归档压缩文档; ```bash wget https://developer.nvidia.com/tensorrt/download -O tensorrt.tar.gz tar xfz tensorrt.tar.gz cd TensorRT-<version> make install DESTDIR=/usr/local/ ldconfig ``` 注意此过程依赖多个第三方组件如 cuDNN 等均需提前准备好相应版本匹配关系表以便顺利执行完毕整个环节工作流. --- #### 三、C++ 中调用 TensorRT 实现 YOLOv5 加速案例分析 以下是基于 C++ 编写的简单示例程序框架结构图解: ```cpp #include "NvInfer.h" // ... other includes ... int main() { // 创建 Logger 对象实例记录日志消息输出控制台窗口显示状态信息给开发者查看调试方便快捷直观明了易懂好理解掌握起来相对容易很多哦亲们😊 nvinfer1::ILogger logger; // 构建 Builder 类型指针变量指向实际内存空间分配区域大小范围内的对象实体存在形式表现出来供大家共同探讨研究学习进步成长成才之路越走越宽广无限美好未来等着我们一起去探索发现创造奇迹呢😄 auto builder = std::unique_ptr<nvinfer1::IBuilder>(nvinfer1::createInferBuilder(logger)); // 设置最大批处理数量参数值以及精度模式选项开关标志位决定最终效果呈现出来的样子风格各异各有千秋值得尝试一番哟😉 const int batchSize = 1; builder->setMaxBatchSize(batchSize); builder->setMinPrecisionMode(nvinfer1::DataType::kHALF); // 添加输入张量描述定义形状维度顺序排列规则等内容细节部分非常关键重要务必认真对待仔细阅读相关资料文献书籍教程视频课程等等资源材料充分吸收消化转化为自己的知识体系加以运用实践检验真理标准唯一途径就是行动起来了💪 nvinfer1::INetworkDefinition* network = builder->createNetworkV2(0U); nvinfer1::ITensor* data = network->addInput("input", nvinfer1::DataType::kFLOAT, {batchSize, 3, INPUT_H, INPUT_W}); // 导入 ONNX 文件解析转换成为内部表示形式便于后续进一步加工改造升级换代创新突破自我超越极限挑战不可能变成可能实现质变飞跃发展成就辉煌伟业梦想照进现实光芒万丈照亮前行道路方向指引灯塔永不熄灭永恒闪耀璀璨星空之中🎉✨ onnxParser::IParser* parser = onnxParser::createParser(*network, logger); bool success = parser->parseFromFile(onnxModelPath.c_str(), static_cast<int>(verbosity)); delete parser; // 序列化保存引擎文件加快下次加载速度减少重复计算浪费宝贵时间精力成本投入产出比最大化原则始终牢记心中践行不渝坚定不移动摇信念追求卓越品质至上服务客户满意为止宗旨使命担当责任重于泰山压力越大动力越足勇往直前无惧风雨彩虹终会出现天空尽头等待着拥抱胜利果实甜蜜滋味享受其中乐趣无穷尽也😎🌈 nvinfer1::ICudaEngine* engine = builder->buildCudaEngine(*network); serializeAndSaveEngine(engine,"yolov5.engine"); return 0; } ``` 以上代码片段展示了如何利用 TensorRT API 来创建神经网络模型并将其序列化存储下来以备将来快速恢复使用的典型应用场景之一。 --- #### 四、常见注意事项 - 确保主机端已正确安装 CUDA 工具集及其驱动程序版本满足最低兼容性要求。 - 如果计划跨不同设备之间迁移部署解决方案的话还需要额外考虑 ABI(Application Binary Interface)一致性保障措施防止潜在冲突隐患发生影响正常使用体验满意度下降等问题出现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值