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

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

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

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

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit#next

ここのページていうところの。。一番最初の、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 TagL4T versionJetPack version
dustynv/jetson-inference:r32.5.0L4T R32.5.0JetPack 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

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

https://forums.developer.nvidia.com/t/jetpack-4-3-mesa-loader-failed-to-open-swrast-while-in-xrdp-session/111199/18

これを読むと、どうも、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 開発者キットのセットアップをしてみた。

投稿者 tom2rd

“【機械学習】Jetson Nano Developer Kit のはじめの一歩 Docker導入【Hello AI World】(7)” に1件のフィードバックがあります

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

PHP Code Snippets Powered By : XYZScripts.com