LoginSignup
10
6

More than 3 years have passed since last update.

Jetson TX2でDeepStream SDKを動かしてみた

Last updated at Posted at 2020-02-04

概要

この記事ではJetson TX2でDeepStream SDKのサンプルアプリを動かす手順を紹介しています。
DeepStream SDKを使用することで、Jetsonでの映像処理やディープラーニングの推論処理を高速に処理できるようになります。
今回動かすサンプルアプリは、USBカメラの映像を入力にして物体検出(PersonやCarなどを検出)を行う内容になります。

環境情報

Jetpack 4.3
Jetson TX2
カメラ:LOGICOOL HD PRO WEBCAM C920

Jetpack導入

TX2へのJetpackの導入は、NVIDIA SDK MANAGERを使って実施します。
手順については以下の記事を参考にしてください。

https://dev.classmethod.jp/hardware/jetson-setup-jetpack-with-sdkmanager/
https://qiita.com/harmegiddo/items/eb0e4796221b19f28d93

ただし、今回DeepStream SDKを使用するので、以下の画面でDeepStreamにチェックを入れます。
image.png

jetson-stats導入

リソース使用量が見たくなるのでjetson-statsを入れておきます。

# pipをインストール
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
# jetson-statsをインストール
$ sudo -H pip3 install jetson-stats
# 実行してみる
$ jtop

jtopを起動すると以下のような画面でCPUやGPUの使用量を確認できます。
image.png

v4l-utilsをインストール

USBのカメラを使うのでv4l-utilsをインストールしておきます。

$ sudo apt-get install v4l-utils

カメラの確認

v4l-utilsでTX2に接続されているカメラを確認します。
/dev/video1にUSBカメラがついているのが確認できます。

$ v4l2-ctl --list-devices
vi-output, ov5693 2-0036 (platform:15700000.vi:2):
    /dev/video0

HD Pro Webcam C920 (usb-3530000.xhci-2.2):
    /dev/video1       

サンプルアプリ実行

サンプルコードをHOMEディレクトリにコピーします。

$ mkdir ~/work
$ cp -r /opt/nvidia/deepstream/deepstream-4.0/samples/ ~/work
$ cd work

source1_usb_dec_infer_resnet_int8.txtを1箇所修正します。

$ vi samples/configs/deepstream-app/source1_usb_dec_infer_resnet_int8.txt 

USBカメラは/dev/video1であることを確認しているので、
29行目camera-v4l2-dev-nodeを1に変更します。
(確認の結果USBカメラが/dev/video0であった場合には0のままにしておきます)

source1_usb_dec_infer_resnet_int8.txt
 21 [source0]
 22 enable=1
 23 #Type - 1=CameraV4L2 2=URI 3=MultiURI
 24 type=1
 25 camera-width=1280
 26 camera-height=720
 27 camera-fps-n=30
 28 camera-fps-d=1
 29 camera-v4l2-dev-node=1   # 0から1に変更

今回使うモデルで検出できるラベルを確認します。

$ cat samples/models/Primary_Detector/labels.txt 
Car
Bicycle
Person
Roadsign

プログラムを実行します。

$ deepstream-app -c samples/configs/deepstream-app/source1_usb_dec_infer_resnet_int8.txt 

以下は車を検出した時の画面です。
image.png

アプリを実行しているターミナルには以下のような出力があり、24FPSぐらいで処理できていることがわかります。

**PERF: 26.12 (26.12)   
**PERF: 24.00 (25.02)   
**PERF: 23.99 (24.67)   
**PERF: 23.99 (24.50)   
**PERF: 24.02 (24.40)   
**PERF: 24.00 (24.33)   
**PERF: 24.00 (24.28)   
**PERF: 23.99 (24.25)   
**PERF: 24.02 (24.22)   
**PERF: 23.99 (24.20)   
**PERF: 24.00 (24.18)   
**PERF: 24.00 (24.17)   
**PERF: 24.00 (24.15)   

アプリを動かしている時のjtopの様子も以下のような感じで、GPUが有効に使用されているのが確認できます。
image.png

まとめ

DeepStream SDKを使うことで、USBカメラの映像から高速に物体検出できることが確認できました。
また、今回動かしたリファレンスアプリ(deepstream-app)はConfigの変更で他にも色々できそうなので、今後試してみたいと思います。

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6