官方文档
最近工作需要用到deepstream,陆陆续续看了一些文章,这里写一点点自己对于deepstream的理解,以及简单的上手操作指南。
deepstream是英伟达专门为视频流的AI处理推出的一个框架,其实主要面向的是工业化应用,特别是监控摄像头。 deepstream的前身其实是gstreamer,是一个专门处理视频流的框架(这里我们可以将视频流理解为一切流式文件),简单来说,就是gstreamer构建了一个管道,数据在管道内流动,他有丰富的插件(比如解码器、数据格式转换等)将一段段管道连接起来。而gstreamer就是在这个基础上加入了很多和AI相关的插件(比如nvinfer推理用,nvtracker跟踪用)。
因为这个框架可以很方便的处理视频流,效率也很高,可以接入很多路摄像头进行ai推理,而且他也有很多方便的特性,比如支持二级模型,可以先目标检测之后再进行一个图像分类,还有很多现成的tracker插件,不需要重复造轮子。但是整个框架对于没有流媒体处理开发经验的同学来说上手难度还是有一点高,可以从python-api入门,正式部署再使用c-api,正式入门之后,整个开发效率还是极高的。可以很方便的用在安防、零售、工业质检、环境监控方面做项目落地
官方文档
jetson边缘设备安装部署略有不同,注意参考文档
推荐使用docker安装,很方便,前提是安装好nvidia-docker
docker pull nvcr.io/nvidia/deepstream:5.0.1-20.09-triton
docker run --gpus all -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY nvcr.io/nvidia/deepstream:5.0.1-20.09-triton
注意调整 --rm -v -p 等参数;
cd /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app
deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display_int8.txt
正常会显示30路的视频,在实时做目标检测
官方文档
deepstream-app是一个快速构建程序的工具,基于gstreamer的特性。简单来说,deepstream就是一个由很多插件粘合而成的管道,构建这个管道有两种方式,一个是使用deepstream-app,一个是用c-api,python-api自己撸代码。自己撸代码的好处是可以进行一些深度定制,很灵活,而使用deepstream-app就只能使用官方的流程进行拼接,但是用来快速验证是没有问题的。
deepstream-app 核心就是读一个config文件,这个文件中你可以按照顺序写上你想用那些插件,还有配置这些插件的参数,然后deepstream-app就会根据这个config文件自动构筑起一个管道,就可以对视频进行处理了,这里有很多官方的demo,使用deepstream-app -c + config就可以跑起来
cd /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app
deepstream-app -c your_config.txt
官方文档很详细,可以跟着构建一下试一试,配合nvidia-tlt可以快速上手
这里demo1和demo2 已经有很多了,在这里整理一下,感谢这几位提前踩坑的大佬.(就demo来看,deepstream4.0和5.0几乎没有区别)