1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ノートPCでDeepStream SDK 6.1.1を動かしてみた

Last updated at Posted at 2023-01-10

はじめに

家にあるASUSのゲーミングPCがWeb閲覧専用機となりつつあるのですが
せっかくついているGPUを使ってみたくなったのでお正月の宿題として動作確認を行うことにしました。

キーワード

  • docker
  • GPU
  • ubuntu20.04
  • nvidia deepstream SDK 6.1.1

参考

環境

  • ASUS TUF DASH F15 (Intel Corei5-11300H + Nvidia GeForce RTX 3060 Laptop GPU)
  • Ubuntu 20.04.5 LTS
  • docker ver.20.10.22
  • NVIDIA Driver 515.86.01
  • nvcr.io/nvidia/deepstream:6.1.1-devel

手順

Winodows11からUbuntu20.04へ変更

ざっくりWindowsを消してUbuntuを入れても良いのですがさすがに。。。
裏ブタを開けて新しいSSDを入れ替えました。元のSSDは大切に取っておきます。

UbuntuのインストールはデフォルトのままUSBメモリからインストールしました。

nvidia driverインストール

コマンドラインからインストールしても良いのですがubuntu20.04ではGUIでインストールできるようなのでインストールしてみました。

設定→このシステムについて→ソフトウェアのアップデート
→追加のドライバータブを選択しお好きなNvidiaDriverを選択→変更の適用を押します。
※ちなみに私はnvidia-driver-515をインストールしました。

2.png

終わったら再起動します。

内臓グラフィックドライバからnvidiaGPUへ変更(必要に応じて)

インストール直後、GPUが複数あるシステムの場合、NVIDIA以外のグラフィックドライバが選択されていることがあります。

設定→このシステムについて→グラフィック を参照
1.png

ここでNVIDIA以外の(例えばIntel)グラフィックが選択されているときは切り替えが必要です。

コンソールで

sudo prime-select nvidia

dockerインストール

↓こちらの手順を拝借しました。

dockerインストール

$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
     $(lsb_release -cs) \
    stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce

dockerの動作確認

$ sudo docker run hello-world

    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

docker実行ユーザの追加

いちいちsudoを使うのは面倒なので現在んもユーザでdockerが使えるように権限を付与します。

# sudo usermod -aG docker ${USER}

nvidia-docker2のインストール

dockerからGPUが使えるよう設定します。

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-docker2

$ sudo systemctl restart docker

dockerでGPUが使えるか確認

$ docker run --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
Unable to find image 'nvidia/cuda:11.6.2-base-ubuntu20.04' locally
11.6.2-base-ubuntu20.04: Pulling from nvidia/cuda
846c0b181fff: Pull complete 
b787be75b30b: Pull complete 
40a5337e592b: Pull complete 
8055c4cd4ab2: Pull complete 
a0c882e23131: Pull complete 
Digest: sha256:9928940c6e88ed3cdee08e0ea451c082a0ebf058f258f6fbc7f6c116aeb02143
Status: Downloaded newer image for nvidia/cuda:11.6.2-base-ubuntu20.04
Mon Jan 16 04:43:49 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.86.01    Driver Version: 515.86.01    CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   47C    P8    13W /  N/A |    415MiB /  6144MiB |     14%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

NVIDIA DeepStream SDKを実行

実行結果を画面に描画するためdocker内からGUI表示ができるよう設定します。

$ xhost +
access control disabled, clients can connect from any host

NVIDIAのリポジトリからdockerimageをPullして実行します。
「-v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY」でホストOSのGUIリソースが利用できるようにします。

$ docker run --gpus all -it --rm \
> -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY \
> -w /opt/nvidia/deepstream/deepstream-6.1 \
> nvcr.io/nvidia/deepstream:6.1.1-devel
・・・・
root@5ecfcfbbc8c5:/opt/nvidia/deepstream/deepstream-6.1#

dockerが起動してコンソールが出てきたら動画認識のサンプルプログラムを起動してみます。
最初モデルの変換が行われるので起動に時間がかかります。

root@5ecfcfbbc8c5:/opt/nvidia/deepstream/deepstream-6.1# deepstream-app -c sampl
es/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt 

(gst-plugin-scanner:10): GStreamer-WARNING **: 04:51:23.265: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstchromaprint.so': libavcodec.so.58: cannot open shared object file: No such file or directory

(gst-plugin-scanner:10): GStreamer-WARNING **: 04:51:23.413: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtritonserver.so: cannot open shared object file: No such file or directory

(gst-plugin-scanner:10): GStreamer-WARNING **: 04:51:23.413: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: cannot open shared object file: No such file or directory
WARNING: ../nvdsinfer/nvdsinfer_model_builder.cpp:1482 Deserialize engine failed because file path: /opt/nvidia/deepstream/deepstream-6.1/samples/configs/deepstream-app/../../models/Secondary_CarMake/resnet18.caffemodel_b16_gpu0_int8.engine open error
・・・


0:01:22.940566209     9 0x5647876d7f90 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<primary_gie> [UID 1]: Load new model:/opt/nvidia/deepstream/deepstream-6.1/samples/configs/deepstream-app/config_infer_primary.txt sucessfully

Runtime commands:
	h: Print this help
	q: Quit

	p: Pause
	r: Resume

NOTE: To expand a source in the 2D tiled display and view object details, left-click on the source.
      To go back to the tiled display, right-click anywhere on the window.


**PERF:  FPS 0 (Avg)	FPS 1 (Avg)	FPS 2 (Avg)	FPS 3 (Avg)	
**PERF:  0.00 (0.00)	0.00 (0.00)	0.00 (0.00)	0.00 (0.00)	
** INFO: <bus_callback:194>: Pipeline ready

こんな感じでGUI上にWindowが生成され、認識結果が表示されます。

Screenshot from 2023-01-16 14-23-57.png

終わりに

次回はAtomCamとの連携を行ってみようと思います。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?