Jetson Nanoのセットアップまとめ
まずはMicro SDカードの準備と設定から:
32GBのmicroSDカードを準備する。使用端末がノートパソコンだったのでUSB3.0用のカードリーダーも準備しました。
実際に用いた機器;
続いて、Jetson NanoのホームページGetting Started With Jetson NanoのWrite Image to the microSD Cardの手順にそってmicroSDカードに画像を書き込みます。
英語のサイトなのでGoogle翻訳を通せば分かりやすいです。
Jetson Nano初回起動:
(注意) : 打ち込むコードは$赤字の斜体で記載します。
Jetson Nanoと電源、有線キーボード、有線マウス、HDMIケーブルを用意し、Setup and First Bootの手順で起動していきます。
起動が進んでいくと、System Configurationでシステム設定に入り、Your name、computer's nameなどを決めていきますが、パスワード設定のところでは、簡単なパスワードに設定しておいた方がよいです。sudoのコマンドを打ち込んだときにパスワード入力を求められるので、長くややこしいパスワードでは面倒になります。
また、Log in automaticallyのボックスにチェックを入れておけば、パスワードの入力回数が減ると思います。
言語はEnglishのままでよいですが、キーボードに関してもデフォルトではUSになっており使い勝手が悪いのでJapaneseを追加しました。
続いて、JetsonのUbuntuアップデートを行います。
デスクトップの検索からupdateと打ち込むとソフトウェアのアップデートが見つかると思います。
それが済めば、ターミナルを開き、以下のコマンドを打ち込んで隠しファイルbash用のテキストエディタ―のNanoをインスト―ルします。一行目でパスワードを求められると思うのでSystem Configurationで設定したパスワードを入力しましょう。
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install nano
nanoについての取り扱いは、~11/12までの活動報告・~11/15までの活動報告でも触れていますので参考にしてください。
ここからはインストールの作業が多くなりますが、処理速度を上げるためにJetson Nanoをフルパワーにします。実際のコードは以下になります。
$sudo nvpmodel -m 0
$sudo jetson_clocks
このコードを通したら、Swapファイルの設定を行います。
以下のコードを打ち込みます。
$git clone https://github.com/JetsonHacksNano/installSwapfile
$cd installSwapfile
$./installSwapfile.sh
これでインストール用のメモリーを確保するSwapfileの設定が完了しました。
続いてOPENCVのダウンロードに移ります。
$git clone https://github.com/mdegans/nano_build_opencv
$cd nano_build_opencv
$nano build_opencv.sh
これでbuild_opencv.shのファイルをnanoで編集可能になりました。
configure () {
local CMAKEFLAGS="
-D BUILD_EXAMPLES=OFF
というふうに続いていきますが、-D WITH_GSTREAMER=OFFを
-D WITH_GSTREAMER=ONに書き換えます。
それから、実行します。
$./build_opencv.sh
6時間くらい待ち、完了したらバージョンが4.4.0であることを確認します。
$python
$import cv2
$cv2__version__
続いてYOLOのインストールに移ります。
$git clone https://github.com/AlexeyAB/darknet
このdarknetディレクトリにPre-Trained ModelのYOLOv3,YOLOv3 Tinyを入れておきます。
ここから隠しファイルで編集に移ります。
$nano .bashrc
これで隠しファイルを開きます。
それから以下の文を末尾に加えます。
$export PATH=/usr/local/cuda/bin:${PATH}
$export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
それが済めばMakefileを書き換えていきます。
$nano Makefile
同様に隠しファイルで編集していきます。
-gencode arch=compute_61,code=[sm_61,compute_61]の先頭に#を加えます。
#ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]の先頭#を取り除きます。
最後にNVCC=nvccをNVCC=/usr/local/cuda/bin/nvccに書き換えます。
これが済めばmakeしてから実行します。
$make -j4
$./darknet
これでusage=darknetであれば成功です。
続いてlabelimgのインストールに入ります。
$git clone https://github.com/tzutalin/labelImg.git
$sudo apt install pyqt5-dev-tools
$sudo apt install python3-pip
$cd labelImg
$make qt5py3
$python3 labelImg.py
この後、labelimgにディレクトリファイルを作って1つのサーマル画像のサンプルを入れてラベルを付し保存します。
その後、darknetに先ほどのディレクトリファイルをコピーしてprosess.pyを作ります。パスはpass_data='data/ディレクトリファイル名/'に書き換えておきます。
加えて画像編集ソフトであるffmpegをインストールします。
$sudo apt-get install ffmpeg
CUDAのサンプルコードを実行可能にしておきます。
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0563?page=4
サンプルコードををユーザーが書き換え可能な領域にコピーしておきます。
$cp -a/usr/local/cuda-10.2/samples/ ~ /
続いてmakeしておきます。
$ cd ~/samples/1_Utilities/deviceQuery
$ make
$ ./deviceQuery
$ cd ~/samples/5_Simulations/oceanFFT/
$ make
$ ./oceanFFT
$ cd ~/samples/5_Simulations/smokeParticles/
$ make
$ ./smokeParticles
続いてgpuGraphのをインストールしGPUの稼働状況を可視化します。
For Python 3, Matplotlib may be installed as follows:
$sudo apt-get install python3-matplotlib
$git clone https://bithub.com/JetsonHacksNano/gpuGraph
$cd gpuGraph
$python3 gpuGraph.py
$wget https://openframeworks.cc/ci_server/versions/nightly/of_v20201221_linuxarmv7l_nightly.tar.gz
$tar -zxvf of_v20201216_linuxarmv7l_nightly.tar.gz
$mv of_v20201216_linuxarmv7l_release of_10.1
20201221部分は現在の日付に変更します。
$sudo apt install cmake
$cd of_10.1/scripts/linux/ubuntu
$sudo ./install_dependencies.sh
ここから変更点を挙げていきます。
1つ目:
$cd of_10.1/libs/openFrameworksCompiled/project/makefileCommon
$nano config.shared.mk
で隠しファイルを開き、else ifeq ($(PLATFORM_ARCH),armv7l)をelse ifeq ($(PLATFORM_ARCH),aarch64)に変更して、Ctrl+X→shift+Y→Enter(保存完了)
2つ目:
$cd of_10.1/libs/openFrameworksCompiled/project/linuxarmv7l
$nano config.linuxarmv7l.default.mk
で隠しファイルを開き、41~48行目付近の
#PLATFORM_CFLAGS += -march=armv7
#PLATFORM_CFLAGS += -mtune=cortex-a8
#PLATFORM_CFLAGS += -mfpu=neon
#PLATFORM_CFLAGS += -mfloat-abi=hard
PLATFORM_CFLAGS += -fPIC
PLATFORM_CFLAGS += -ftree-vectorize
PLATFORM_CFLAGS += -Wno-psabi
PLATFORM_CFLAGS += -pipe
4行をコメント化し、69~71行目付近で
#PLATFORM_PKG_CONFIG_LIBRARIES += glesv1_cm
#PLATFORM_PKG_CONFIG_LIBRARIES += glesv2
#PLATFORM_PKG_CONFIG_LIBRARIES += egl
3行をコメント化します。
3つ目:
KISSとTESS2のファイルをOFのものと入れ替えます。
$Download apothecary to recompile kiss and tess2:
$git clone https://github.com/openframeworks/apothecary.git
$cd apothecary/apothecary/
$./apothecary -t linux download kiss
$./apothecary -t linux prepare kiss
$./apothecary -t linux build kiss
$./apothecary -t linux download tess2
$./apothecary -t linux prepare tess2
$./apothecary -t linux build tess2
4つ目:KISS
apothecary/apothecary/build/kiss/lib/linux/libkiss.a
をコピーして、of_10.1/libs/kiss/lib/linuxarmv7l/libkiss.aを消去してペーストします。
5つ目:TESS2
apothecary/apothecary/build/tess2_patched/build/libtess2.a
をコピーして、of_10.1/libs/tess2/lib/linuxarmv7l/libtess2.aを消去してからペーストします。
最後にスクリプトを実行します。
$cd of_10.1/scripts/linux
$./compileOF.sh -j4
今回のセットアップでJetson Nanoから一度離れて、Fusion360・Unity Reflect・Revitを用いて、3Dの空間にオブジェクトを配置する作業に移ります。
OpenCVをバージョンアップの際の-D WITH_GSTREAMER=OFFのオンオフはjetpackとの相性があるようです。
返信削除swapfileの設定はJetson huckを見てください。
opencvのインストールは大変ですが、mdegansさんがスクリプトを用意してくれてるのでそれを使うと面りです。This script builds OpenCV from source on Tegra (Nano, NX, AGX, etc.).
yoloのインストールはtakesanのページで(typoに気を付けて下さい。)それも勉強だったりします。他でもググれば出てきます。openflameworksはこの機会に触れてみると良いと思います。
ご丁寧にありがとうございます。
削除