概要
NVIDIA DeepStream SDKには,推論結果をサーバに送信するためのGst-nvmsgbrokerプラグインが用意されています. このGst-nvmsgbrokerプラグインはRedisのほか,プロトコルアダプタライブラリを使用することで,Kafka,Azure IoTやAMQPなどの各種プロトコルに対応します.
Gst-nvmsgbrokerプラグインを使用したサンプルアプリケーションとプロトコルアダプタライブラリはいくつか用意されていますが,これらのライブラリには各種サーバへの接続方法の記載はあれど,各種サーバの構築方法は紹介されていません. 私はRedisも含めてデータベースの構築や運用の経験がなかったので,サンプルアプリケーションを実行するまでに結構時間がかかってしまいました. そこで本記事では,私が構築したNVIDIA DeepStreamの推論結果をRedisに送信するサンプルアプリケーションの実行環境について紹介します.
本記事で紹介する実行環境は,GitHubで公開しています.See README.md for a quick start in English.
私の開発環境は下記のとおりです.
OS | Ubuntu 20.04.3 LTS (amd64) |
---|---|
GPU | GeForce GTX 1070 Ti |
Driver Version | 510.47.03 |
CUDA Version | 11.6 |
Docker version | 20.10.12, build e91ed57 |
docker-compose version | 1.29.2, build 5becea4c |
DeepStream | nvcr.io/nvidia/deepstream:6.0-devel |
Gst-nvmsgbrokerプラグインを使用したサンプルアプリケーション
列挙しておきます.非公式のものも含めて他にもある場合はコメントで教えていただけると幸いです. この記事ではC実装のdeepstream-test4を取り上げますが,C実装のdeepstream-test5やPython実装のdeepstream-test4も今回構築した実行環境で試すことができます.
- deepstream-test4 (C実装)
- Dockerイメージ (deepstream:6.0-devel)配下: /opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps/deepstream-test4
- deepstream-test5 (C実装)
- Dockerイメージ (deepstream:6.0-devel)配下: /opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps/deepstream-test5
- deepstream-test4 (Python実装)
- NVIDIA-AI-IOT/deepstream-occupancy-analytics
- NVIDIA-AI-IOT/deepstream_360_d_smart_parking_application
実行環境の構成
実行環境はdocker-compose.ymlにまとめています.3つのDockerコンテナが起動します.
- redis
- RedisのDockerコンテナです
- redisinsight
- ウェブブラウザからアクセスして使用する,RedisのGUIツール,RedisInsightのDockerコンテナです.必須ではありませんが,サンプルアプリケーションの動作確認に便利です
- nvds
- DeepStreamのDockerコンテナです.C実装のdeepstream-test4のビルド済みバイナリとソースコードも含まれています
実行方法
- GitHubからdocker-compose.ymlをダウンロードします.
- Dockerコンテナを起動します.初回はDockerイメージのダウンロードがあり起動に時間を要する場合があります
- Redisが使用できるかどうか確認します.テストデータの登録と取得を行います
- テストデータの登録結果をRedisInsightで確認します
- ウェブブラウザで http://localhost:8001 にアクセスします
- 「EULA AND PRIVACY SETTINGS」が表示されたら,内容にしたがってCONFIRMを押下します
- Redisに接続します.「I already have a database」を選択します
- 「Connect to a Redis Database」を選択します
- 下図のように入力し,ADD REDIS DATABASEを押下します
- Redisデータベース,localが追加されました.localを選択します
- 左のメニューからBrowserを選択すると,testKeyが登録されていることがわかります.なお下図では他にds-metaが登録されていますが,これは以降の手順でサンプルアプリケーションを実行した後で登録されるものです
- サンプルアプリケーションを実行します.入力動画はDockerイメージに含まれるサンプル動画を使用します.実行中は物体検出結果を表示するウィンドウが表示され,自動的に終了します
- 推論結果がRedisに送信されていることをCUIで確認します."ds-meta"のKeyが増えています
- 推論結果がRedisに登録されていることをRedisInsightで確認します
- ウェブブラウザで http://localhost:8001 にアクセスし,Redisデータベースのlocalを選択します
- 左のメニューからStreamsを選択すると,ds-metaが登録されていることがわかります.metadataに推論結果が含まれています
関連プロジェクト
推論結果の送信先としてRedisではなくKafkaを使用する場合の実行環境も構築しました.下記で公開しています.