DeepStreamとは
DeepStreamとは、
です。
DeepStreamでは動画ストリームをパイプライン処理することで高速化を実現しています。
出典:nvidia公式サイト
より具体的に説明すると、DeepStreamはモジュラープラグインを接続していき処理パイプラインを形成していきます。
モジュラープラグインは機能単位に分かれていて、
- ファイルからデータを読み込む「GstFileSrc」
- ディープラーニングの推論を行う「Gst-nvinfer-TensorRT」
など様々なプラグインが存在します。
プラグインの詳細はこちらのマニュアルに記載されています。
また、DeepStreamに関するドキュメントはこちらにまとまっています。
DeepStreamを構成する技術
DeepStreamは主に以下の2つの技術から構成されています。
GStreramer
GStreramerは、動画ストリームを処理パイプライン処理するためのフレームワークです。
動画や画像を高速に処理することができるので、エッジデバイスやリアルタイムで画像処理をする場合にはよく使われます。
GStreamerの詳細については公式ドキュメントを参照してください。
DeepStreamはGStreamerをベースに作られていて、DeepLearningの推論部分を新たに追加されています。
TensorRT
TensorRTは、ニューラルネットワークの推論を高速で実行するためのランタイムエンジンです。
事前に学習されたディープラーニングのモデルを効率的に実行することを重視して作られています。
DeepStreamでは、Gst-nvinferプラグインでTensorRTが実装されています。
DeepStreamを使ったアプリケーションの作成方法
DeepStreamでアプリを作成する方法には2種類あります。
それぞれの手法の概要はこちらの公式ドキュメントに記載されています。
deepstream-app
deepstream-appでは予め用意されたリファレンスアプリケーションを使って(変更して)、deepstreamのアプリケーションを作成する方法です。
そのため比較的簡単に実装することができます。
リファレンスアプリケーションでは、入力ソースを受け取り(GstFileSrc)、デコードして、DeepLearningの解析(Gst-nvinfer-TensorRT)し、検出物を追跡(Gst-nvtracker)し、描画(Gst-nvdsosd)して、画面に表示するというようにプラグインの順番が事前に決められています。
リファレンスアプリケーションの各プラグインのON/OFFや動作のカスタマイズを設定ファイルで行うことでアプリケーションの開発を行います。
そのため、プラグインにない独自の処理を追加することはできません。
(※ただし、プラグインのソースを書き換えることで独自の処理を無理やり実装することはできます。)
deestream-appのリファレンスアプリケーションのソースファイルとコンフィグファイルはそれぞれ以下のパスに格納されています。
リファレンスアプリケーションのコンフィグファイルの詳細については、こちらの公式サイトにまとめられています。
C / C ++およびPythonでのアプリケーション開発
Cやpythonをでアプリケーション開発することもできます。
こちらの方法では、用意されているプラグインとapiを組み合わせてアプリを作るので、プラグインを任意の順番にして独自のストリームを作成することができます。
また、処理の途中でコールバック関数を呼び出すこともできるので任意の処理もさせることも可能です。
apiリファレンスはこちらにあります。
DeepstreamのC / C ++のアプリケーションのサンプルは以下に格納されています。
/opt/nvidia/deepstream/deepstream-5.0/sources/apps
pythonでのアプリケーション開発には、deepstream_python_appsが必要になります。
出典:Nvidia公式サイト
python版のapiリファレンスはこちらになります。
DeepStreamのプラグイン
DeepStreamで提供されている代表的なプラグインを載せておきます。
プラグインのマニュアルはこちらあります。
標準のプラグインにない機能は、C++を使って独自のプラグインを作ることでオリジナルの処理を作成することができます。
オリジナルプラグインのサンプル以下のパスに用意されています。
/opt/nvidia/deepstream/deepstream-5.0/sources/gst-plugins
まとめ
DeepStreamとは、ビデオなどのデータをDeepLearningで効率よく解析するためのソフトウェアです。
DeepStreamでは動画ストリームをパイプライン処理することで高速化を実現しています。
DeepStreamはTensorRTとGStreramerを元に構成されています。
コメント