ラズベリーパイ3 Model Bに Movidius NCS の環境をセットアップ


Movidius NCSと各種フレームワークの学習モデルを使って自己完結型の推論実行環境を作ってみます。

NCSでは以下のOSとフレームワークがサポートされています。

OS:

Ubuntu 16.04(x86_64 コンピュータ or VirtualBox)、Stretch desktop(Raspberry Pi 3 Model B)

フレームワーク:

TensorFlow、Caffe


現時点(2018/09/07)のRaspbian Stretch Desktop環境でプレインストールされているPython3のバージョンは3.5.3でした。ラズベリーパイの環境チェック いろいろ

ラスパイのセットアップ時にswapの拡張などを行っておいてください。


ラズパイ3に環境を構築

 

TensorFlowやCaffeの依存ライブラリー・パッケージをインストールしておく


OpenCV 3.4をインストール

$wget https://github.com/mt08xx/files/raw/master/opencv-rpi/libopencv3_3.4.0-20180115.1_armhf.deb

$sudo apt install -y ./libopencv3_3.4.0-20180115.1_armhf.deb

$sudo ldconfig


Tensorflow 1.4.1 for Python3.5.3をインストール

$sudo apt-get install libblas-dev liblapack-dev python3-dev libatlas-base-dev gfortran python3-setuptools

$sudo pip3 install https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.4.1/tensorflow-1.4.1-cp35-none-linux_armv7l.whl

$sudo apt-get install python3-h5py

 

注:numpyはデフォルトでは1.12が入っていますが、1.13にアップグレードされます。

注:2019/08/19時点のTensorflowの最新は1.9

sudo pip3 install https://www.piwheels.org/simple/tensorflow/tensorflow-1.9.0-cp35-none-linux_armv7l.whl

 

確認

 


Movidius NCS SDK(ncsdk)をインストール

GitHub

サイトには2つのバージョンが存在します。1.12.00.01と2.05.00.02。

ncsdk2は複数のgraphバイナリーがサポートされるようです、APIも大幅変更されたみたいで1との互換性はないそうです。

できたてみたいで不安なので旧バージョン(v1)でやってみます。

1.12.00.01をGitHubから取ってきて、シェルスクリプトでインストール。

$wget https://ncs-forum-uploads.s3.amazonaws.com/ncsdk/ncsdk-01_12_00_01-full/ncsdk-1.12.00.01.tar.gz

$tar zxvf ncsdk-1.12.00.01.tar.gz

$cd ncsdk-1.12.00.01

$./install.sh

2019/07/16現在、NCSDK1のインストール方法が変更になっていました。

gitクローンしてインストールします。

 

OpenCV用のインストール用シェルスクリプトもありますが、済んでるのでパス。

(スクリプトでは3.3.0がインストールされるようです、不具合が出たらその時点で対処しましょう)

約1時間くらいでインストール終了。

なんかする時は新しくターミナルを開いて、そこで実行してね……だそうです。


exampleを実行するには、先にビルドしておきます。

実行にはCaffeも使いますので、これも先にインストールしておく必要があります。

 

 

TensorFlowサンプル実行

cd ncsdk-1.12.00.01/examples/tensorflow/inception_v3

cd /home/pi/ncsdk/examples/tensorflow/inception_v3
$python3 run.py

NCSを挿してないと文句を言われます、当然ですが。

98.8%位の確率で「electric guitar」、ほぼ正解ですね。


Movidius NCSは大きいので、直挿しすると他のポートがすべて使えなくなります。

延長ケーブルを使いましょう。

 


消費したディスク容量

before

after

1.5GBくらい増えてます。

 


Caffe

ncsdkのついでにインストールされるようです、多分。

でも、このままだとCaffeはnumpyのバージョン違いで動かないと思います。

 

numpyをアップグレードします。

1.15.1にアップグレードされますが、TensorFlowは問題なく動きます(^^)。


graphバイナリーファイルの作成

Movidius NCSで推論を実行するには、TensorFlowかCaffeの学習済みモデルをNCS用のgraphバイナリーに変換する必要があります。

graphバイナリーの作成や使った例などは以下を参照してみてください(Caffeを使った例)。

YOLOネットワークモデルをPC+NCSで実行してWebカメラで物体検出してみました

ここではUbuntuの環境で実行していますがRaspbianでも同様に実行できます。

graphバイナリーというのはこういう86MBほどのファイルです。

以下を実行すれば、ラズパイのUSBカメラでもリアルタイム(?)物体検出ができます。

$python3 /home/pi/YOLO/yoloNCS-master/py_examples/object_detection_app.py

 

 

他の学習済みモデルの場合は

学習済みモデル
学習済みモデル ->TensorFlowかCaffeのモデルへ変換 ->NCS用graphバイナリーファイル作成
学習済みモデル



 

Darknetなどのモデルの変換についてはこのページ参照

 

モデル間での相互変換(クロス・フレームワーク・ソリューション…..というそうです)。

MMdnn (日本語があやしいです。開始V1とあるのはInceptionV1のことです)

 

Movidius NCS用graphバイナリ作成の手引き

 


Next

カメラモジュールと連携してリアルタイム物体検出ができるのか?

(OpenCVとの相性でWebカメラなら簡単にできるようだが…..)

 

転移学習/ファインチューニングの独自モデルでやれるのか?

 


Appendix1

Caffe Model Zoo

Caffe2 Model Zoo

Neural Compute Application Zoo (NC App Zoo)

Tensorflow detection model zoo

TensorFlow Model Zoo

MXNet Model Zoo

 


NCSをIoTプラットフォームの頭脳に組み込んでみる

 

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*