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

スポンサーリンク

シェアする

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

https://tom2rd.sakura.ne.jp/wp/2021/05/26/post-12145/

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

Getting Started with Jetson Nano 2GB Developer Kit
Getting Started with Jetson Nano 2GB Developer Kit Click here for the guide based on Jetson Nano Developer Kit. Introduction Included in the Box Items not Inclu...

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

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

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

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

jetson-inference/aux-docker.md at master · dusty-nv/jetson-inference
Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson. - jetson-inference/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
JetsonNano VNC Viewer 2021 06 03 23 13 18

画像認識 と 人間認識

./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
JetsonNano 2GB  ImageNet リアルタイムビデオでの物体認識

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

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

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

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

NVIDIA Jetson Nano 2GB 開発者キットのセットアップをしてみた。 | そう備忘録
NVIDIAのJetson Nano 2GB 開発者キットを購入したのでセットアップを行った。従来のメモリ4GBモデルのの廉価版で価格は7,000円前後とかなり安くなっている。メモリは2GBだがswap領域を拡大することで、学習速度は多少低下するがResNet-18で問題なく学習ができた。
PHP Code Snippets Powered By : XYZScripts.com