前面已经介绍过关于 DeepStream 各种输入源的使用方式,而且 Jetson Nano 2GB 上开启 4 路输入(两个摄像头+两个视频文件),都能得到 25FPS 以上的实时性能,但毕竟“单一检测器(detector)”检测出来的物件是离散型的内容,例如车、人、脚踏车这些各自独立的信息。有没有什么方法能够实现“组合信息”呢?例如“黑色/大众/SUV 车”!
DeepStream 有一个非常强大的功能,就是多模型组合检测的功能,以一个主(Primary)推理引擎(GIE:GPU Inference Engine)去带着多个次(Secondary)推理引擎,就能实现前面所说的功能。
本实验在 Jetson Nano 2GB 上,执行 4 种模型的组合检测功能,能将检测到的车辆再往下区分颜色、厂牌、车种等进一步信息,在 4 路输入视频状态下能得到 20+FPS 性能,并且我们将显示的信息做中文化处理(如下图)。
nvidia@nano2g-jp450:/opt/nvidia/deepstream/deepstream/samples/models$ ls -l 总用量 24 drwxrwxrwx 2 root root 4096 7月 13 23:49 Primary_Detector drwxrwxrwx 2 root root 4096 7月 13 22:45 Primary_Detector_Nano drwxrwxrwx 2 root root 4096 2月 8 21:50 Secondary_CarColor drwxrwxrwx 2 root root 4096 2月 8 21:50 Secondary_CarMake drwxrwxrwx 2 root root 4096 2月 8 21:50 Secondary_VehicleTypes drwxrwxrwx 4 root root 4096 2月 8 21:49 Segmentation |
简单说明一下每个目录所代表的的意义
组成结构也十分简单,其中主(Primary)检测器只有一个,而且必须有一个,否则 DeepStream 无法进行推理识别。次(Secondary)检测器可以有好几个,这里的范例就是针对“Car”这个类别,再添加“Color”、“Maker”、“Type”这三类元素,就能获取视频图像中物件的更完整信息。
在 Jetson Nano 的
/opt/nvidia/deepstream/deepstream/samples/config/deepstream-app 下面的 source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt,就已经把这个组合检测器的配置调试好,现在直接执行以下指令:
cd/opt/nvidia/deepstream/deepstream/samples/config/deepstream-app deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt |
现在看到启动四个视频窗,但是每个视窗的执行性能只有 8FPS,总性能大约 32FPS,并不是太理想。
接下来看看怎么优化这个配置文件
(1) model-engine-file路径的“Primary_Detector”部分改成“Primary_Detector_Nano”
(2) config-file 的文件改成 config_infer_primary_nano.txt
因为 Jetson Nano(含2GB)并不支持 int8 计算精度,因此还需要做以下修改:
(3) 将“_b4_gpu0_int8.engine”改成“_b8_gpu0_fp16.engine”
(4) 将所有“xx_gpu0_int8.engine”改成“xx_gpu0_fp16.engine”
3. 将追踪器从原本的 ibnvds_mot_klt.so 改成 libnvds_mot_iou.so,用“#”变更注释的位置就可以。
修改完后重新执行,可以看到每个窗口的检测性能提升到 10~12FPS,总性能提升到 40~48FPS,比原本提升12~50%,不过距离理想中的 25FPS 还有很大的差距。
执行过程中如果遇到“Theremay be a timestamping problem, or this computer is too slow.”这样的信息,就把[sink0]下面的“sync=”设定值改为“0”就可以。
现在看看是否还有什么可调整的空间?参考前一篇文章“DeepStream-04:Jetson Nano 摄像头实时性能”所提到的,将[primary-gie]下面的“interval=”设定为“1”,然后再执行应用时,发现每个输入源的识别性能立即提升到 20FPS 左右(如下图),总性能已经能到 80FPS 左右,比最初的 32FPS 提升大约 2.5倍,这已经很接近实时识别的性能。
好了,在Jetson Nano 2GB 上已经能达到接近实时推理的性能,是相当好的状态。
如果对于显示输出的状态有些不满意的话,我们按照下面的步骤去执行,将“英文”类别名改成“中文”,并且将边框变粗、字体放大,就能更轻松看到推理的效果:
1. 所有的显示名称,都在 models 目录下个别模型目录里的labels.txt,可以将里面的内容全部改成中文。
例如
deepstream/samples/models/Secondary_CarMake的“labels.txt”内容改为“广汽;奥迪;宝马;雪佛兰;克莱斯勒;道奇;福特;通用;本田;现代;英菲尼迪;吉普;起亚;雷克萨斯;马自达;奔驰;日产;速霸路;丰田;大众”,其他的就比照办理。
注意:这个顺序不能改变!
2. 边框宽度:修改[osd]下面的“board-width”值,推荐 2~4 比较合适;
3. 字体大小:修改[osd]下面的“texe-size”值,推荐 15~18 比较合适;
4. 其他:请自行设定
现在重新执行这个 deepstream-app 的应用,就能得到本文一开始所显示的效果:
如何?这样的效果与性能就是在 Jetson Nano 2GB 实现的!
好文章,需要你的鼓励
Docker公司发布重大新功能,旨在简化智能体AI应用的构建、运行和部署。公司扩展了Docker Compose工具以支持AI智能体和模型的大规模部署,并推出Docker Offload服务,允许开发者将AI工作负载转移到云端。新功能还支持模型上下文协议网关的安全连接,并与谷歌云、微软Azure等合作伙伴集成。
这项研究首次将在线强化学习成功应用于流匹配模型,通过巧妙的ODE到SDE转换和去噪减少策略,显著提升了AI图像生成的精确度和可控性。在复合场景生成、文字渲染等任务上取得突破性进展,为AI生成领域开辟了新的技术路径。
欧盟发布AI法案实施细则,要求谷歌、Meta、OpenAI等公司承诺不使用盗版材料训练AI,详细披露训练数据来源和模型设计理念。新规还要求公司尊重付费墙和网站爬虫限制,公开训练和推理的总能耗,并在5-10天内向欧盟AI办公室报告安全事件。违规企业可能面临年销售额7%或3%的罚款。
这篇由阿里巴巴集团联合多所知名高校发表的综述论文,系统梳理了统一多模态理解与生成模型的最新发展。研究将现有模型分为扩散、自回归和混合三大类型,详细分析了不同图像编码策略的特点,整理了相关数据集和评估基准,并深入探讨了当前面临的技术挑战。