hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

JETSON XAVIER NXにJetpack 5.0.2をインストール

1年ぶりの更新で、またJETSONのバージョンアップネタです。
バージョンアップだけしている人みたいになってますが、ちゃんと仕事でJetsonで開発してます。まだデモ段階ですが。

それにしても、JETSON自体手に入りにくくなってしまいましたね。在庫のあるOrinは40万円弱くらいなので手の届かないところに行ってしまいました。お手軽にGPUが使える小さい子の登場はNano2リリースまでお預けかもしれないですね。


さてさて、今回のバージョンアップ、5.X系ですが、大がかりなアップデートということで、Jetson Nanoなどがサポート対象外になっています。そして、ブートローダが変わったみたいでアップデートする際にもひと手間かかるようになりました。

それがこちら。

docs.nvidia.com

これを実行しろと。

$ sudo flash_eraseall /dev/mtd0
$ sudo flashcp jetson-xavier-nx-devkit.spi.img /dev/mtd0

flash_eraseall。🙂
これは危険な気がします。
ということで、ちょっとネットを探してみると、、、

forums.developer.nvidia.com

ふむ。やっぱり消した後に電源落ちちゃって起動しなくなってる人がいますね。そういう場合は、母艦を用意してSDK Managerを使って復旧させるしかないようですね。
一応、母艦があれば失敗してもなんとかなりそうなことが分かったので、挑戦です。

指示に従って、Jetson_Xavier_NX_QSPI_35.1.gzをダウンロードします。
これを解凍すると、jetson-xavier-nx-devkit.spi.imgが出てきます。

ちょっと不安だったので、Linux上で解凍しました。
そしてNXを起動して上記のコマンドを実行。

nvidia@Jetson:~$ sudo flash_eraseall /dev/mtd0
[sudo] password for nvidia: 
flash_eraseall has been replaced by `flash_erase <mtddev> 0 0`; please use it
Erasing 64 Kibyte @ 1ff0000 -- 100 % complete 
nvidia@Jetson:~$ sudo flashcp jetson-xavier-nx-devkit.spi.img /dev/mtd0
nvidia@Jetson:~$ 

flashcp実行しても何もログ出てこないから不安になりますね(汗)
あとは前回と同じように手順通りにSDカードを用意して入れ替えます。
hellkite.hatenablog.com


起動するかどうか不安でしたが…

無事、起動しました!

DeepStream SDKを試すときは、JetPackのバージョンに注意!

さてさて、せっかく購入した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の力を借りながら、あちこちリンクをたどった結果、ようやく見つけました。

developer.nvidia.com

前回と同じ手順でインストールします。手順は簡単ですが時間はかかりますね。

hellkite.hatenablog.com

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カメラを購入したので、次は、それ使って遊んでみようかなと思います。

追記

jtopを入れておくとライブラリのバージョンが一覧で確認できて便利です。

f:id:deis:20210906131318p:plain
jtop

インストール方法は、この辺を参考に。

qiita.com

JETSON XAVIER NXを買ってセットアップ

お久しぶりの更新です。この1年、ずっとCUDA関係の仕事をしていて(大変だったけど)充実していました。
最近、NVIDIAのDeepStream SDKというライブラリを使った仕事が始まったのですが、これがなかなか面白い。カメラの映像からAIを使った画像処理を手軽に実装することができます。これは、自宅で使っても面白いことができるんじゃないか、と思ってJETSONを購入してみました。

今回は、セットアップまでやってみました。

目次

購入しようとしたけど。。

Jetson Xavier NXが、どこにも売ってない!
JETSONに限りませんが、今の半導体不足、マイコンボードは品薄のようですね。実際仕事でもチップがないからという理由で開発が延期になったりで大変です。
Nanoは売ってるんですが、値段が上がっているうえに、画像処理をやってたらすぐに性能に不満が出てきそう *1
探し回った結果、なぜか秋月にほぼ定価で売られていたので購入しました。

買ったのは、Jetson Xavier NX DEVELOPER KITと128GBのMicro SDカードです。両方とも秋月で購入。

f:id:deis:20210825204543j:plain
Jetson Xavier NX

セットアップ

セットアップの方法は、公式サイトを見るのが一番確実。

developer.nvidia.com

SDカードのフォーマットも書き込みも、書いてある通り、SD Memory Card Formatter for WindowsとEtcherを利用。

f:id:deis:20210825204622p:plain
Etcher

順調順調…ん?

f:id:deis:20210825204626p:plain
エクスプローラ大量起動(見えてない)

なんかエクスプローラが起動して、大量にエラーが出た。。SDカードの書き込みが終わってWindowsが読めない形式になったところで自動認識しにいったのかな。。とりあえず、Etcherのステータスは正常終了なので、SDカードを引っこ抜きました。。

動作確認

SDカードの準備ができたので、さっそく箱から取り出します。

f:id:deis:20210825204549j:plain
開封の儀

あれ?3穴コンセント用のACアダプタしかついてない。。幸い、コンセントが用意できたので、今回は大丈夫。2穴コンセントしか用意できない場合は、事前に変換プラグを買っておいた方がいいですね。。

ACアダプタを接続するとすぐに電源が入るので、先にHDMIとキーボードとマウスを接続します。起動した後は、Ubuntuが起動するのを待ちます。すぐにGUIの画面が出てくるので安心ですね。
ひとまずシステムをアップデートしておきます。


初めからCUDAがインストールされていてサンプルも入っているので、動作を確認。

f:id:deis:20210825204633p:plain
CUDAの動作確認

無事、起動しました!

まとめ

ひとまず、まともに動作したので一安心です。同じJetsonでもTX2を初めて動作させたときは、なかなかうまく起動しなくて苦戦した記憶があるので。。
次はDeepStream SDKを試してみたいですね。

*1:仕事で使っているのが、Jetson AGX Xavierということもあって、レスポンスの差があるとストレスたまるかも、というのもある。が、さずがにAGXは買えない(^^;)

PythonをWindowsにインストール

ベイズの本を読んだ結果、統計学に急に興味が沸いてきました。
hellkite.hatenablog.com

ちょうど仕事でも統計を使ったシステムを作っているので、Excelとかよりはプログラミング言語で手を動かしながら進めていきたいなと。
今、統計でよく使用される言語といえば、PythonとRの2つでしょうか。どっちがいいのか悩みましたが、Pythonを選んでみました。昔使っていたことがあって馴染みがあるのが一番の理由です。
まぁ、一応、こんなエントリとかも見てみましたが・・・基本的にできることに大差はなさそう・・・?
postd.cc

本題のPythonのインストールです。
インストーラを使えば簡単にインストールできます。パッケージも大抵のものはpipというパッケージ管理ツールでインストールできます。
が、numpyとかscipyといった有名な演算ライブラリは注意が必要とのこと。この辺を参考にしました。

qiita.com

ちょっと面倒ですね。。
Pythonのコードを編集するエディタですが、VimではなくVisual Studio Codeを使ってみることにしました。本当はVimで統一できればいいのですが、かなり設定ファイルが肥大化していてごちゃごちゃしてしまったので今回は見送り。
Python用のExtensionを入れてみました。
github.com
色々機能があるみたいです。

また、Ctrl+Shift+BでCode内で実行できるようなので設定してみました。
opcdiary.net

後は、Pythonを思い出すところから・・・。
この辺で手ならししてから、統計に踏み込んでみようと思います。

paiza.hatenablog.com

データ分析・解析をやりたいエンジニアにおすすめ!Pythonの入門スライド13選

ofxSimpleGuiTooをoF 0.9.3で使う

作成中のアプリの変数の値をGUIで変更したり処理途中の画像を小さい窓のように表示させたり。そういったことをする必要性が出てきたので、openFrameworksのGUIライブラリを調べてみたところ、ofxSimpleGuiTooが便利そうだったので導入してみました。ofxGUIという標準のライブラリもあるのですが、APIを眺めていたところ画像を表示するような領域は作れなさそうだったので、ofxSimpleGuiTooを選択しました。

openFrameworksは現在最新の0.9.3です。
ofxSimpleGuiTooを以下からダウンロード。
github.com

DependenciesにofxMSAInteractiveObjectがあるので、こちらもダウンロード。
github.com

もうひとつのofxXmlSettingsはoFに標準で入っているので特にダウンロードは必要ありません。

ダウンロードして解凍したら、openFrameworksのaddonsフォルダに丸ごとコピー。テスト用にProjectGeneratorで新規にプロジェクトを作成します。
このとき、これらのaddonを選択します。

これで準備が完了しました。
サンプルコードをビルドしてみたらエラーが出ましたが、includeのパスを変更するだけでちゃんと動きました。
f:id:deis:20160609234124p:plain

ちなみにWindowsでも動きました。
数年更新が止まっているAddonらしいので最新のoFで動作するか心配でしたが、問題なさそうです。
ただ、自由にGUIの位置が変えられると思ったらそういう機能はないみたいです。ちょっと残念。

openFrameworks 0.9.2がリリースされていた

openFrameworks 0.9.2がリリースされています。
download | openFrameworks

先日書いたフラグメントシェーダでアニメーションしなくなった問題ですが、解決していました。0.8.4では動いていたので、openFrameworks自体のバグの可能性も疑っていましたが。。
hellkite.hatenablog.com

とにかく、gl系でバグがあったので、それ系の問題だったみたいです。チェンジログを見ていると、それ以外にも致命的と思われるものがちらほら。0.9.X系を使う人は、最新版を導入しておいた方がよさそうです。


チェンジログはこちら。
https://raw.githubusercontent.com/openframeworks/openFrameworks/0.9.2/CHANGELOG.md

openFrameworksを0.9.0にしたらフラグメントシェーダがアニメーションしなくなった

去年書いたコードが動かなくなった。正確にいうと、動くけどアニメーションしない。書いたコードは、以下のエントリで書いたコード。

hellkite.hatenablog.com

フォーラムとか確認してみたけど、よくわからなかった。。ofRect()が非推奨になっていたので、ofDrawRectangle()に変更したけど、そんなの影響するとは思えないしなぁ。
ofShader周りに変更が入っているらしいので、その辺で何かあるのかもしれない。。

追記
0.9.2にバージョンあげたら解決しました。oFの問題だったみたい。
hellkite.hatenablog.com