Jetson Nano のセットアップ〜迷走中〜

セットアップ環境の準備

前回、Jetpackをインストールしたが、Demoアプリは動かせるものの、自分の開発環境として使用するには環境が古い。具体的には、Pythonが3.6だったり、dlibのインストールでバージョンが一致しなかったり。なんとか動作環境を作ったつもりでも、face_recognitionを使用してみると、CUDAを認識しなかったりして・・・。

この調べにOSを入れ直すこと6回目。3日ぐらいかかってます…。

まだ迷走しており完成できてませんが、2022年も開けるので一回公開しようと思います…(´;ω;`)

よいお年を〜

  • Python3.6 -> Python3.9
  • OpenCV 4.6
  • CUDA Toolkit
  • cuDNN
  • dlib
  • face_recognition

OS・インストールアプリを最新化

最初に、以下のコマンドを実行して、OS環境を最新化します。

# ローカルパッケージインデックスの更新
sudo apt update 

# ポイントリリースの適用(アップデート)
sudo apt upgrade -y

スワップ領域を作成する

Jetson Nanoは基本的にRAMが少ないです。そのため、後述のソフトのビルド・インストール中にOSがハングアップしたり、応答しなくなることがよくあるそうです。この事象の回避のため、スワップ領域を作成しておきます(これにより、SDカード容量中、6GB消費します)

# SWAP領域用のファイルを作成
sudo /bin/dd if=/dev/zero of=~/swap.1 bs=1M count=6144
sudo chmod 600 ~/swap.1

# SWAP領域作成
sudo mkswap ~/swap.1

# SWAP領域有効化
sudo swapon ~/swap.1

作業用アプリをインストール

作業に必要となる最低限のアプリをインストールします。

# テキストエディタnanoをセットアップ
sudo apt-get install nano 

# curlをセットアップ
sudo apt-get install curl

xrdpをセットアップ(リモートデスクトップ接続環境を構築)

Jetsonは、GPU性能以外は標準のPCよりスペックが低いので、普段は直接操作するよりも、WindowsMacからリモートで操作した方が使い勝手がよいでしょう。

こちらの手順に従い、xrdpサービスをセットアップして、リモートデスクトップで接続できるようにします。

なお、リモートデスクトップから接続できない(パスワード入力後、すぐ切れてしまう)場合、Jetson Nano側を一度「Log Out」してから接続してみてください。

GPU AI構築を構築する。

OpenCV > Python > jetson-stats > CUDA > cuDNN > dlib > face_recognition の順で、深層学習の環境をインストールしていきます。

CUDA Toolkitをインストール

以下のサイトにアクセスし、環境に一致するCUDAを選択します。

developer.nvidia.com

Ubuntu18.04では、11.6.2が最後のようで、11.7からはUbuntu20.04にしか対応していないようです。アクセス先で、以下の「濃い緑」の選択をしていくと、インストールのためのコマンドが表示されます。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/sbsa/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda-repo-ubuntu1804-11-6-local_11.6.2-510.47.03-1_arm64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-6-local_11.6.2-510.47.03-1_arm64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-6-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

OpenCVをセットアップ(併せて、Python3.8も入れる)

https://i7y.org/opencv-build-on-jetson-nano/

jetson-statsをセットアップ

sudo -H pip install jetson-stats
sudo jtop

Python3.8をデフォルトに設定

初期設定では、Pythonは2.7がデフォルトとなっており、Python3も3.6がインストールされている。alternvativesを使用して、Pythonのデフォルト環境を3.8に設定しておきます。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 3

python、pipでバージョンを確認して、3.8となっていればOK。

# pythonのバージョン確認
python --version
>Python 3.8.0

# pipのバージョン確認
pip --version
>pip 22.3.1 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)

dlibをインストール

以下のサイトの手順を参考に。

qiita.com

なお、cudaとcuDNNはあらかじめJetpackに入っているので入れる必要はない。これらに対してパスを通す必要がある。

sudo nano ~/.bashrc

以下の内容を、上の.bashrcの最後に追記する。

export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

.bashrcの内容を即時反映させる。

source ~/.bashrc

dlibセットアップ後、pythonから以下の内容をインポート出力してみて、Trueが帰ればセットアップ終了。

import dlib
dlib.DLIB_USE_CUDA
> True

Python3 設定

python3を実行する前に環境変数OPENBLAS_CORETYPEにARMV8だよって設定をしとけばよい。

sudo nano ~/.bashrc

以下の内容を、上の.bashrcの最後に追記する。

export OPENBLAS_CORETYPE=ARMV8

.bashrcの内容を即時反映させる。

source ~/.bashrc

webdriverをインストール

sudo apt-get install chromium-chromedriver

VsCodeMicrosoft VisualStudio Code)をセットアップ

VsCodeのダウンロードページへアクセスして、以下の赤枠のリンクをクリックします。

ダウンロードしたdebファイルをクリックします。 認証情報を入力するとインストールが行われ、VsCodeがセットアップされます。