さてさて、せっかく購入したJetson Xavier NX、使わないともったいないので使います。そして、月1ペースでここの更新ネタにしていきたいところです。
というわけで、本当は先月中にやろうと思っていたDeepStream SDKのサンプルの動作確認をしてみました。
目次
はじめに確認しておくこと
それは、使おうとしているSDKがJetPackのバージョンに対応しているか確認すること。
何も確認せずに手順通りに進めてみて、サンプル起動したら動かなかったです。
$ deepstream-app –c samples/configs/samples/configs/deepstream-app/source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt error while loading shared libraries: /usr/lib/aarch64-linux-gnu/libnvinfer.so.7: file too short
nvinfer.soは推論のPlugin*1で、TensorRT絡みでエラーになったのかなぁと思います。というより、DeepStream SDKのサイトにちゃんと対応バージョンが明記されていました。
NVIDIA NGC
今現在のバージョン、5.1だと以下の通り。
Prerequisites
Ensure these prerequisites are available on your system:Jetson device running L4T r32.5.1
JetPack 4.5.1
ちなみに前回、インストールしたJetPackは最新の4.6でした。ライブラリのバージョンも見たら全然違いますね。NVIDIA関係のライブラリのバージョンやドライバのバージョンはちゃんとしないと動かないことが多いのでちゃんと確認しましょう。
まずは、JetPack 4.5.1のイメージを準備するところからやり直しです。
JetPack 4.5.1が見つからない
前回JetPackインストールしたときに参考にしたところを見ればいいかなと思ったら、古いバージョンのJetPackが見当たらなくて探し回りました。アーカイブサイトのリンクがあったから飛んでみたら今度は古すぎて…Googleの力を借りながら、あちこちリンクをたどった結果、ようやく見つけました。
前回と同じ手順でインストールします。手順は簡単ですが時間はかかりますね。
DeepStream SDKをセットアップ
今回は、Dockerを使ってサンプルを動かしてみます。
xhost + sudo docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-5.1 -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/deepstream-l4t:5.1-21.02-samples
オプションの説明は、公式サイト*2を確認してください。初回はだいたい10分くらい起動に時間がかかります。2回目以降はすぐに起動します。
起動したら、サンプルアプリを実行してみます。
# deepstream-app –c samples/configs/samples/configs/deepstream-app/source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt
今度はうまく動作しました!
このコンフィグファイルでは、サンプル動画で動きますが動画のライセンスがよくわからないのでスクショなしで^^;
まとめ
バージョンが合わないのは初歩的なミスでしたね。最初に何を検証したいのか計画してからJetPackを用意するようにしましょう。SDカードがいくつか欲しくなりますね。。
環境さえ合っていれば、すぐにDeepStream SDKが動作するので遊べそうです。
USB Webカメラを購入したので、次は、それ使って遊んでみようかなと思います。