#ハードウェア側
- 基本
- スタンドアロンで使う場合
- ディスプレイ(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をアカウント名に変更
# 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ファイルを作成、以下の内容をコピペ
#!/bin/sh -e
# rc.local
#Maximize performances
( sleep 60 && /usr/bin/jetson_clocks )&
exit 0
権限付与
sudo chmod +x /etc/rc.local
###ヘッドレスではない場合、以下でも可(?)
nano ~/.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
以下の内容をたす
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環境が立ち上がる
workon base
OpenCVインストール
便利なスクリプトが公開されている。virtualenv内で実行。最後にtempファイルを消さなければ他の環境でも利用可能?
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を貼る
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
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周りの解決策なのかもしれない
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)のディレクトリを自動サーチしてくれるので指定は必要ない。
#追記
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のコマンドに追記
[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の配布可能イメージを作成する