- deepstreamのサンプルプログラムの動かし方
- source1_usb_dec_infer_resnet_int8.txtの内容
- deepstream-appのコンフィグの意味
deepstream-appのサンプルプログラム
今回は、deepstream-appのサンプルプログラムである「source1_usb_dec_infer_resnet_int8.txt」を試していきます。
このサンプルでは、USBカメラ1台の画像を入力として4つの物体検出(Car、Bicycle、Person、Roadsign)を行います。
早速サンプルプログラムを動かしてみましょう。
deepstream-app -c /opt/nvidia/deepstream/deepstream-5.1/samples/configs/deepstream-app/source1_usb_dec_infer_resnet_int8.txt
カメラでPCのディスプレイを映して検出している様子です。
しっかりPersonが検出できていることが分かります。
このサンプルプログラム「source1_usb_dec_infer_resnet_int8.txt」のプラグインの構成は以下のようになっています。
それぞれのプラグインが実施している処理内容です。
サンプルプログラムの概要は公式ドキュメントに記載されています。
コンフィグの解説
サンプルプログラム「source1_usb_dec_infer_resnet_int8.txt」のコンフィグファイルの中身を見ていきましょう。
applicationグループ
applicationグループでは、メトリクスの取得などに関する設定をしています。
直接アプリケーションの動作には影響しません。
[application] enable-perf-measurement=1 perf-measurement-interval-sec=5
アプリケーションのパフォーマンスの測定を実施し、5秒おきにパフォーマンスをサンプリングしています。
設定項目 | 設定値の意味 |
enable-perf-measurement | アプリケーションのパフォーマンス測定を行うか。 0:未実施 1:実施 |
perf-measurement-interval-sec | パフォーマンスメトリックのサンプリング周期。 |
sourceグループ
sourceグループでは、入力データの取得に関する設定を行います。
[source0] enable=1 type=1 camera-width=640 camera-height=480 camera-fps-n=30 camera-fps-d=1 camera-v4l2-dev-node=0
入力データはUSBカメラの入力1つだけに設定されています。
設定項目 | 設定値の意味 |
enable | ソースの有効化。 0:無効 1:有効 |
type | ソースの種類。 1:カメラ(V4L2) 2:URI 3:MultiURI 4:RTSP 5:カメラ(CSI) |
camera-width | 入力画像の幅(ピクセル)。 |
camera-height | 入力画像の高さ(ピクセル)。 |
camera-fps-n | 入力画像のフレーム数(分子)。 |
camera-fps-d | 入力画像のフレーム数(分母)。 |
camera-v4l2-dev-node | V4L2デバイス番号。 0: /dev/video0 |
Streammuxグループ
Streammuxグループでは、マルチプレクサの設定を行います。
[streammux] live-source=1 batch-size=1 batched-push-timeout=40000 width=1280 height=720
設定項目 | 設定値の意味 |
live-source | ソースがライブ状態であることをマルチプレクサに通知する。 0:無効 1:有効 |
batch-size | マルチプレクサのバッチサイズ。 |
batched-push-timeout | 最初のバッファが利用可能になってからバッチをプッシュするまでのタイムアウト。(マイクロ秒単位) |
width | Muxerの出力の幅(ピクセル)。 |
height | Muxerの出力の高さ(ピクセル)。 |
primary-gie、secondary-gieグループ
primary-gie、secondary-gieグループではAIの解析の設定を行います。
[primary-gie] enable=1 model-engine-file=../../models/Primary_Detector/resnet10.caffemodel_b30_gpu0_int8.engine batch-size=1 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 interval=0 gie-unique-id=1 config-file=config_infer_primary.txt
モデルのエンジンの指定や検出した物体ごとにバウンディングボックスの色を変更しています。
設定項目 | 設定値の意味 |
enable | シンクの有効化。 0:無効 1:有効 |
model-engine-file | エンジンファイルの絶対パス。 |
batch-size | バッチで処理するフレーム数。(pgieの場合) バッチで処理するオブジェクト数。(sgieの場合) |
bbox-border-color0 | バウンディングボックスの色を指定。(クラスIDとRGBA形式で色を設定) |
interval | 推論を行うインターバル。(スキップするバッチ数) |
gie-unique-id | nvinferに割り当てられる一意のID。 |
config-file | Gst-nvinferプラグインのプロパティを指定する構成ファイルのパス名。 |
tiled-displayグループ
tiled-displayグループでは、タイル表示の設定をします。
[tiled-display] enable=1 rows=1 columns=1 width=1280 height=720
設定項目 | 設定値の意味 |
enable | タイル表示を行うか。 0:未実施 1:実施 2:最初の[sink]グループのパッドにリンク |
rows | タイル化した時の行数。 |
columns | タイル化した時の列数。 |
width | タイル化した時の幅。 |
height | タイル化した時の高さ。 |
OSDグループ
OSD(オンスクリーンディスプレイ)グループでは、画面への描画の設定をしています。
[osd] enable=1 border-width=2 text-size=15 text-color=1;1;1;1; text-bg-color=0.3;0.3;0.3;1 font=Serif show-clock=0 clock-x-offset=800 clock-y-offset=820 clock-text-size=12 clock-color=1;0;0;0
表示する文字のサイズや色、時計の表示の設定を行っています。
設定項目 | 設定値の意味 |
enable | OSDの有効化。 0:無効 1:有効 |
border-width | バウンディングボックスの線の太さ。 |
text-size | オブジェクトを説明するテキストのサイズ。 |
text-color | オブジェクトを説明するテキストの色。(RGBA形式で設定) |
text-bg-color | オブジェクトを説明するテキストの背景色。(RGBA形式で設定) |
font | オブジェクトを説明するテキストのフォント。 |
show-clock | 時刻の表示。 0:非表示 1:表示 |
clock-x-offset | 時計の表示位置のx軸方向のオフセット。 |
clock-y-offset | 時計の表示位置のy軸方向のオフセット。 |
clock-text-size | 時計の文字サイズ。 |
clock-color | 時計のテキストの色。(RGBA形式で設定) |
sinkグループ
sinkグループでは最終的なデータの処理の設定をしています。
[sink0] enable=1 type=5 sync=0 display-id=0 offset-x=0 offset-y=0 width=0 height=0 overlay-id=1 source-id=0
設定項目 | 設定値の意味 |
enable | シンクの有効化。 0:無効 1:有効 |
type | シンクの種類。 1:フェイクシンク 2:nveglglessink 3:エンコードしてファイル保存 4:エンコードしてRTSPストリーミング 5:オーバーレイ 6:メッセージ |
sync | 同期処理の有効化。 0:非同期 1:同期 |
display-id | ディスプレイのID。 |
offset-x | ウインドウレンダラー時のx方向のオフセット(ピクセル)。 |
offset-y | ウインドウレンダラーのy方向のオフセット(ピクセル)。 |
width | レンダラーの幅(ピクセル)。 |
height | レンダラーの高さ(ピクセル)。 |
overlay-id | HEAD 0に使用するオーバーレイのインデックス。 |
source-id | シンクと接続するソースのID。 |
testsグループ
testsグループでは、デバッグの設定をします。
[tests] file-loop=0
入力データはループさせない設定になっています。
設定項目 | 設定値の意味 |
file-loop | 入力ファイルを無限にループするか。 0:無効 1:有効 |
まとめ
今回は、deepstream-appのサンプルプログラムである「source1_usb_dec_infer_resnet_int8.txt」を動かしてみました。
このサンプルでは、USBカメラ1台の画像を入力として4つの物体検出(Car、Bicycle、Person、Roadsign)が検出できました。
deepstreamを使い始めた場合の最初のステップとしてやってみてください。
コメント