7-3 DeepStream 環境
学習目標
1. DeepStreamの位置づけとアーキテクチャを理解する
(1) DeepStreamは、GStreamerフレームワークとCUDA-Xスタック上に構築されたAIストリーミング分析ツールキットであることを理解する。
(2) DeepStreamの主要コンポーネント(デコード、前処理、バッチマージ、推論、トラッキング、表示、出力)と、それらのハードウェアアクセラレーション手法を認識する。
2. DeepStreamの入出力パイプラインを習得する
(1) DeepStreamがUSB/CSIカメラ、ビデオファイル、RTSPストリームなどのソースからどのように入力を受け取るかを説明できる。
(2) DeepStreamが最終的に、画像、ファイル、またはRTSPメタデータの形式で、物体検出と分類の結果をどのように出力するかを説明できる。
3. DeepStreamの開発およびデプロイプロセスを理解する
(1) NVIDIA NGCで認証情報を取得し、公式のDeepStream Dockerコンテナを起動して、サンプルを実行する。
DeepStreamの概要
DeepStreamは、AIを活用したアプリケーション構築のためのストリーミング分析ツールキットです。USB/CSIカメラ、ビデオファイル、RTSPストリームなどのソースからストリーミングデータを入力として受け取り、AIとコンピュータビジョンを用いてピクセルデータから環境に関する知見を生成し、より深い理解へと導きます。
DeepStreamは、C/C++およびPythonバインディングを使用したアプリケーション開発をサポートしており、C/C++とPythonの両方で複数のリファレンスアプリケーションが付属しています。CUDA、TensorRT、NVIDIA Triton™ Inference Server、マルチメディアライブラリなど、CUDA-Xスタックに含まれる複数のNVIDIAライブラリを基盤として構築されています。
DeepStreamはオープンソースのGStreamerフレームワークを使用して構築されており、最適化されたグラフベースのアーキテクチャを提供します。下の図は、典型的なビデオ分析アプリケーションを示しており、入力ビデオから出力インサイトまでの流れを表しています。各ブロックは、処理で使用される異なるプラグインを表しています。下部には、アプリケーション全体で利用されるさまざまなハードウェアエンジンが示されています。プラグイン間のメモリコピーをゼロにする最適化されたメモリ管理と、さまざまなアクセラレータの使用により、最高のパフォーマンスが保証されます。

DeepStreamは、効率的なビデオ解析パイプラインを構築するために使用できるGStreamerプラグインという形で構成要素を提供します。現在、様々なタスクのハードウェアアクセラレーションをサポートするプラグインが20種類以上あります。
1. ストリーミングデータソースには、RTSP、ローカルファイル、カメラなどがあります。これらはCPUでキャプチャされ、デコードのためにNVDECに渡されます。このステップで使用されるプラグインはGst-nvvideo4linux2です。
2. デコード後、オプションで画像前処理を実行できます。例えば、魚眼レンズ補正や360度画像補正にはGst-nvdewarper、カラーフォーマット変換にはGst-nvvideoconvertを使用できます。これらのプラグインは、GPUまたはVICを使用してアクセラレーションを行います。
3. バッチ処理はGst-nvstreammuxによって処理され、複数のフレームをバッチにまとめて推論効率を向上させます。
4. 推論はTensorRTを使用して高速化することも、TensorFlow、PyTorch、その他のフレームワークで構築されたモデルを使用してTriton Inference Server経由で実行することもできます。
5. 推論後、オブジェクトトラッキングはGst-nvtrackerプラグインによってサポートされており、パフォーマンスと精度をバランス良く調整した様々なトラッカーが提供されています。
6. バウンディングボックス、マスク、ラベルを可視化するには、Gst-nvdsosdプラグインを使用します。
7. 出力結果は、画面上にレンダリングしたり、ローカルに保存したり、RTSP経由でストリーミングしたり、メタデータをクラウドに送信したりできます。
DeepStreamリファレンスアプリでは、ユーザーは任意の種類と数の入力ソースを設定できます。また、推論に使用するニューラルネットワークの種類を選択することもできます。オブジェクト検出用の組み込み推論プラグインが提供されており、画像分類用の別の推論プラグインと組み合わせることができます。オブジェクトトラッカーを設定するオプションもあります。出力方法としては、ディスプレイへの表示、ファイルへの保存、RTSPによるビデオストリーミングのいずれかを選択できます。
環境
以下の手順では、NVIDIA DeepStream を使用したコンテナの迅速なセットアップと実行方法、および DeepStream リファレンスアプリの実行方法について説明します。
1. NVIDIA NGC カタログにログインし、セットアップページ ( https://org.ngc.nvidia.com/setup ) にアクセスします。
2.「API キーを生成」をクリックします。
3.「個人キーを生成」をクリックします。
4. キー名、有効期限、および含まれるサービスを入力し、「個人用キーを生成」をクリックします。
5. 生成されたキーを使用してログインします。
➤ Docker 関連ツールのインストールについては、こちらを振り返ってみてください:[ 第6-2章節 Docker のインストール ]
# Enter the container’s interactive shell
docker exec -it
# Run a single command in the container
docker exec
6. /etc/docker/daemon.json を作成します( sudo 権限が必要です )。
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"default-runtime": "nvidia"
}
7. Dockerを再起動する
sudo systemctl restart docker
8. DeepStream環境は、NVIDIAが提供するDockerイメージを使用してDockerコンテナを作成します。
ls /tmp/.X11-unix/
# Execute if X0.
export DISPLAY=:0
# Execute if X1.
export DISPLAY=:1
xhost +
sudo docker run -it --rm --network=host --runtime nvidia \
-e DISPLAY=$DISPLAY \
-w /opt/nvidia/deepstream/deepstream-7.0 \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
nvcr.io/nvidia/deepstream:7.0-samples-multiarch
9. 必要なパッケージを( Dockerコンテナ内で )インストールします。
(1) コンテナを削除してから新しいコンテナを作成した場合、インストールが必要です。
bash /opt/nvidia/deepstream/deepstream/user_additional_install.sh
apt-get install ffmpeg -y
参考資料:
[ NVIDIA DeepStream SDK 開発者ガイド — DeepStream ドキュメント ] ( https://docs.nvidia.com/metropolis/deepstream/dev-guide/ )