はじめに
この記事では、nvcaffeをJetpack4.3にインストールする手順を紹介します。
手順
- OpenCV3のインストール
- 前提パッケージのインストール
- nvcaffeビルド
- pycaffeビルド
- 動作確認
1. OpenCV3をインストール
Jetpack4.3にはOpenCV 4.1.1がインストールされていますが、このままだとnvcaffeのビルドで失敗してしまうため、OpenCV 3.4.6をインストールします。
Jetson NanoへのOpenCV 3.4.6のインストールについては、以下の記事が大変素晴らしいので、その手順に従ってインストールします。
JetPack-4.3 for Jetson Nano
https://jkjung-avt.github.io/jetpack-4.3/
最初に以下のリポジトリのスクリプトをJetson上に取得します。
https://github.com/jkjung-avt/jetson_nano
次にに以下の記事の「 1. Basic set-up」まで実行します。
https://jkjung-avt.github.io/jetpack-4.3/
次に以下の手順に従って「OpenCV 3.4.6」をインストールします。基本的にはスクリプトを実行するだけです。ビルドには2時間ぐらいかかります。
https://jkjung-avt.github.io/opencv-on-nano/
2. 前提パッケージのインストール
前提のパッケージをインストールします。
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev libhdf5-dev protobuf-compiler
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install libopenblas-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
$ sudo apt-get install libturbojpeg libturbojpeg-dev
$ sudo ln -s /usr/lib/aarch64-linux-gnu/libturbojpeg.so.0.1.0 /usr/lib/aarch64-linux-gnu/libturbojpeg.so
3. nvcaffeをビルド
nvcaffeのソースを取得し、Makefile.configを書き換えてビルドします。
$ cd ~
$ git clone https://github.com/NVIDIA/caffe.git
$ cd ~/caffe/
$ git checkout v0.17.2
$ cp Makefile.config.example Makefile.config
$ vi Makefile.config
$ make -j 4 all
Makefile.configの変更箇所は以下です。
以下のコメントを外す。
USE_CUDNN := 1
PENCV_VERSION := 3
WITH_PYTHON_LAYER := 1
CUDA_ARCHは以下のように修正します。もともとあったものはコメントアウトしておきます。
CUDA_ARCH := -gencode arch=compute_53,code=sm_53 \
-gencode arch=compute_53,code=compute_53
python2.7をコメントアウトして、python3のコメントを外します。その際、バージョンを3.5から3.6に変更します。
# PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Uncomment to use Python 3 (default is Python 2)
PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_INCLUDE := /usr/include/python3.6m \
/usr/lib/python3.6/dist-packages/numpy/core/include
LIBRARY_DIRSに/usr/lib/x86_64-linux-gnuを追加します。
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu/hdf5/serial
4. pycaffeをビルド
pycaffeも使いたいので、ビルドします。
scipyのインストールでハマりました。
$ sudo apt-get install gcc gfortran python-dev libopenblas-dev liblapack-dev libfreetype6-dev cython
$ sudo pip3 install pybind11
$ sudo pip3 install scipy
$ mkdir -p ~/src
$ cd ~/src
$ wget https://pypi.python.org/packages/03/98/1521e7274cfbcc678e9640e242a62cbcd18743f9c5761179da165c940eac/leveldb-0.20.tar.gz
$ tar xzvf leveldb-0.20.tar.gz
$ cd leveldb-0.20
$ python3 setup.py build
$ sudo python3 setup.py install
$ pkgs=`sed 's/[>=<].*$//' ~/caffe/python/requirements.txt`
$ for pkg in $pkgs; do sudo pip3 install $pkg; done
$ cd ~/caffe
$ make pycaffe
.bashrcに以下を追加します。
export PYTHONPATH=/home/nvidia/caffe/python
5. 動作確認
以下のコマンドで動作確認します。
nvidia@nvidia-desktop:~/caffe$ source ~/.bashrc
nvidia@nvidia-desktop:~/caffe$ python3
Python 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import caffe
>>> quit()
nvidia@nvidia-desktop:~/caffe$ ./build/tools/caffe time --gpu 0 --model ./models/bvlc_alexnet/deploy.prototxt
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0310 23:21:23.578208 28238 parallel.cpp:44] P2PManager::Init @ nvidia-desktop
I0310 23:21:23.578884 28238 caffe.cpp:709] This is NVCaffe 0.17.2 started at Tue
・・・
省略
・・・
I0310 23:21:51.296883 28238 caffe.cpp:665] Average Backward pass: 110.804 ms.
I0310 23:21:51.296905 28238 caffe.cpp:667] Average Forward-Backward: 212.82 ms.
I0310 23:21:51.296928 28238 caffe.cpp:669] Total Time: 10641 ms.
I0310 23:21:51.296952 28238 caffe.cpp:670] *** Benchmark ends ***
nvidia@nvidia-desktop:~/caffe$
参考にさせて頂いた情報
以下のサイトの情報を参考にさせて頂きました。
特に最初の記事に書いてある必要なもの↓に大変共感しました。(Scipyのインストールでかなりハマったので)
SciPy(依存パッケージ)のインストール失敗やエラーが出てもあきらめない強い気持ち
[やってみた] Jetson Nano でDeepComposerのWorkshop Lab2(GANカスタムモデルの学習&推論)をやってみた。#AIM223 #reinvent 2019
https://dev.classmethod.jp/cloud/aws/jetson-nano-deepcomposer-workshop-lab2/
nvcaffe install jetsontx2
https://github.com/atinfinity/lab/wiki/nvcaffe-install-jetsontx2
How to Install Caffe and PyCaffe on Jetson TX2
https://jkjung-avt.github.io/caffe-on-tx2/