これまでの一覧は、こちらに。。
インストールやちょっとしたコマンド類や周辺機器のチェックができたら。。
ここのページていうところの。。一番最初の、Hello AI worldに行けるわけですが。。
-
NVIDIA AI tutorials and courses
- Hello AI World
The classic way to start exploring AI - JetBot
Hands-on, open-source AI robot platform - Jetson AI Fundamentals Course
Get started learning about AI with this practical course
- Hello AI World
- Get inspired with the latest Jetson community projects
Try these great projects to start: -
Jetson Forum
- Ask and answer questions on the Jetson Nano Forum
-
Jetson Wiki
- Don’t miss the Jetson Zoo with instructions for installing various open source add-on packages and frameworks for Machine Learning, Computer Vision, Robotics, and more.
実は道のりはまだまだ(笑)
それでは、Dockerの導入です。
Hello AI world でいうところの、Setupが終わったところです。で、Hello AI WorldでいうところのDockerの導入に入ります。
前のページで知った 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
で。。ググると、同じようなエラーを出した方がいます。(笑)
これを読むと、どうも、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 ldconfigThis 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です。
下記も参考にさせていただきました。