Raspberry Pi 3 Model Bの格安類似機であるOrange Pi PC 2、Mobidius Neural Compute Stickもちゃんと使うことができます。
ncsdkのインストール手順をメモ。
動作環境
OSはUbuntu 16.04。Orange PI PC2用のイメージは下記ページからダウンロードします。
事前準備
以前の記事に従って、cmakeのビルド&インストールまでやっておきます。
なおcurlはビルドする必要はなく、libcurl4-openssl-devをaptでインストールすればおkです。
ncsdkのビルド
ncsdkのビルド手順は以下のような感じです:
- 依存パッケージのインストール
- tensorflowのインストール
- caffeのインストール
- ncsdkのインストール
- opencvのインストール
- examplesのビルド
このうち、tensorflow、caffe、opencvは公式のビルドスクリプトでは失敗してしまうので手動ビルドが必要になります。まず一度ビルドスクリプトを実行して依存パッケージをインストールするところまでをやってしまいます。
なお、ncsdkの最新バージョンは2ですが、公式のクイックスタート手順ではv1で説明されているので注意してください。(Intelちゃんとしてくれ。。。)
cd ~
wget https://ncs-forum-uploads.s3.amazonaws.com/ncsdk/ncsdk-02_05_00_02-full/ncsdk-2.05.00.02.tar.gz
tar zxvf ncsdk-2.05.00.02.tar.gz
cd ncsdk-2.05.00.02/
make install
make examples
こうすると、依存パッケージのインストールの後、tensorflow-1.7.0のインストールまで来て失敗します。下記のようなエラーです。
Couldn't find a supported tensorflow version, installing tensorflow 1.7.0
Collecting tensorflow==1.7.0
Could not find a version that satisfies the requirement tensorflow==1.7.0 (from versions: )
No matching distribution found for tensorflow==1.7.0
Installation failed: Command 'sudo -H -E pip3 install --trusted-host files.pythonhosted.org tensorflow==1.7.0' return code=1. Error on line 308 in ./install-utilities.sh. Will exit
Makefile:47: recipe for target 'install' failed
make: *** [install] Error 131
RaspberryPiとはアーキテクチャが違うので仕方ないですね。。。(Raspberry Pi 3はarmv7l、OrangePi PC2はaarch64)
aarch64用のwheelを用意してくれている方がいるので使わせていただきます。
# tensorflow-1.7.0のインストール
cd ~
wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.7.0/tensorflow-1.7.0-cp35-none-linux_aarch64.whl
sudo pip3 install tensorflow-1.7.0-cp35-none-linux_aarch64.whl
そしたら再度 cd ncsdk-2.05.00.02/ && make install します。今度はcaffeのビルドで止まってくれます。こんなエラー:
cp: cannot stat '/opt/movidius/NCSDK/ncsdk-aarch64/tk': No such file or directory
Installation failed. Error on line 699
aarch64が公式にサポートされてないのでコードが存在しないのですね。Raspberry Pi用のものを借りましょう。
sudo cp -r /opt/movidius/NCSDK/ncsdk-armv7l /opt/movidius/NCSDK/ncsdk-aarch64
sudo apt install libusb-1.0.0 libusb-1.0.0-dev
cd ~/ncsdk-2.05.00.02/api/src
make
sudo make install
sudo cp ./libmvnc.so.0 /opt/movidius/NCSDK/ncsdk-aarch64/api/c
できたら、 cd ~/ncsdk-2.05.00.02 以下のmake installで展開されたcaffeのコードが存在する /opt/movidius/ssd-caffe に行きましょう。この時点で ncsdk-2.05.00.02 以下で再度make installすると、makeしたncsdk-aarch64が消えてしまうので注意しましょう。
# caffeのビルド
cd /opt/movidius/ssd-caffe/build
make
sudo make install
vi ~/.bashrc
# 以下を追記
export PYTHONPATH="${PYTHONPATH}:/opt/movidius/caffe/python"
source ~/.bashrcで変更を読み込んだら、あとビルドされたツール群も移動させておきます
sudo cp -r /opt/movidius/NCSDK/ncsdk-aarch64/tk /usr/local/bin/ncsdk
sudo ln -s /usr/local/bin/ncsdk/mvNCCompile.py /usr/local/bin/mvNCCompile
sudo ln -s /usr/local/bin/ncsdk/mvNCCheck.py /usr/local/bin/mvNCCheck
sudo ln -s /usr/local/bin/ncsdk/mvNCProfile.py /usr/local/bin/mvNCProfile
さて、これで晴れてncsdkのインストールが最後まで走るようになります。
~/ncsdk-2.05.00.02/install.sh を開いて、要らない動作をしないようにmain関数の一部をコメントアウトします:
function main()
{
echo "Movidius Neural Compute Toolkit Installation"
### initialization phase
init_installer
# If previous install was from NCSDK 1.x release, move them
detect_and_move_ncsdk1
# Find old installs, if found, print old version and remove it
# find_previous_install and remove_previous_install are in install-utilities.sh
#find_previous_install # コメントアウト
#print_previous_ncsdk_install_info # コメントアウト
#remove_previous_install # コメントアウト
### installation phase
#make_installer_dirs # コメントアウト
#download_and_copy_files # コメントアウト
#install_apt_dependencies # コメントアウト
#create_install_logfile # コメントアウト
# Optionally use python virtualenv, USE_VIRTUALENV set in ncsdk.conf
#[ "${USE_VIRTUALENV}" == 'yes' ] && setup_virtualenv # コメントアウト
#install_python_dependencies # コメントアウト
### Install tensorflow and caffe based on settings in ncsdk.conf
#[ "${INSTALL_TENSORFLOW}" = "yes" ] && install_tensorflow # コメントアウト
#[ "${INSTALL_CAFFE}" = "yes" ] && install_caffe # コメントアウト
# install SDK based on settings in ncsdk.conf and C/C++ and Python API
[ "${INSTALL_TOOLKIT}" = "yes" ] && install_sdk
install_api
finalize_installer
}
変更できたら、./install.shでインストールを実行してください。
これでncsdkはインストールできました。
examplesのビルド(OpenCVのビルド)
ncsdkのインストールの後、examplesのビルドの最初ではOpenCVのインストールが行われますが、これも例によってソースコードからビルドする必要があります。以前記事にも書きましたが楽勝ですね。
# opencv 3.4.2のビルド
# opencv
cd
wget https://github.com/opencv/opencv/archive/3.4.2.tar.gz
tar zxvf 3.4.2.tar.gz
rm 3.4.2.tar.gz
wget https://github.com/opencv/opencv_contrib/archive/3.4.2.tar.gz
tar zxvf 3.4.2.tar.gz
rm 3.4.2.tar.gz
mkdir opencv-3.4.2/build
cd opencv-3.4.2/build/
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.2/modules \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \
-D BUILD_opencv_python2=ON \
-D BUILD_opencv_python3=ON \
-D WITH_OPENCL=OFF \
-D WITH_OPENGL=ON \
-D BUILD_TBB=OFF \
-D WITH_CUDA=OFF \
-D BUILD_EXAMPLES=OFF ..
make -j1
sudo make install
sudo ldconfig
終了したら、ようやくexamplesがビルドできるようになります。
cd ncsdk-2.05.00.02
make examples
一部のexamplesはncsdk v1のapiを使ってるので失敗しますがまあ無視してください。もし試したければ個別に下記スクリプトでモデルを変換できます。自分で用意したcaffeやtfのモデルをNeural Compute Stick用に変換するのもこのようにします:
mvNCCompile -s 12 -w XXX.caffemodel XXX.prototxt
ためしに~/ncsdk-2.05.00.02/examples/apps/hello_ncs_pyと~/ncsdk-2.05.00.02/examples/caffe/SqueezeNetを動作させた画像を載せておきます。(Raspberry Piでやったやつしか撮ってなかった。Orange Piでもおんなじように動きます。)
コメント