技术标签: 人工智能 jetson agx xavier nvidia
这篇文章主要是结合官方文档,自己的实际验证来讲DeepStream到底是个啥,我开始写的时候我也不知道这是个啥,一步步探索,以一个菜鸟的看法来写这个,如有错误还望大家指点一下。然后所有的操作都是在TX2或Jetson AGX Xavier上完成的。
在英伟达的板子上,TX2、Xavier这些上面,建议是使用jetson sdk直接刷机,刷机的时候选择DeepStream一并刷入可以减少很多的工作量。参考链接:https://blog.csdn.net/weixin_42743099/article/details/107231462
放图 ↓ :DeepStream可以加速不同的模型,高效、实时分析来自相机、传感器、IoT网关等的数据。DeepStream的关键功能之一是边缘和云之间的安全双向通信(图示的Bi-Directional IoT Messaging,这部分我还没了解,挂个官方说明)。
第一排和最后一排比较好理解,第一排就是DeepStream支持Python,C/C++,最后一排就是适用于的几种平台。
来点官方点的说明:deepstream是nvidia官方推出的一个数据流处理工具包,可以很方便的实现对视频的解码、推理等工作,高效的完成图像分类、目标检测、识别和跟踪等任务。
deepstream是在gstreamer的基础上开发的,因此使用deepstream需要一定的c语言基础和gstreamer基础。deepstream可以看成是一个壳,里面集成了gstreamer和tensorrt等工具,我们可以使用deepstream完成视频的解码、传输、神经网络推理、结果的渲染等工作。
放图 ↓ :DeepStream-app是基于GStreamer的解决方案,它由封装了低级API的GStreamer插件集组成,以形成完整的图形。该参考应用程序具有接受来自各种来源(如摄像机,RTSP输入,编码文件输入)的输入的能力,并且还支持多流/源功能。由NVIDIA实现并作为DeepStream SDK的一部分提供的GStreamer插件列表包括:
Stream Muxer插件(Gst-nvstreammux)从多个输入源组成一批缓冲区。
基于NVIDIA TensorRT的插件(Gst-nvinfer)分别用于主要和次要(主要对象的属性分类)检测和分类。
基于OpenCV的跟踪器插件(Gst-nvtracker),用于具有唯一ID的对象跟踪。
Multi Stream Tiler插件(Gst-nvmultistreamtiler)用于形成2D帧数组。
屏幕显示(OSD)插件(Gst-nvdsosd)使用生成的元数据在合成框架上绘制阴影框,矩形和文本。
消息转换器(Gst-nvmsgconv)和消息代理(Gst-nvmsgbroker)插件结合使用,可以将分析数据发送到云中的服务器。
两步搞定
$ cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app
$ deepstream-app -c source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt //可以尝试运行不同配置文件
deepstream-app文件夹下主要配置文件的描述:(虽然有些官方标注了适用的板子,但是我试了一下感觉都可以用的)
2021.07.15 更新:xavier都可以使用,其他的谨慎,nano运行其他几个直接卡到死机
2021.07.15 更新:
1、DeepStream Sample App /sources/apps/sample_apps/deepstream-app
端到端示例演示了4级联神经网络(1个一级检测器和3个二级分类器)的多相机流,并显示平铺输出。
2、DeepStream Test 1 /sources/apps/sample_apps/deepstream-t
DeepStream Test 2 /sources/apps/sample_apps/deepstream-test2
简单的应用程序,建立在test1之上,显示额外的属性,如跟踪和二级分类属性。
3、DeepStream Test 3 /sources/apps/sample_apps/deepstream-test3
简单的应用程序,建立在test1的基础上,显示多个输入源和批处理使用nvstreammuxer。
4、DeepStream Test 4 /sources/apps/sample_apps/deepstream-test4
这是在Test1示例的基础上构建的,演示了“nvmsgconv”和“nvmsgbroker”插件在物联网连接管道中的使用。对于test4,用户必须修改kafka代理连接字符串才能成功连接。需要安装分析服务器docker之前运行test4。DeepStream分析文档有关于设置分析服务器的更多信息。
5、FasterRCNN Object Detector /sources/objectDetector_FasterRCNN
FasterRCNN物体探测器实例。
6、SSD Object Detector /sources/objectDetector_SSD
SSD目标探测器实例。
2021.07.15 更新:
在优化前先看看配置文件中的内容,文件中都是有备注的
文件中主要的几个信息,需要更改的地方前面都会有标注
[tiled-display] 视频输出
[source0] 视频输入,多路视频就多写几个source,即[source1]、[source2]…
[sink0] 屏幕
[sink1] 视频文件
[sink2] 媒体流
[primary-gie] 物体检测
[tracker] 物体追踪
设置上的优化,原来的配置文件上都是deepstream根据提供的几个demo写的配置,总结一下自己的学到的一些,可以用到自己的模型上。
配置文件位置,以四路1080p的为例子
//此路径下存放的就是demo的配置信息文件
cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app
sudo gedit source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
./prebuild.sh
如果上面这个方法不行的,可以直接去github上下载(yolo)。下载完后解压,在cfg文件夹下,用到的是yolov3.cfg和yoloc3-tiny.cfg。权重文件:
wget https://pjreddie.com/media/files/yolov3.weights
wget https://pjreddie.com/media/files/yolov3-tiny.weights
cd /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo
sudo gedit config_infer_primary_yoloV3.txt
//找到下面两处位置,更改配置和权重文件路径,就是上面个两个文件的路径
custom-network-config=
model-file=
Makefile更改CUDA版本,CUDA_VER=10.2
cd nvdsinfer_custom_impl_Yolo
sudo gedit Makefile
编译工程
cd /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo
make -C nvdsinfer_custom_impl_Yolo
运行例程
deepstream-app -c deepstream_app_config_yoloV3.txt
如果要运行tiny,按照上面的过程更改一下config_infer_primary_yoloV3_tiny.txt文件下的配置和权重文件的路径,编译后运行即可
放两张帧率图,在跑yolov3_tiny.weight的时候有60帧,但是在跑yolov3.weight的时候只有9帧,括号中的是五秒内的平均帧率
文章浏览阅读1.4k次。英特尔 以太网网络适配器 X722-DA2基本要素产品集700 系列网络适配器(高达 40GbE)状态Launched发行日期:Q4'18垂直市场:Server中等电缆:Copper布线类型:SFP+ Direct Attached Twinaxial Cabling up to 10m支架高度:Low Profile and Full Height支持的操作系统订购与规格信息Intel Et..._塔式服务器中的intel(r) ethernet connection x722 for 1gbe是网线接口吗
文章浏览阅读1k次。1.Docker启动命令介绍例:docker run -d --name myredis -p 6379:6379 redis 命令解析: run:运行容器 -d:表示后台运行,守护进程 --name [myredis]:自定义一个名称 //[中括号内的是自己写,且命令里面没有中括号] -p 6379:6379 容器里面的端口映射到外部电脑的端口2.Docker中..._bitnami etcd镜像地址
文章浏览阅读796次,点赞8次,收藏7次。【代码】git 使用场景 本地分支 关联 远程分支。
文章浏览阅读1.2k次。全局搜索compress.drop_console(一般在config文件中),设置为false,再重新打开小程序即可。_微信小游戏 真机调试 无法打印任何log
文章浏览阅读9.2k次,点赞19次,收藏83次。使用vue 实现前后端数据的交互创建vue工程创建ssm项目结果创建vue工程一.创建webpack骨架类型的vue项目格式参考如下:二.npm操作:安装vue-router:npm install vue-router --save-dev安装element-ui:npm i element-ui -S安装SAss加载器:npm install sass-loader node-sass --save-dev安装axios:npm install --save axios vu_ssmvue前后端怎么连接
文章浏览阅读924次。confluent是平台化的工具,封装了kafka,让我们可以更方便的安装和使用监控kafka,作用类似于CDH对于Hadoop。confluent是由LinkedIn开发出的团队成员,基于这项技术创立了新公司ConfluentConfluent的产品也是围绕着Kafka做的。_windows 安装 sasl
文章浏览阅读6k次。在页面布局时,经常需要在页面中插入图片,那你知道如何在HTML中添加图片吗?这篇文章就给大家介绍HTML页面中插入图片的三种方法,感兴趣的朋友可以参考一下,希望对你有所帮助。方法一、用HTML中的img标签添加图片最简单,最常用的就是直接使用img标签,并且可以根据需要设置图片的大小,代码如下: 效果图:方法二、用JavaScript创建一个img元素来导入图片先创建一个img元素,再设置这个i..._html图片插入标签
文章浏览阅读1.3k次。1.行删除后回滚中间表exchange partition这种按月分区吧2.system的buffer cache2.索引读取次数i/o出问题指标等待事件oracle知道的,主动登记的 i./o network等待事件表gdbkslwtbctx kslwait 等待任务利用sid 找错误 spid..._相克军
文章浏览阅读908次。DescriptionAlice和Bob,哦不,CZL和YYY在玩一个游戏。桌上有n张牌,每张牌对两人各有一个诱惑值,和它自己的价值。CZL先手,每次操作方喊出一个值X,然后把桌上剩下的对他诱惑值<=X的牌全部收走(至少一张),并获得其的价值。 求CZL的最大得分。Solution博弈,倒着DP。 首先把诱惑值离散化。 设Fi,j表示CZL喊到i,YYY喊道j,CZL的最大收益;Gi,j表示Y
文章浏览阅读725次,点赞9次,收藏9次。页面缓存保留用户输入数据不丢失_jeecgboot 页面切换不要刷新数据
文章浏览阅读6.4k次,点赞3次,收藏8次。在向pom.xml 文件中添加依赖之前需要先添加spring-boot-starter-parent。springboot-starter- parent主要提供了如下默认配置: .Java版本默认使用1.8.编码格式默认使用 UTF-8.提供Dependency Management进行项目依赖的版本管理。默认的资源过滤与插件配置。spring-boot-starter-paren..._pom多个parent
文章浏览阅读3.4k次。Ilog JRules是最有名的商用BRMS;Drools是最活跃的开源规则引擎;Jess是Clips的java实现,就如JRuby之于Ruby,是AI系的代表;Visual Rules(旗正规则引擎)国内商业规则引擎品牌。今天对比了一下这四个颇有代表性的规则引擎的规则语言。其中Ilog和visual rules是商业产品,没有机会实战。1.一样的If--Then 句式与Rete引擎四者都邑..._规则引擎 python