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のビルド手順は以下のような感じです:

  1. 依存パッケージのインストール
  2. tensorflowのインストール
  3. caffeのインストール
  4. ncsdkのインストール
  5. opencvのインストール
  6. 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でもおんなじように動きます。)

関連記事

iRangeXのドローン用プロポを修理する

blenderで操作不能になったら見るまとめ

香港の重慶大厦(チョンキンマンション)での香港ドル両替はどれぐらいお得なのか検証

自作PCにubuntuでdeep learning用の環境とかを整える

1755 MHz OCのRTX 2080 TiタワーPC(32GBメモリ)を28万円で作った話

Razer Bladeのバッテリーをaliexpressで買って交換した

コメント

コメントを返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です