FC2ブログ

[AI]Jetson Nano

きっかけから購入まで

https://shop.cqpub.co.jp/detail/2359/
トランジスタ技術 2019年9月号のJetson Nano特集が面白そうだったので、購入してみた。

99ドルといいつつ、国内で買うにはもろもろ入って秋月電子が安い方かと思いぽちっと。
http://akizukidenshi.com/catalog/g/gM-14393/

電源アダプタも出力5V4Aの手持ちがなかったし、動作確認済との事なので一緒に購入した。
http://akizukidenshi.com/catalog/g/gM-10660/

microSDは手持ちを使う。


初期セットアップから起動まで

こちらを参考させて頂く。
https://qiita.com/tsutof/items/66e68c75b462c4faf1cb

OSイメージを入手するため、以下へアクセス。
https://developer.nvidia.com/embedded/downloads
Jetson Download Center

 > For only the Jetson Nano Developer Kit の中の SD card Imageリンクをクリックするとイメージのダウンロードが始まる。
これはページ下の方の以下Imageリンクから得られるファイルと同じだった。

Showing 371 downloads.
Title                  Version  Release Date
Jetson Nano Developer Kit SD Card Image  JP 4.2.2  2019/08/26
DOWNLOADS
Image


 > 同ページの以下リンクへ進む。
 > Getting Started With Jetson Nano Developer Kit
 > Next Step、でWrite Image to the microSD Card まで進む
 > Instructions for Windows
 > SD Memory Card Formatter for Windows のリンクからSDカードフォーマットツールをダウンロード。
   (進んだページでAcceptを押すと、ダウンロードが始まる。)
 > SD Card Formatter 5.0.1 Setup.exe を実行してインストールする。
 > OSイメージを書き込むSDカードをPCに接続する。
 > SD Card Fomatterを起動して、対象のSDドライブ名を指定、クイックフォーマットでSDカードをフォーマットする。
 > 次に、SDカードへのOSイメージ書き込みツール Etcherをダウンロードする。
   これは「Write Image to the microSD Card」のEtcherのリンクから飛び、その先の「Download for Windows (x86|x64)」から入手できる。
 > balenaEtcher-Setup-1.5.56.exe を実行してインストール。インストール進めたらいつの間にか起動してた。
 > EtcherウィンドウのSelect imageでOSイメージを選択。
   この時、ダウンロードしたOSイメージjetson-nano-sd-r32.2.1.zipを解凍するとエラー。
   そのままzipをEtcherで指定したら、sd-blob-b01.imgとして認識された。

 > Select Targetで先ほどフォーマットしたSDカードのドライブ名を選択し、Continue。
 > 最後にFlashをクリック。
 > 20分くらいで完了したが、その時ドライブ名Pくらいまでのたくさんのドライブが認識され、
   フォーマットしますか?ウィンドウが出てびっくり。こういう仕様なのか・・・?
 > とにかくSDカードをPCから外し、Jetson Nanoスロットへ挿入。
 > その他、USBキーボードやら、USBマウスやら、HDMIケーブルを接続。
 > あとは突然発見したmicro-USB接続のACアダプタをJetsonに接続して電源ON。

最初にNVIDIAのロゴが表示された後は、ずっと真っ暗。時間かかるのかな?

10分以上待っても真っ暗なので、再度OSイメージ入手からやってみる。
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#prepare
今度は上記ページの「Jetson Nano Developer Kit SD Card Image」のリンクからゲット。

(注)後で調べて分かったがzipにはファイル容量4GBの制限があるとか。
  4GB以上のファイルはzip64対応の解凍ツールでやるべきとか。
  Lhaplusではエラーになったので、7-zipを使ったら、解凍できた。


今度はSDカードライターツール(Etcher)でzipではなく、解凍後のimgを指定してやり直してみる。
その前に、まずはいっぱい作られたパーティションが邪魔で、かつWidowsの管理ツール > ディスクの管理が
起動しないという状態になっているので、CentOSで認識させ、fdiskでパーティションを削除した。
/dev/sdb1、sdb2、sdb3とたくさんデバイスが見えるのに、fdiskで見るとパーティションは1つだけ。不思議。
とにかくこのパーティションを削除したら、確かに全てパーティション消えた。
これをWindowsへ接続して、フォーマッターとライターで再作業
・・・
しかし、やっぱり同じだった。ライターで書き込みした後は10個くらいのパーティションが生成され、そしてそれをJetsonに挿入しても
最初のNVIDIAのロゴ、そしてその後すぐのNVIDIAロゴの後はずっと真っ暗画面。

もしかしてSDカードの速度が悪い?



初期セットアップから起動まで(SDカードと電源変更で起動成功)

この2つを変更したら、無事起動出来ました。

SDカード変更: SANDISK Ultra microSDHC I 32GB ⑩ > SANDISK Ultra microSDXC I 128GB ⑩A1 UHS Speed Class1
電源: ラズパイ用AC to microUSB 5V/3A(AD-K50P300) > 秋月で購入したACアダプタ5V/4A(型番別途)
  ※ 尚、microUSB電源の場合はそのまま動くが、ACアダプタジャックを使う場合は、J48にジャンパをする必要がある。

起動成功したSDカードで、ACアダプタをラズパイ用にしたら、やはりUbuntu起動せず。
そうなると、「ラズパイ用AC to microUSB 5V/3A(AD-K50P300)」という結論か・・・3Aだからいけると思ったのだが。

(9/7追記)
起動できた環境でACアダプタだけ変えて再確認してみたら、無事起動できた。
そうなると、動く動かないで異なる点は以下。とりあえずはデバッグ後回し。
 1.電源タップとモニタ
 2.SDカード。

起動後、システムコンフィグ

OSが無事起動すると最初だけSystem Configurationウィンドウが起動する。
NVIDIA End User License Agreements > I accept・・・にチェック > Continue
 > WelcomeでEnglishを選択し、Continue
 > Keyboard layout > JapaneseのJapanese、を選択し、Continue
 > Where are you? > Tokyo、を選択し、Continue
 > 以下いれてContinue

Your name: hoge
Your computer's name: jetson
choose a password: xxxx

 > なんだかんだ動いて、再起動もされて、Ubuntu OSが起動された。
ログインすると、NVIDIAロゴとかっこいい壁紙が出る。



UnixBenchやってみる

https://monoist.atmarkit.co.jp/mn/articles/1907/01/news037_2.html

起動後、既にDHCPでIP取得されてたので、特に設定は不要。
# apt-get update > 正常終了
# apt-get install build-essential > なんだかエラー
# apt-get install git > なんだかエラー
# cd /root
# mkdir unixbench
# cd unixbench
# git clone https://github.com/kdlucas/byte-unixbench.git .
# cd Unixbench
# ./Run
なんだかんだテストが動いて、以下のように終了した。

Benchmark Run: 土 9月 07 2019 09:15:33 - 09:43:37
4 CPUs in system; running 4 parallel copies of tests

Drystone 2 using register variables 5245195.3 lps (10.0 s, 7 samples)
Double-Precision Whatstone    5733.4 MWIPS (9.9 s, 7 samples)
 :
System Call Overhead     15000.0 1327351.5  884.9
System Benchmarks Index Score   1062.6




CUDAコアで“Hello AI World”を動作

https://monoist.atmarkit.co.jp/mn/articles/1908/07/news013.html

# apt-get install cmake
E: Package 'cmake' has no installation candidate

何やら見つからない。

https://askubuntu.com/questions/356014/package-cmake-has-no-installation-candidate-ubuntu-12-04

ここを参考にして、以下の通りやったらcmakeがインストールできた。
# apt-get update -y
# apt-get update
# apt-get install cmake -y

cmakeが入ったら、次は以下。
# git clone https://github.com/dusty-nv/jetson-inference
# cd jetson-inference
# git submodule update --init

# apt-get install libpython3-dev python3-numpy

# cd /root/jetson/xxx/jetson-inference/
# mkdir build
# cd build
# cmake ../
 > Model Downloaderウィンドウ > 好きなモデルを選択 > OK
 > これでAlexNetなどから順番にダウンロードが始まる

途中です。




Tensorflowインストール

https://qiita.com/tsutof/items/77b49f71ed81344b9d16

# apt-get install libhdf5-serial-dev hdf5-tools
# apt-get install python3-pip
# apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev
# apt autoremove
# pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor

Exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
 :

# pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu

途中



ラズパイカメラモジュールV2を接続

https://qiita.com/tsutof/items/2d2248ec098c1b8d3e32
こことか参考にさせて頂きました。

Jetson Nanoに対応してるV2モジュールを接続。
フレキの青い方が外側になるように接続して、Jetson Nano起動したら、/dev/video0として認識されてるみたい。

リアルタイム画像表示

# nvgstcapture
とやるだけで、中くらいのウィンドウが起動し、カメラでとってる映像が表示された。

※ 他のブログ見ると、2A USB電源とか使ってたら、nvgstcaptureでフリーズするとか。
   秋月でJetson Nano対応とうたってる4A ACアダプタは特に問題なし。

Ctrl-Cで終了できた。

リアルタイム画像表示(Gstreamerコマンド)

これやると全画面でリアルタイム映像表示になった。
# gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=(string)NV12, framerate=(fraction)30/1' ! nvoverlaysink -e
Ctrl-Cで終了できた。

リアルタイム画像表示(OpenCV)

numpyモジュールのアップグレード。
# apt-get update
# apt install python3-pip
# pip3 install --upgrade numpy
ここで5~10分待った。

以下をnano_cam_test.pyとして保存。

import cv2

GST_STR = 'nvarguscamerasrc \
! video/x-raw(memory:NVMM), width=3280, height=2464, format=(string)NV12, framerate=(fraction)30/1 \
! nvvidconv ! video/x-raw, width=(int)1920, height=(int)1080, format=(string)BGRx \
! videoconvert \
! appsink'
WINDOW_NAME = 'Camera Test'

def main():
cap = cv2.VideoCapture(GST_STR, cv2.CAP_GSTREAMER)

while True:
ret, img = cap.read()
if ret != True:
break

cv2.imshow(WINDOW_NAME, img)

key = cv2.waitKey(10)
if key == 27: # ESC
break

if __name__ == "__main__":
main()


# python3 nano_cam_test.py
こうするとウィンドウが右端に出た。
Ctrl-Cで終了出来た。


リアルタイム画像類推

https://denor.jp/jetson-nano%E3%81%AB%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%92%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%A6%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E7%94%BB%E5%83%8F%E9%A1%9E%E6%8E%A8%E3%82%92%E8%A1%8C

Jetson Nanoシステムのアップデート・アップグレードを行う。
# apt update
# apt upgrade
これもだいぶ時間かかった。

必要なものインストール
# apt install git cmake doxygen

以下は過去に既にやってるので飛ばすが必要な作業として一応メモ。
# cd /root
# git clone https://github.com/dusty-nv/jetson-inference
# cd jetson-inference
# git submodule update --init
# cd jetson-inference
# git submodule update --init
# mkdir build
# cd build
# cmake ../
# make

ビルドが完了したら、リアルタイム推論をやってみる。
# cd aarch64/bin
# ./imagenet-camera googlenet
カメラに映る映像を変えてみると、変わる。
モニターを映すとmonitorと表示され、顔を映すとoxygen maskになった。なぜoxygen mask?

# ./imagenet-camera alexnet
こちらも試してみても同様。
しかし、突然フリーズ。Ctrl-Cでも効かない。
別のterminalを起動してshutdownしてから再起動したら、戻った。




リモートデスクトップ(トラ技)

# apt-get install xrdp
# apt-get install xtightvncviewer
# apt-get install x11vnc
# cd /root/.config
# mkdir autostart
# cd autostart
# touch x11vnc.desktop
# vi x11vnc.desktop

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=
Exec=x11vnc -forever -usepw -display :0
StartupNotify=false
Terminal=false
Hidden=false


# apt-get install xfce4
# echo xfce4-session > ~/.xsession
# vi /etc/xrdp/startwm.sh

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
startxfce4


# reboot
Jetson NanoのIPを確認しておく。
# ifconfig

クライアントPCからリモートデスクトップ接続する。
Microsoft Store
https://www.microsoft.com/ja-jp/
 > Remote Desktopを検索
 > ストアで\0で購入してインストール。
 > 起動して、jetsonのIPとユーザ名とパスワードを入力してログイン。
jetson画面は出たが、表示が非常に重い。



GPUグラフ

# tegrastats
状況が表示される。
# git clone https://github.com/JetsonHacksNano/gpuGraph
# cd gpuGraph
# python3 gpuGraph.py

Traceback (most recent call last):
File "gpuGraph.py", line 7, in
import matplotlib.pyplot as plt
ModuleNotFoundError: No module named 'matplotlib'


matplotlibが見つからないと言われたのでインストール。
# pip install matplotlib




CUDAセットアップ

https://researchmap.jp/joop5kxaf-2001408/

# apt-add-repository universe
# apt-get update

https://developer.nvidia.com/linux-tegra-rel-21

上記ページ > CUDA Toolkit > CUDA 6.5 Toolkit for L4T Rel 21.2
 > cuda-repo-l4t-r21.2-6-5-prod_6.5-34_armhf.deb
スポンサーサイト



コメントの投稿

非公開コメント

カレンダー
09 | 2019/10 | 11
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード