使用 DeepStream SDK 的智能交通管理系统

概述
随着城市日益发展,道路上的车辆数量也在不断增加。因此,交通拥堵问题也迅速加剧,这反过来可能会对一个国家的发展产生重大影响。本篇 Wiki 提出了一种利用 AI 视觉解决这一问题的方案。通过捕获部署在每个交通灯处的闭路电视摄像头的实时视频流,进行目标检测以识别所有车辆,然后根据车辆拥堵情况控制交通灯。此外,这些数据还可以与车辆品牌和行人数量一起发送到数据库进行进一步分析。
对于此 AI 视觉应用,我们将使用 NVIDIA 的 DeepStream SDK,并在 NVIDIA Jetson 设备上进行边缘推理。此外,我们将从 NVIDIA NGC 模型目录 中使用一个预训练模型,以使部署过程快速且简单。NVIDIA NGC 模型目录还提供了许多其他不同应用的预训练模型。
什么是 DeepStream SDK?
NVIDIA 的 DeepStream SDK 提供了一个完整的流分析工具包,用于基于 AI 的多传感器处理、视频、音频和图像理解。DeepStream 通过为开发者提供使用 C/C++、Python 开发或使用低代码图形化编程(Graph Composer)的选项,带来了开发灵活性。DeepStream 附带了各种硬件加速插件和扩展。

DeepStream 专为开发者和企业构建,支持广泛的 AI 模型,包括流行的目标检测和分割模型,如先进的 SSD、YOLO、FasterRCNN 和 MaskRCNN。您还可以在 DeepStream 中集成自定义功能和库。
DeepStream 提供了从快速原型开发到全面生产级解决方案的灵活性。它还允许您选择推理路径。通过与 NVIDIA Triton 推理服务器的原生集成,您可以在 PyTorch 和 TensorFlow 等原生框架中部署模型进行推理。使用 NVIDIA TensorRT 进行高吞吐量推理,并支持多 GPU、多流和批处理选项,您可以实现最佳性能。
支持的硬件
DeepStream SDK 支持以下硬件:
-
Seeed 提供的套件:
- 基于 Jetson Nano 的 reComputer J1010
- 基于 Jetson Nano 的 reComputer J1020
- 基于 Jetson Xavier NX 8GB 的 reComputer J2011
- 基于 Jetson Xavier NX 16GB 的 reComputer J2012
-
Seeed 提供的载板:
- Jetson Mate
- Jetson SUB Mini PC
- Jetson Xavier AGX H01 套件
- A203 载板
- A203(版本 2)载板
- A205 载板
- A206 载板
-
NVIDIA 提供的官方开发套件:
- NVIDIA® Jetson Nano 开发套件
- NVIDIA® Jetson Xavier NX 开发套件
- NVIDIA® Jetson AGX Xavier 开发套件
- NVIDIA® Jetson TX2 开发套件
- NVIDIA® Jetson AGX Orin 开发套件
-
NVIDIA 提供的官方 SoM(系统模块):
- NVIDIA® Jetson Nano 模块
- NVIDIA® Jetson Xavier NX 模块
- NVIDIA® Jetson TX2 NX 模块
- NVIDIA® Jetson TX2 模块
- NVIDIA® Jetson AGX Xavier 模块
前置条件
- 运行 JetPack 的任意上述 Jetson 设备
- 键盘和 HDMI 显示器
- 运行 Windows、Linux 或 Mac 的主机电脑
- Jetson 设备支持的 USB 摄像头或 MIPI CSI 摄像头
入门指南
这里我们将使用 DashCamNet 模型 作为主检测器,用于检测感兴趣的对象。对于每辆检测到的汽车,VehicleTypeNet 模型 和 VehicleMakeNet 模型 分别作为次级分类器,确定汽车的类型和品牌。VehicleTypeNet 分类以下类型:轿跑车、轿车、SUV、面包车、大型车辆和卡车。而 VehicleMakeNet 分类以下品牌:Acura、Audi、BMW、Chevrolet、Chrysler、Dodge、Ford、GMC、Honda、Hyundai、Infiniti、Jeep、Kia、Lexus、Mazda、Mercedes、Nissan、Subaru、Toyota 和 Volkswagen。
以下工作流程已在运行 JetPack 4.6.1 的 reComputer J1010 上测试。
步骤 1: 确保已在 Jetson 设备上正确安装所有 SDK 组件 和 DeepStream SDK。(参考此 Wiki 了解安装方法)
注意: 推荐使用 NVIDIA SDK Manager 安装所有 SDK 组件和 DeepStream SDK。
步骤 2: 下载配置文件
git clone https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps.git
cd deepstream_reference_apps/deepstream_app_tao_configs/
sudo cp -a * /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/
步骤 3: 下载模型
sudo apt install -y wget zip
cd /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/
sudo ./download_models.sh
步骤 4: 打开 deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt
vi deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt
步骤 5: 在 [sink0] 下将 sync=1 改为 sync=0
[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File
type=2
sync=0
source-id=0
gpu-id=0
步骤 6: 在 [primary-gie] 下,将 model-engine-file 改为 ../../models/tao_pretrained_models/dashcamnet/resnet18_dashcamnet_pruned.etlt_b1_gpu0_fp16.engine
[primary-gie]
enable=1
gpu-id=0
# Modify as necessary
model-engine-file=../../models/tao_pretrained_models/dashcamnet/resnet18_dashcamnet_pruned.etlt_b1_gpu0_fp16.engine
batch-size=1
#Required by the app for OSD, not a plugin property
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
gie-unique-id=1
config-file=config_infer_primary_dashcamnet.txt
步骤 7: 在 [secondary-gie0] 下,将 model-engine-file 改为 ../../models/tao_pretrained_models/vehiclemakenet/resnet18_vehiclemakenet_pruned.etlt_b4_gpu0_fp16.engine
[secondary-gie0]
enable=1
model-engine-file=../../models/tao_pretrained_models/vehiclemakenet/resnet18_vehiclemakenet_pruned.etlt_b4_gpu0_fp16.engine
gpu-id=0
batch-size=4
gie-unique-id=4
operate-on-gie-id=1
operate-on-class-ids=0;
config-file=config_infer_secondary_vehiclemakenet.txt
步骤 8: 在 [secondary-gie1] 下,将 model-engine-file 改为 ../../models/tao_pretrained_models/vehicletypenet/resnet18_vehicletypenet_pruned.etlt_b4_gpu0_fp16.engine
[secondary-gie1]
enable=1
model-engine-file=../../models/tao_pretrained_models/vehicletypenet/resnet18_vehicletypenet_pruned.etlt_b4_gpu0_fp16.engine
gpu-id=0
batch-size=4
gie-unique-id=5
operate-on-gie-id=1
operate-on-class-ids=0;
config-file=config_infer_secondary_vehicletypenet.txt
步骤 9: 将摄像头、键盘、HDMI 显示器连接到 Jetson 设备,并执行以下命令
sudo deepstream-app -c deepstream_app_source1_dashcamnet_vehiclemakenet_vehicletypenet.txt
现在,您可以在连接的 HDMI 显示器上可视化演示,如下所示:

如果您想尝试 /opt/nvidia/deepstream/deepstream/samples/configs/tao_pretrained_models/ 下的其他演示,可以按以下方式运行:
sudo deepstream-app -c deepstream_app_source1_$MODEL.txt
技术支持与产品讨论
感谢您选择我们的产品!我们致力于为您提供多种支持,以确保您使用我们的产品时能够获得尽可能顺畅的体验。我们提供多种沟通渠道,以满足不同的偏好和需求。