4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

jetson nanoを深層学習-画像解析用途として使うまでの初期設定備忘録

Last updated at Posted at 2020-08-21

ハードウェア側

  • 基本
    • jetson nano B01
    • 電源 5V 4A ->
    • NVIDIA Jetson Nanoケース ->
    • micro SDカード 256-512G
    • 無線usbドングル =>
      • 電波強度が不安ならこういうのも ->
  • スタンドアロンで使う場合
    • ディスプレイ(hdmi対応)
    • hdmiケーブル(ディスプレイについていることが多い)
    • マウス、キーボード
  • ヘッドレスで使う場合
    • コントロール用別途pc
    • microusb - usb ケーブル (1m以上あるとjetson nanoの置き場所が制限されなくて良し)

ソフトウェア側

Jetson Nano Developer KitをSDカードにインストール

ヘッドレスセットアップ

jetson nanoをホストとmicro-usbで接続。ホスト側で以下のコマンドを実行。設定画面に入る。

ls -ls /dev/cu.* #microusbが1台しかないことを確認
screen /dev/cu.usbmode* 115200 -L

初期アップデート

sudo apt -y update
sudo apt -y install nvidia-jetpack
sudo apt -y install nano

自動ログイン

sudo nano /etc/gdm3/custom.conf

以下の2行の#削除。user1をアカウント名に変更

custom.conf
#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

起動時のgui,cui設定

sudo systemctl get-default #現在の設定表示
#sudo systemctl set-default multi-user.target #GUIなし
#sudo systemctl set-default graphical.target #GUIあり

jetson_clocksとmemory swapの自動起動を有効にする

jetson_clocks

参考url: https://evolt.club/threads/make-jetson-clocks-start-at-boot.92/

ヘッドレスの場合

which jetson_clocks #should be /usr/bin/jetson_clocks
sudo nano /etc/rc.local

rc.localファイルを作成、以下の内容をコピペ

rc.local
#!/bin/sh -e
# rc.local
#Maximize performances
( sleep 60 && /usr/bin/jetson_clocks )&

exit 0

権限付与

sudo chmod +x /etc/rc.local

ヘッドレスではない場合、以下でも可(?)

nano ~/.profile
.profile
/usr/bin/jetson_clocks

Memory Swap

git clone https://github.com/JetsonHacksNano/installSwapfile
cd installSwapfile
./installSwapfile.sh

必須な諸々

参考url
- https://www.pyimagesearch.com/2019/05/06/getting-started-with-the-nvidia-jetson-nano/
- https://blog.goo.ne.jp/pearlwing/e/c389e4b310288ac99d9e4c974a8c5451
- https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html

sudo apt-get -y install git cmake
sudo apt-get -y install libatlas-base-dev libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran libffi-dev
sudo apt-get -y install python3-dev
sudo apt -y install python3-testresources
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
rm get-pip.py

sudo apt-get -y install libfreetype6-dev python3-setuptools
sudo apt-get -y install protobuf-compiler libprotobuf-dev openssl
sudo apt-get -y install libssl-dev libcurl4-openssl-dev
sudo apt-get -y install cython3
sudo apt-get -y install libxml2-dev libxslt1-dev

(任意)jetson nano版htop

sudo -H pip install jetson-stats

実行はjtop

virtualenv

sudo pip install virtualenv virtualenvwrapper
nano ~/.bashrc

以下の内容をたす

bashrc
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

activate

source ~/.bashrc

環境名baseを作成

mkvirtualenv base -p python3 --system-site-packages

(追記) --system-site-packagesをいれると、いくつかのパッケージを追加インストールしなくてよいものの、パッケージインストール時に依存するモジュールのバージョンミスマッチが起きたりするのでないほうがやはりよいかも(pip install jupyterのcffiとかcffiとか)

(任意)再度bashrcに以下の内容を追記することでterminal起動時に常にvirtualenv環境が立ち上がる

bashrc
workon base

OpenCVインストール

便利なスクリプトが公開されている。virtualenv内で実行。最後にtempファイルを消さなければ他の環境でも利用可能?

takes_alot_of_time
git clone https://github.com/mdegans/nano_build_opencv.git
cd nano_build_opencv
./build_opencv.sh

virtualenv作成時、--system-site-packagesを有効にしていればopencvがvirtualenvで使えるはずなものの、認識されないときは手動でsymbolic linkを貼る

an_example
workon base
cdvirtualenv
pwd
cd lib/python3.6/site-packages
ln -s /usr/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-aarch64-linux-gnu.so

Tensorflow

scipy_takes_time
pip install numpy
pip install -U cython future mock h5py keras_preprocessing keras_applications gast futures pybind11 flask lxml

pip install --pre --extra-index-url  https://developer.download.nvidia.com/compute/redist/jp/v44/ tensorflow

protobuf compilerを手動で入れなおす

pipで入るバージョンはとても遅いらしい。
参考url:https://www.pyimagesearch.com/2020/03/25/how-to-configure-your-nvidia-jetson-nano-for-computer-vision-and-deep-learning/

  • (追記) pbtxtの読み込みスピードはさほどかわらなかった(?)。cf. ssd mobilenetv2 backbone 60sec. -> 50 sec. この問題はtensorRT周りの解決策なのかもしれない
takes_time
wget https://raw.githubusercontent.com/jkjung-avt/jetson_nano/master/install_protobuf-3.8.0.sh
sudo chmod +x install_protobuf-3.8.0.sh
./install_protobuf-3.8.0.sh

#virtualenvの場合、該当環境でインストールしなおす
workon base
cd ~
cp -r ~/src/protobuf-3.8.0/python/ .
cd python
python setup.py install --cpp_implementation

"google.protobuf" not foundが出てくる場合(要確認)

  • site-packagesにgoogleのフォルダが作成されている(auth)との関係でインポートエラーが起きるのかもしれない。
  • /home/phytometrics/.virtualenvs/base/lib/python3.6/site-packages/protobuf-3.8.0-py3.6-linux-aarch64.egg/google/ 直下のprotobufを読み込むことができれば解決する。
  • rm /home/phytometrics/.virtualenvs/base/lib/python3.6/site-packages/protobuf-3.8.0-py3.6-linux-aarch64.egg/google/__init__.py
  • これで必ず解決するかは不明。ただ__init__.py関係のエラーであるとstackoverflow周りで議論されているのでそういうこと?

Jupyter Notebook

インストール

pip install jupyter

設定

configuration and password

pip install environment_kernels
jupyter notebook --generate-config
jupyter notebook password

config編集

nano /home/phytometrics/.jupyter/jupyter_notebook_config.py

以下を編集
現在のバージョンではvirtualenv(とconda)のディレクトリを自動サーチしてくれるので指定は必要ない。

jupyter_notebook_config.py
#追記
c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
#編集
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080

自動起動


nano /etc/systemd/system/jupyter.service

USERとGROUPは適宜変更
virtualenvのpythonでjupyterを実行するためexecstartのコマンドに追記

jupyter.service
[Unit]
Description=Jupyter notebook

[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/home/phytometrics/.virtualenvs/base/bin/python /home/phytometrics/.virtualenvs/base/bin/jupyter notebook
User=phytometrics
Group=phytometrics
WorkingDirectory=/home/phytometrics/Desktop
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

有効化

sudo systemctl enable jupyter.service

 現在のOSを配布可能イメージとしてまとめる方法

Jetson Nanoの配布可能イメージを作成する

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?