赞
踩
关于视频分析:
格灵深瞳
千视通
NVIDIA Deepstream 目前5.0已经发布。
应用场景
多视频分析
可以在边缘和云端灵活部署。
获取模型
集成了Nvidia的迁移学习工具包(TLT),您可以使用TLT为您的应用程序训练预训练模型并在deepStream上部署。
视频分析流程:
媒体服务器模块:
设计一个视频分析服务通常要涉及4个模块
如果将上述过程用gstreamer设计并表达出来,可以参考下面代码
v4l2src device=/dev/video1 ! video/x-raw,width=640,height=480 ! videoconvert ! video/x-raw,format=I420,width=640,height=480 ! queue ! tee name=camera0 \
nvarguscamerasrc ! nvvidconv ! video/x-raw,format=I420,width=640,height=480 ! queue ! tee name=camera1 \
camera0. ! video/x-raw,format=I420,width=640,height=480 ! nvvideoconvert ! video/x-raw(memory:NVMM),format=NV12,width=640,height=480 ! nvstreammux0.sink_0 \
camera0. ! video/x-raw,format=I420,width=640,height=480 ! nvvideoconvert ! video/x-raw(memory:NVMM),format=NV12,width=640,height=480 ! nvstreammux0.sink_1 \
camera1. ! video/x-raw,format=I420,width=640,height=480 ! nvvideoconvert ! video/x-raw(memory:NVMM),format=NV12,width=640,height=480 ! nvstreammux0.sink_2 \
camera1. ! video/x-raw,format=I420,width=640,height=480 ! nvvideoconvert ! video/x-raw(memory:NVMM),format=NV12,width=640,height=480 ! nvstreammux0.sink_3 \
nvstreammux name=nvstreammux0 batch-size=4 batched-push-timeout=40000 width=640 height=480 ! queue ! nvinfer batch-size=4 config-file-path=deepstream-models/config_infer_primary_4_cameras.txt ! queue ! nvtracker ll-lib-file=deepstream-models/libnvds_mot_klt.so enable-batch-process=true ! queue ! nvmultistreamtiler width=640 height=480 rows=2 columns=2 ! nvvideoconvert ! nvdsosd ! queue ! tee name=deep \
deep. ! nvvideoconvert ! nvv4l2h264enc insert-sps-pps=true iframeinterval=10 ! tee name=h264 \
deep. ! nvvideoconvert ! nvv4l2h265enc insert-sps-pps=true iframeinterval=10 ! tee name=h265 \
deep. ! nvvideoconvert ! nvv4l2vp9enc ! tee name=vp9 \
deep. ! nvvideoconvert ! video/x-raw,width=640,height=480 ! nvjpegenc ! tee name=jpeg \
h264. ! h264parse ! matroskamux ! filesink name=file location=test-h264-0.mkv \
h265. ! h265parse ! matroskamux ! filesink name=file location=test-h265-0.mkv \
vp9. ! matroskamux ! filesink name=file location=test-vp9-0.mkv \
jpeg. ! filesink name=file location=test-snapshot0.jpg
可以看出,这种方式难于理解,不易控制、更改。有很多弊端。解决视频流的分析有两个重点
模块内部连接
上述内容可以用下图表示模块的内部连接情况。
模块控制
媒体服务器的一个理想特性是能够在一定程度上控制不同视频流的状态和属性。
下图显示了使用GstD(RidgeRun的开源项目,处理GStreamer框架的多线程Linux守护进程)实现的媒体服务器如何通过进程间通信(IPC),进而被其他进程轻松控制。
Deepstream是基于GStreamer设计的,将很多功能抽象出插件,使得插件的插拔更快捷方便,体现出即插即用理念。
Deepstream是一个流分析工具包,由各种硬件加速插件组成,可为任何计算机视觉和I VA应用程序提供最高吞吐量。配置方面,开发者可以利用NVIDIA容器runtime来配置自己的Deepatream应用。NVIDIA docter runtime可以启用GPU。整个应用都可以在一个Docker Contrainer里面打包。另外NVIDIA还提供了reference application和 orchestration recipes可以帮助你启动任何创意项目。最后就是跟云相连,DeepStream支持使用Azure lOT运行时与Microsoft Azure lOT云通信。这允许与云的无缝连接来运行分析和管理设备。
这是应用级别的整个deepsteam软件堆栈。
NVIDIA开源了几个主要的插件源代码。这为开发人员提供了更大的灵活性和控制性。 目前正在开源的是推理、解码和消息插件。
基于开源Gstreamer平台的即插即用架构。这使得开发人员不仅可以灵活地使用NVIDIA自带的插件,还可以使用其他开源插件或创建自己的插件并在管道中使用它。
下图是deepstream SDK中包含的插件列表。
第一个是NVIDIA4linux2,视频和图像解码和编码插件。
第二个是nvinfer,这是一个推理插件,在各种推理加速器上使用tensorRT,这样就可以对目标检测图像进行分类和分割.
第三个是nvtracker,部署几个参考跟踪器,比如KLT、IOU和NvDCF
第四是nvmsgbroker,这允许使用各种协议向云发送消息。
有关如何使用此插件的更多信息,请参考文档中的Plugins菜单。
Deepstream的开发可以基于GPU,也可以基于Jetson。Jetson可以理解为微型主机,它占用空间小,就一块板子大小,如图。
使用Jetson,可以做很多嵌入式应用。例如将视频分析集成到安全帽内。使得视频分析不再必须跑在大型服务器或主机上,大大地扩大应用范围。
且听下回分说~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。