交通管理 DeepStream SDK
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
DeepStream SDK を使用したインテリジェント交通管理システム

概要
都市が日々成長するにつれて、道路上の車両の数も増加しています。その結果、交通渋滞も急速に増加し、国の発展に大きな影響を与える可能性があります。この Wiki では、AI ビジョンを使用してこの問題に対する解決策を提案します。各信号機に設置された既存の CCTV カメラからストリーミングビデオをキャプチャし、物体検出を実行してすべての車両を検出し、車両の混雑状況に応じて信号機を制御します。さらに、このデータを車両のメーカーや歩行者の数とともにデータベースに送信し、さらなる分析を行うことができます。
この AI ビジョンアプリケーションでは、NVIDIA の DeepStream SDK を使用し、NVIDIA Jetson デバイスでエッジ推論を実行します。また、このタスクには NVIDIA NGC Model Catalog から事前学習済みモデルを使用し、展開プロセスを迅速かつ簡単にします。NVIDIA NGC Model Catalog では、他の多くの異なるアプリケーション向けの多数の事前学習済みモデルも提供されています。
DeepStream SDK とは?
NVIDIA の DeepStream SDK は、AI ベースのマルチセンサー処理、ビデオ、オーディオ、画像理解のための完全なストリーミング分析ツールキットを提供します。DeepStream は、C/C++、Python での開発や、Graph Composer を使用したローコードのグラフィカルプログラミングなど、開発者に柔軟性を提供します。DeepStream には、さまざまなハードウェアアクセラレーションプラグインと拡張機能が付属しています。

DeepStream は開発者と企業の両方を対象としており、SSD、YOLO、FasterRCNN、MaskRCNN などの最先端の物体検出およびセグメンテーションモデルを含む、広範な AI モデルサポートを提供します。また、DeepStream にカスタム関数やライブラリを統合することも可能です。
DeepStream は、迅速なプロトタイピングから本格的な生産レベルのソリューションまでの柔軟性を提供します。また、推論パスを選択することも可能です。NVIDIA Triton Inference Server へのネイティブ統合により、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 モジュール
前提条件
- 上記のいずれかの Jetson デバイスで JetPack を実行
- キーボードと HDMI ディスプレイ
- Windows、Linux、または Mac を搭載したホスト PC
- 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。
以下のワークフローは、reComputer J1010 で JetPack 4.6.1 を実行してテストされています。
ステップ 1: Jetson デバイスに SDK コンポーネント と DeepStream SDK が正しくインストールされていることを確認してください。(インストールの参考として この wiki を参照してください)
注意: すべての SDK コンポーネントと DeepStream SDK をインストールするには、NVIDIA SDK Manager を使用することを推奨します。
ステップ 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
技術サポートと製品ディスカッション
私たちの製品をお選びいただきありがとうございます!製品をご利用いただく際に、できるだけスムーズな体験を提供するために、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。