随着自动化设备、电力调度和配网自动化等系统的发展。国家电网通过对变电站的升级,无人值守变电站已经成为常态。基于嵌入式工控机的电力巡检机器人,已经能够完成大多数的重复性巡检作业,包括各类仪表的读数抄录、状态标志检查、刀闸分合状态检查、设备红外测温、线圈类设备运行噪声监测等。
同时具备3D激光导航、高清视频监控、智能红外测温、自主充电等功能,具备多方式建图、自由路径规划、对温湿度快速监测、快速采集图像、配套专业智能管控平台等优势,适用于变电站、核电站、大型园区、燃气化工厂、矿区等场所。在嵌入式工控机上运行视频处理类模型,会使用到的就是deepstream。如何使用deepstream,NVIDIA提供了官方的示例,deepstream-app。
01
什么是deepstream-app?
安装完deepstream框架,会在系统执行目录内有可执行文件,文件名字是deepstream-app。这是一个可执行脚本文件,通过deepstream框架中的代码在安装的时候编译后install到系统根目录内。此脚本文件可以通过终端命令行使用,使用的同时必须使用txt文本文件作为配置文件。此脚本可以通过txt配置一个deepstream管道,管道中的视频源可以通过txt文本设置为各种输入,包括但不限于本地视频文件,网络上的rtsp推流等等。管道中的堆叠,一级、二级推理、跟踪、OSD等也可以通过txt文本文件进行相当简单快速的配置。
这个deepstream-app程序是安装deepstream的时候就已经编译好安装在系统里,可以在任意位置的命令终端进行调用。App分为deepstream-app和deepstream-test5-app两种。两者功能上的差别就是tset5支持类型设置为6的sink,也就是向kafka服务器收发数据的组件。其余二者大致相同。
02
deepstream-app有什么用?
deepstream-app脚本存在主要有两大作用。
一是用于工程快速验证性开发。因为deepstream-app是一个通过文本文件就能配置的管道,因此可以进行深度学习网络性能和设备硬件性能的快速测试。譬如要部署一个网络到Jetson上面,需要实时处理8路视频,为了快速验证可行性,可通过deepstream-app脚本装载到简单管道里做一下压力测试。这样可以快速验证项目可行性。
其次,deepstream-app可以验证网络性能瓶颈和辅助排除Bug。通过deepstream-app配置一个多路视频同时输入的管道,检测其卡顿推理的情况。如果deepstream-app都没问题,就需要排查代码部分。
03
deepstream-app怎么用?
deepstream-app的用法非常简洁。即脚本+配置文件。具体写法如下所示:
deepstream-app -c 配置文件.txt
脚本会自动解析配置文件里面的内容然后组成管道。以下是对配置一些重要参数的讲解。
[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=rtsp://admin:HuaWei123@113.128.197.19:54388/LiveMedia/ch1/Media1
#uri=file:///home/jetson/vedio/1.mp4 本地视频文件
num-sources=1
gpu-id=0
cudadec-memtype=0
source是deepstream的输入源,可以在这个组件进行视频流输入的配置。enable不用说了还是一个使能设置,0则关闭1则开启。type类型是告诉deepstream-app大概是什么类型的输入,1是V4L2也就是linux硬件设备树上面的摄像头,2是网络URI,3是万能设置,比2更好,可以读取本地文件。4是指定的RTSP视频流。
然后是Uri链接,如果是网络连接或者是ip摄像头,直接把rtsp地址copy过来即可。
[streammux]
##Boolean property to inform muxer that sources are live
live-source=0
batch-size=1
##time out in usec, to wait after the first buffer is available
##to push the batch even if the complete batch is not formed
batched-push-timeout=40000
## Set muxer output width and height
width=1920
height=1080
## If set to TRUE, system timestamp will be attached as ntp timestamp
## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached
# attach-sys-ts-as-ntp=1
Streammux插件是deepstream的混流插件,比如你输入是30路视频流,需要通过Streammux插件将视频流混流到一起,组成一个视频流。这里需要注意的是batch-size改成了1,还有输入输出的尺寸需要设计好。
[primary-gie]
enable=1
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
gie-unique-id=1
config-file=./Models/config.txt
primary-gie插件就是我们需要用到的推理插件,这个插件在deepstream-app的txt配置文件中需要写的东西不多,上面的几个参数分别是使能,bbox框颜色,bbox框是否生成唯一id。网络推理的相关参数都在这个config-file文本内。
04
效果展示
验证平台:Jetson Nano 8GB、deeepstream 6.1.1
05
相关资料
上面也是一些主要的步骤,如果在使用中遇到任何问题可以联系我们协助解决。同时我们能按照您的需求,定制化嵌入式工控机设备。例如:
容天AIX115:
l 预装Xavier NX核心模组(8GB/16GB可选)
l 可选256GB、512GB、1TB NVMe SSD 扩展存储
l 支持上电自动开机
l 改良的散热设计
l 产品尺寸:190mm×160mm×76.3mm(H*W*D)