Jetson Nano 2GB 也能实现多路视频实时分析?
2020-11-09 20:25
作为一名新时代科技潮人,你是否还在为如何开启下一个 AI 项目而冥思苦想?NVIDIA 于 GTC Fall 上推出的 Jetson Nano 2GB 进一步扩大了 Jetson 边缘 AI 平台的受众范围,让新一代学生、教育工作者和机器人爱好者能够充分挖掘 AI 和机器人技术的潜力。
近日,一位知乎极具影响力的 KOL 袁博融对 Jetson Nano 2GB 进行了一系列评测。本篇文章中,我们将带大家来一探究竟。
Jetson Nano 2GB 评测
Jetson Nano 2GB 改为了 1×USB3.0+2×USB 2.0 接口,仅保留了 HDMI 接口,且调整为 1 路 CSI 相机接口。如果要使用无线网卡,需选 USB 的了(以后会官方会发布含无线适配器的 Jetson Nano 2GB 开发者套件)。
Jetson Nano 2GB 的算力还是和之前一样,而针对内存减半的主要措施为换用更轻量的桌面环境 LXDE。这已经在 10 月 21 日刚发布的 JetPack 4.4.1 镜像中提供。
可以看到在系统闲置时内存占用只有 550MB 左右,如果不接显示器使用 Headerless 模式,留给用户的资源就可以更多一些。当然,大家最关心的还是 Jetson Nano 2GB 的 AI 性能。下面是一些经典模型的测试结果,方便大家进行评估。
很多开发者遇到的问题都是在实际应用中难以达到官方所宣称的性能。显然,这需要依赖良好的优化,非常推荐大家首选 NVIDIA TensorRT 来做推理,经过更新,TensorRT 已经到了 7.1.3 版,性能也更强大。本次评测将展示更进一层的优化,即借助 NVIDIA DeepStream SDK 来做实时视频分析。
DeepStream 是 NVIDIA 针对智能视频分析(IVA)应用提供的端到端解决方案,其中包括图像获取、解码、预处理、检测、追踪、分类、分析无缝连接。如果再配合 Transfer Learning Toolkit,则连模型的训练、剪枝都能够一起解决。DeepStream 基于 GStreamer 搭建,其中各种功能都被实现为插件。推理部分则基于 TensorRT 来完成,其他各个模块也大多在 GPU 上运行,并减少了数据传输开销。同时用户也可以开发其所需的自定义插件。
首先尝试 DeepStream 的基础示例,在 Jetson Nano 上进行 8 路视频解码、推理及追踪。这个示例在 4GB 版上能够轻松运行,那么在 2GB 版上表现如何呢?
测试结果是效果非常流畅,说明只要优化到位,2GB 内存也足够使用。这个示例中所用的模型比较简单,Backbone 为 ResNet10,输入分辨率也仅有 480×272,因此准确性还不算太高。但足以验证 8 路 1080p 解码能力。另外为了保存上面的可视化输出,又增加了额外的视频编码任务,但对整体性能几乎没有影响。
基础示例主要用于为开发者展示 DeepStream 的总体流程,模型看上去还不够实用。而 Transfer Learning Toolkit 中则提供了几个精度更高的预训练模型,也更加倾向实际场景。这些模型都可以在 NVIDIA NGC 上获取,并可以根据 EULA 进行免费商业使用。下面大家一起来看看效果。
首先是是一个更为复杂的流程,分析单路视频,但不仅做检测和追踪,还对检测结果进行更细致的分类。用到了 DashCamNet、VehicleMakeNet和VehicleTypeNet。
这里是一个行车记录仪场景,即将 1 个检测模型和 2 个分类模型背靠背连接。检测器识别汽车、自行车、行人、路标 4 类目标,并将检测到的车辆送入两个分类网络判断品牌和车型。检测网络输入分辨率为 960×544,准确性在 80% 以上,分类网络输入分辨率为 224×224,准确性均高于 90%。即便同时跑 3 个模型,整体帧率也保持在 16FPS 的水平,内存也没有用完。
上面两个示例中均采用了 H.264 编码的本地视频文件。尤其在第一个示例中将一个文件复用了 8 次,看起来仍令人怀疑不真实。于是,我们又重新写了个配置,接入了一个安防系统。
这里读取了 4 路海康相机的 RTSP 流,使用 PeopleNet 做行人检测,准确性为 84%。这是一个非常典型的安防视频分析流程。使用 DeepStream SDK,我们可以在几分钟内完成配置和部署。更进一步,我们可以扩展这个流程,将其用于人流量分析,并将结果上传服务器或云端。NVIDIA 也开源了更完整的示例(详情见链接)。
https://github.com/NVIDIA-AI-IOT/deepstream-occupancy-analytics
在Transfer Learning Toolkit 中,对于大多数检测任务,借助 NVIDIA DetectNet_v2 训练往往能获得不错的效果,推理速度快,并在不同尺寸的目标上都有较高准确性。如果仍不能满足需求,还有其它主流模型可供选择,例如 Faster-RCNN、YOLOv3、SSD、DSSD、RetinaNet、MaskRCNN 以及 YOLOv4。具体部署流程可参考以下项目:
https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps
https://github.com/NVIDIA-AI-IOT/yolov4_deepstream
总体来说,Jetson Nano 入门门槛越来越低,这无疑对开发者是很友好的。NVIDIA 也希望有更多开发者参与进来,进一步挖掘 Jetson 的应用潜力。上面诸多示例也几乎不需要修改就可以跑在 Jetson 平台的其它硬件上。如果使用 Jetson AGX Xavier,扩展到 32 路视频进行实时分析应该也是没有问题的。