【機械学習】Jetson Nano Developer Kit のはじめの一歩 Docker導入【Hello AI World】(7)

これまでの一覧は、こちらに。。

【ラジコン自動運転】Jetson Nano 2GBの 小平あたりでCivicTechの記事一覧【機械学習】
Jetson Nanoのチュートリアル的な記事を作っています とはいえ。 かなり英語の解説がいいのがあるので、…

インストールやちょっとしたコマンド類や周辺機器のチェックができたら。。

Jetson Nano 2GB Developer Kit - Get Started
Find resources to build AI apps, AI robots, and more.

ここのページていうところの。。一番最初の、Hello AI worldに行けるわけですが。。

実は道のりはまだまだ(笑)

それでは、Dockerの導入です。

Hello AI world でいうところの、Setupが終わったところです。で、Hello AI WorldでいうところのDockerの導入に入ります。

https://github.com/dusty-nv/jetson-inference/blob/master/docs/aux-docker.md

前のページで知った Docker Pullですね。

今のバージョンにあっているのは、上のGighubのページで、JetPack 4.5 L4T R32.5.0なので

Container Tag L4T version JetPack version
dustynv/jetson-inference:r32.5.0 L4T R32.5.0 JetPack 4.5

こちら

$sudo docker pull dustynv/jetson-inference:r32.5.0

で。。これを実行すると。。結構な時間かかります。DockerHubで確認すると908MByteのようですから。。

続いて。。Dockerを走らせるわけですが。。Githubでは。。

$ git clone --recursive https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ docker/run.sh

と書かれているので、そのとおりにしましょう

で。。これも、docker/run.shはそこそこ時間かかります。いろいろ取得してくるみたい。

途中で。。画像認識のモデルを全部読み込むか?って聞かれたり。。

これは、ニューラルネットワークモデルですね。

なんだかわかりませんが。。動かすと、こういうプロンプトになります。

Githubをみるといろいろなツールやデータなども入っているようですが、まずはちゃんと動くかの確認です。

cd build/aarch64/bin
./video-viewer /dev/video0
./imagenet images/jellyfish.jpg images/test/jellyfish.jpg
./detectnet images/peds_0.jpg images/test/peds_0.jpg

リモートデスクトップ接続では。。 うまくできませんでした(笑)

------------------------------------------------
[OpenGL] glDisplay -- X screen 0 resolution: 1280x800
[OpenGL] glDisplay -- X window resolution: 1280x800
libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: swrast
X Error of failed request: GLXBadContext
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 39
Current serial number in output stream: 38

で。。ググると、同じようなエラーを出した方がいます。(笑)

JetPack 4.3: MESA-LOADER: failed to open swrast while in xrdp session
Hy WayneWWW, Do you mean error happens even when monitor is connected? Yes, the error also occurs when a monitor is connected via HDMI, obviously only remot...

これを読むと、どうも、XrdpとMESAドライバのエラーのようですね。解決策は以下のようですが。。

Creating the link libdrm.so.2 → libdrm.so.2.4.0 solves the problem temporarily until the next time ldconfig runs (which will be triggered by e.g. an apt-get install).

The problem seems to be that the link libdrm_nvdc.so → tegra/libdrm.so.2 will cause ldconfig to overwrite libdrm.so.2 with link to libdrm_nvdc.so.

To solve this permanently, I removed the link libdrm_nvdc.so → tegra/libdrm.so.2, and then ran ldconfig:

sudo rm /usr/lib/aarch64-linux-gnu/libdrm_nvdc.so
sudo ldconfig

This created the link libdrm.so.2 → libdrm.so.2.4.0.

Of course this could potentially result in other kinds of failures, but I have not experienced any yet.

で。。これやっても駄目ですね。。ん~~

仕方がないので、Jetson Nano 2GBにHDMIディスプレィとマウスをつけてLoginしておいて、VNCで接続すると。。 動きました。。

ビデオを単に出すだけのサンプル

./video-viewer /dev/video0

画像認識 と 人間認識

./imagenet images/jellyfish.jpg images/test/jellyfish.jpg
./detectnet images/peds_0.jpg images/test/peds_0.jpg

動かすのは、VNCからだけど、結果の画像見るのは、リモートデスクトップだったりします(笑)

で。。Jetson Nano 2GBだと、これくらいの解像度の画面だと結構な時間がかかりますね。

物体認識では 82 msec

[image] saved 'images/test/jellyfish.jpg' (700x560, 3 channels)
[TRT] ------------------------------------------------
[TRT] Timing Report networks/bvlc_googlenet.caffemodel
[TRT] ------------------------------------------------
[TRT] Pre-Process CPU 8.23306ms CUDA 9.15458ms
[TRT] Network CPU 73.56714ms CUDA 72.25328ms
[TRT] Post-Process CPU 0.37996ms CUDA 0.37818ms
[TRT] Total CPU 82.18015ms CUDA 81.78604ms
[TRT] ------------------------------------------------

歩行者認識では283msec

[image] saved 'images/test/peds_0.jpg' (1920x1080, 3 channels)
[TRT] ------------------------------------------------
[TRT] Timing Report networks/SSD-Mobilenet-v2/ssd_mobilenet_v2_coco.uff
[TRT] ------------------------------------------------
[TRT] Pre-Process CPU 0.11448ms CUDA 1.05464ms
[TRT] Network CPU 99.18696ms CUDA 98.08104ms
[TRT] Post-Process CPU 49.02602ms CUDA 49.21917ms
[TRT] Visualize CPU 135.20552ms CUDA 135.63219ms
[TRT] Total CPU 283.53296ms CUDA 283.98703ms
[TRT] ------------------------------------------------

って出てくるけど、NetworkをLoadしたりいろいろするので、結構な時間かかっているように思えます。

ビデオでの物体認識のデモ

./imagenet /dev/video0

リアルタイムにするには、やはり解像度下げるなどの工夫はいりそうですね。

とりあえず、Headlessは少し挫折ぎみですが。。Dockerを入れて推論できることは確認できました。ということは、HDMIのディスプレーは必須ってことですねぇ~(笑)

それでは。。いよいよHello AI Worldです。

下記も参考にさせていただきました。

NVIDIA Jetson Nano 2GB 開発者キットのセットアップをしてみた。 | そう備忘録