みなさんこんにちわ、こんばんわ。

SAIです。

 

更新できていなくてすみません。

最近仕事が忙しいのもあるのですが、、、

 

Jetson Orinが壊れてしまって。。

 

起動しようとしても画面が真っ黒なの。


 

 

JetsonNanoはSDにUbuntuが入っているので、

SDを入れなおすことで復旧できるのですが、

 

JetsonOrinは、Flashなので入れ替えが効かないのですよね。

 

復旧するためにSDK Managerが必要になるのですが、

SDK Managerのインストール条件は、

メモリ8G以上

Ubuntu18以降

 

SAIの持っているJetson Nanoは4GByteですが、

がんばってみたものの、

残念なことにJetson NanoにはInstallできなかった。。

 

というわけで、ラップトップにUbuntuをインストールして

復旧しようとしたら。。。。

 

ノートPC迄起動しなくなって、

10年前のデスクトップPCをフル装備でUbuntuを入れて何とか復旧。

 

 

これも結構苦労しました。

途中から写真とか撮っていなかったので、いろいろ残っていませんが、

 

Manual Setup を使うのがキーでした。

 

その後、いろいろ忙しくて、

この語仕事が忙しくなるので、

チョットのんびり更新になると思います。

 

というか、

このシリーズ見てる人いる?

 

最近のログを見ると、JetsonよりもArduinoの方がアクセス数が多いのですよね。

 

この記事みてる人・・・いますか?

 

 

この記事の続きが知りたい人

 

 👍 ボタン押してほしいです。

 

 

 


それでは、SAIでした。

 

 

みなさんこんにちわ、こんばんわ。

SAIです。

 

今日からは、JetsonNanoでHelloAiWorldを動かしてみたいと思います。

 

今日の作業は、本当に”作業”です。

 

HelloAiWorldを動かすための儀式と思って、事前準備を頑張ってください。

 

まず、HelloAiWorldですが、

NVidiaが公開しているGitHubにDockerが用意されています。

 

それをなぞることで、画像認識などを理解しようというものです。

 

画像の認識のさせ方や、画像の認識するプロセス、プログラムが用意されているようです。

 

ここです↓

jetson-inference/README.md at master · dusty-nv/jetson-inference · GitHub

 

 

HelloAiWorldを動かすには、JetpackとdustyさんのGitHubに掲示されたデータが必要になります。

 

1.JetPackのInstall

 

まずはJetPackのInstallです。

 

ここをクリックすると、JetPackのInstall方法の画面に飛びます。

早速Installしようと思ったのですが、

どうやらJetsonNanoの場合は最新盤のSDカードImageで起動している場合は、

既にJetpackがすでにInstallされた状態になっているようです。

 

 

ということは、

JetsonNanoはJetpackのInstall作業は不要ですね!

 

AGX Orin や Xavier の場合は、手動でInstallしないといけないようですね。

 

 

 

2.DockerContainerの起動

 

HelloAiWorldを動かすためにはもう一つ、

GitHubから、NVidiaのHPに乗ってるDustyさんのGitから、

DockerContainerをダウンロードしておく必要があります。

 

GitHubの場合はCloneというらしい。

 

この手順に沿って、Closeしますよ!

Cloneは結構な容量をダウンロードしなければならないので、

結構時間がかかります。

 

余裕のある時や寝る前に実行する必要があります。

注意するのは、実行するのは後述の★まで実行して、放置です

 

 

 

まず打ち込むコマンドはこれ

 

git clone https://github.com/dusty-nv/jetson-inference

 

このコマンドは、1回実施してしまえば以後はGitHubが更新されるまでは不要のはずですね。

 

ただ、これだけで結構時間がかかります。

 

しかしながら、初回はこの次のDockerContainerの起動の方が時間がかかるので、

このCloneはお風呂でも入って待ちます。

 

 

Cloneで各ファイルを落としたら、

次にDockreContainerを起動します。

 

CloneによってJetson-Interfaceというフォルダが作られています。


 

このフォルダの中にある、

DockerContainerを起動するわけです。

 

cd jetson-inference

docker/run.sh

 

 

初回は、ここで大量のダウンロードが開始されます。

めっちゃ時間がかかるんです。

時間がかかるのは初回だけなので、2回目以降は気にすることはないのですが、

初回はネット環境やSDカードの能力によっては数時間かかるので、

睡眠前に寝ながら放置が良いと思います。

 

一度DockerContainerを起動完了まで進めたら、

2回目以降は↓このようにすんなり起動できますよ

 

 

 

3.マウントされたボリューム

 

先程のDockerContainerを実行したことで、いろいろダウンロードされました。

マウントされたデータボリュームは、以下のような役割の様です。


◆jetson-inference/data

 ネットワークモデル、シリアル化されたTensorRTエンジン、およびテスト画像
◆jetson-inference/python/training/classification/data

 分類トレーニングデータセットを格納するところ

◆jetson-inference/python/training/classification/models

 PyTorch によってトレーニングされた分類モデルを格納するところ
◆jetson-inference/python/training/detection/ssd/data

 機械学習に使うトレーニングデータセットを格納
◆jetson-inference/python/training/detection/ssd/models

 PyTorch によってトレーニングされた検出モデルを格納
 

これらのマウントされたボリュームは、

モデルとデータセットがコンテナーの外部に格納され、コンテナーがシャットダウンされても失われることはありません。


逆に言うと、これら以外は改変してもDockerContainerを再起動すると消えちゃう感じですね。

 

4.AXG Orinの場合

 

Orinの場合、結局原因はよくわからないのですが、

どうもJetpackの最新化のやり方がよくわかりませんでした。

 

いわゆる、気がついたら動いていた というやつです・・・

 

SDK Managerで、Installを試みたのですが結局うまくいかず、

いろいろ調べてみたんですが、、

 

Getting Started with Jetson AGX Orin Developer Kit | NVIDIA Developer

 

JetsonOrinのセットアップ手順にあるこれ↓

 

sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack

 

どうも、これで最新化できる臭いんですよね。もちろんaptしているので、めっちゃ時間がかかります。

JetsonNanoと比べたらダウンロード処理はかなり早いので、1時間かからない程度だったかな?

お買い物に行ったり、お風呂に入ったり、テレビを見つつ時間かけてる間に更新しました。

 

 

これを実行したら動くようになった気がするのですが、

正直半信半疑です。

 

この間色々実施したので、他にもクリアするためのキーがあったのかもしれないです。

 

5.ずっと古いJetsonNanoのSDImageの場合

 

実は、JetsonNanoで初回動作させたときは、やっぱり苦労しました。

UbuntsuにDockerがのっかっていなかったらしく、DockerをInstallして動かしたような気がします。

 

 

 

 

$ sudo apt install docker.io=17.12.1-0ubuntu1
$ sudo cgroupfs-mount
$ sudo usermod -aG docker $USER
$ sudo service docker start

 

この時も、やっぱりいろいろやってたら動くようになったってやつなんですよね。

 

ご存じの方がいたら是非教えてください。

 

それでは今日はこの辺で。

 

◆目次へ戻る◆

 

 

 

 

 

 

 

 

みなさんこんにちわ、こんばんわ。

SAIです。

 

 

今日は、JupiterNoteBookで回帰プロジェクトを動かしてみましょう。

 

今日のソースも、Nvidiaの「Getting Started with AI on Jetson Nano」です。

 

 

 

 

またまたCSIカメラを使いますので接続しておきましょう。

 

 

CSIカメラを繋いだ状態で、JupiterNoteBookを起動し、

regression (回帰プロジェクト)を動かしてみましょう!

 

regression は、事前にトレーニング済のResNet18に対して、

再トレーニングする形の様です。

 

 

1.regressionを開く

 

JupiterNotebookを起動したら以下のようなフォルダ構成が見えると思います。

regression というフォルダがありますね。

 

 

今日は、これを動かしてみます。

 

↓こんな画面が見れると思います。


 

 

今回も、CSIカメラを使うので、

コードを実行する前に、CSIカメラが使えるようにコードを改変しちゃいましょう。

for USB の部分のコードが有効化されていて、

for CSI の部分のコードが[#]で無効化されています。

 

USBカメラをコメントアウトして、CSIカメラの部分を有効にしましょう!

 ↓

 

2.データセットについて

 

今回は、データセットの話は省略です。

 

基本的には分類をするんだけど、それは1-3の時と基本同じです。

 

 

https://ameblo.jp/saiduke/entry-12816804468.html

 

ポチポチ画面を進めて、撮影する画面まで進みましょう。

 

 

3.回帰プロジェクトの写真の意味

 

今回の回帰プロジェクトでは、顔の部位の位置を学習します。

 

鼻、右目、左目が例題になっていますね。

 

写真を撮影する際に、学習したい部位をクリックすることで撮影します。

この時、学習したい部位の座標が重要になります。

 

↓こんな感じらしいです。

 

写真を撮影すると、保存する写真の名前の先頭にX座標とY座標が登録されます。

 

うっかり違う場所をクリックしないように注意しながら撮影しよう!

 

4.教師画像の撮影

 

とりあえず、自分の顔を撮影しながら自分の目をクリックはむずいので、

「ばりぃさん」に登場いただきました。

 

#が、結果的にぬいぐるみではダメでした。。

#とりあえずそのまま説明します。

 

撮影画面で [nose] を学習するので、

ばりぃさんを撮影しながら、左の枠のばりぃさんの鼻をクリックして撮影します。

角度などを20~30枚撮影しましょう。

 

 

同様に、右目と左目も角度を変えながらポチポチ撮影していきます。

 

 

5.モデルの学習(教師あり学習)

 

写真が撮影出来たら、AIによる学習をする番です。

学習は↓ここで実行します。

 

 

学習する前に epochs の数値を10とか20に変更しましょう。

 

今回SAIは30にしてみました。

理由は・・・認識が悪かったからやり直したんだ。

 

 

で・・・

 

学習したものの・・・

バリィさんだと認識してくれなかった。。

 

 

回帰学習の場合は、

もしかすると、ぬいぐるみだとだめなのかも。。。。

 

 

というわけで、Notebookを再起動してやり直しです。

 

 

6.再画像撮影とモデルの学習

 

「ばりぃさん」で失敗したので、今度は「SAIの顔」で学習します。

 

自分の顔だと、撮影が難しいですね。

 

 

改めて、鼻と右目と左目をパシャパシャ。

 

 

人間の顔だと、しっかり学習してくれました。

 

 

原因はよくわからないですが、

バリィさんは特徴が少ないので難しいのかもしれないですね。

 

というわけで、自分の顔でやらないとだめみたいだよ。

 

 

というわけで、回帰学習でした。

 

 

 

それでは今日はこの辺で。

 

◆目次へ戻る◆