专栏名称: NVIDIA企业开发者社区
NVIDIA 英伟达开发者社区是NVIDIA GPU开发者交流平台,通过此平台可第一时间获取NVIDIA GPU 开发相关的新产品、新工具、线上/线下活动的资讯。
目录
相关文章推荐
南方能源观察  ·  国家能源局印发《2025年能源工作指导意见》 ·  23 小时前  
南方能源观察  ·  监管趋严:电力市场开出160万罚单 ·  23 小时前  
南方能源观察  ·  源网荷储一体化热度再起 ·  2 天前  
南方能源观察  ·  央企接入DeepSeek潮,能源“AI+”提速 ·  3 天前  
51好读  ›  专栏  ›  NVIDIA企业开发者社区

NVIDIA Jetson Nano 2GB 系列文章(29): DeepStream 目标追踪功能

NVIDIA企业开发者社区  · 公众号  ·  · 2021-11-26 10:26

正文

在计算机视觉的应用中,“识别”只是一个相当入门的技术,相信很多人在执行深度学习推理应用中,经常产生的质疑就是“ 识别出的类别,有什么用途呢 ”?


确认每一帧图像中有多少个我们想要识别的种类,以及他们在图像中的位置,只是整个应用的第一步而已,如果缺乏“ 目标追踪(tracking) ”的能力,就很难提供视频分析的基础功能。

在标准 OpenCV 体系里有 8 种主流的目标追踪算法,有兴趣的可以在网上搜索并自行研究。

算法的基本逻辑就是需要对视频的相邻帧进行“类别”与“位置”的比对,因此这部分的计算还是相当消耗计算资源的,也就是当视频分析软件“开启”目标追踪功能时,其识别性能必定有所下降,大家必须先有这样的认知。

DeepStream 的定位就是针对“视频分析”的应用,因此“目标追踪”是其最基本的功能之一。

在前面使用的 myNano.txt 配置文件中,只需要调整一个设定值就能开启或关闭这个追踪功能,非常简单。

DeepStream 支持 IOU、KLT 与 NVDCF 三种目标追踪算法(如下图),其中 IOU 的性能最好,在 Jetson Nano 2GB 上的总体大约能到 200FPS;NVDCF 的精确度最高,但目前性能大约只能到 56FPS;KLT 算法目前在性能与精确度的平衡比较好,总体性也能到 160FPS,因此通常都选择 KLT 追踪器做演示。



算法的细节不多做解释,请自行寻找相关技术文件学习,这里就直接进入实验的过程。还是以前一篇文章中的 myNano.txt 配置文件为主,如果不知道的话,就用 source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt 复制一份出来就可以,透过修改里面的参数,让大家体验一下 DeepStream 目标追踪的功能。


1

目标追踪功能的开关




在 myNano.txt 最下方,可以看到 [tracker] 的设定组,下面有个“ enable=1 ”的参数,就是目标追踪的功能。


现在先执行一次启动追踪功能,如下图可以看到每个识别出的物件除了类别、标框之外,旁边还有个编号, 这个编号会一直跟着该物件 ,这样就形成“追踪”的功能。



此时的识别性能如下图,总性能(8 个数字相加)大约 160FPS。



如果将 [trakcer] 下面改成 “enable=0”,再执行看看结果如何?下图中能识别出物件的类别与标框位置,但是已经没有编号。



关闭追踪功能之后的识别性能如下图,总识别性能可以达到 250FPS 左右。



2

切换追踪器




前面说过,目前 DeepStream 5.0 支持三种追踪器,那么要如何选择呢?同样在[tracker]参数组下方,有这样的三行参数:


#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_mot_iou.so

#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_nvdcf.so

ll-lib-file=/opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_mot_klt.so


前面加上 “#” 号的就是处于关闭的状况,请先将 [tracker] 切回 “ enable=1 ” 的开启状态,接下来请自行加减“#”的位置以切换追踪器的选择,分别测试这三个追踪器的不同之处,包括识别性能与追踪能力。


这部分必须直接在视频中体验,因此就不截屏显示。测试结果可以感受到 IOU 追踪器的性能最好,可达到 200FPS 左右,但是同一物件的编号并不是太稳定,而 NVDCF 追踪器的编号最为稳定,但性能大概只有 IOU 的 1/4,最多只能承受 2 路视频的实时分析。


KLT 算法总体性能可达到 160FPS,可以支持到8路以内的实时识别,追踪能力也比 IOU 好不少,不过这个算法对 CPU 的占用率比较高,是这个算法的主要缺点。该如何选择需要看实际的场景与计算设备的资源而定。


3

获取追踪数据




前面打开目标追踪功能的目的,并不只是为了在显示器上看看而已,而是用这些数据做更有价值的应用,而这些数据要从什么地方得到呢?通常都需要透过 Python 或 C++从 DeepStream 提供的接口去获取。


这里提供一个无需了解 DeepStream 接口就能获取目标追踪数据的方法,只要我们在 myNano.txt 里面的 [application] 参数组,添加一条 “ kitti-track-output-dir= ”的路径指向就可以,这里假设要将数据存入“/home/nvidia/track” 路径下,在 myNano.txt 里添加一行参数即可:


[application]







请到「今天看啥」查看全文


推荐文章
南方能源观察  ·  国家能源局印发《2025年能源工作指导意见》
23 小时前
南方能源观察  ·  监管趋严:电力市场开出160万罚单
23 小时前
南方能源观察  ·  源网荷储一体化热度再起
2 天前
南方能源观察  ·  央企接入DeepSeek潮,能源“AI+”提速
3 天前
知乎日报  ·  小事 | 为什么流浪
7 年前
中国好文章  ·  感动世界的10首歌曲,每一首都是经典
7 年前