2018/06/29
2018/09/05更新

【03.設定】ゼロから始めるインストール

どうも、ディープなクラゲです。
ゼロから学ぶディープラーニング推論」シリーズの3回目記事です。
このシリーズでは、Neural Compute StickとRaspberryPiの使い方をゼロから徹底的に学び、成果としてディープラーニングの推論アプリケーションが作れるようになることを目指しています。

第3回目は、RaspberryPiのOS、MovidiusのSDKのインストールについてゼロから徹底的に説明します。
最後にちゃんとインストールされているかをサンプルプログラムを実行して確かめます
先に言っておきますが、それぞれの項目で時間がかかります。ただし、特に操作せず待っているだけです。
食事や昼寝などと並行しながら、計画的に実行すると効率が良いと思います。

ラズパイのOSダウンロード:2時間弱
NCSDKインストール:約1.5時間
サンプルのビルド:約2時間

【 目次 】


ラズパイにOSインストール

まず始めにラズパイにOSをインストールを行います。
こちらのサイトに詳しく書いてありますので、インストールお願いします。
違いは、今回はmicroSDカードの容量が32GBであるということだけです。

https://jellyware.jp/kurage/raspi/raspberrypi.html

以下の全ての項目を実施してください

VNCを活用

ここは実は必須ではありませんが、非常に便利なので設定しておいた方が良いでしょう。
VNCはVirtual Network Computingの略で、ラズパイのデスクトップ画面をPCから表示・制御できます。例えば、ラズパイに入っているアプリを画面を見ながらPC側で動かしたり、ラズパイに繋がっているカメラの映像をPCで見たりすることが可能になります。
さらに単なる画面転送ではなく、キーボードやマウスも使えます。
VNCを使うことにより、ラズパイ側のマウス、キーボード、ディスプレイが無くても動かせるようになります!

こちらのサイトに設定方法が書いてありますので、手順に従い設定お願いします。

https://jellyware.jp/kurage/raspi/vnc.html

以下の全ての項目を実施してください

ちなみに、RaspberryPiのIPアドレスは、ラズパイ画面右上の以下のアイコンをクリックすることで簡単に分かります。

NCSDKインストール

ここでは、Neural Compute StickのSDKをインストールします
2018/6/27現在、SDKの最新バージョンはV2.05です。
本コンテンツでは最新バージョンを使って進めていきたいと思います。

以下のページにクイックスタートガイドが載っていますが、2018/6/27現在において、この通りに進めるとSDKは古いV1.12がインストールされます
https://developer.movidius.com/start

古いV1.12の場合、サンプルのビルドに4時間かかりますが、V2.05であれば2時間で終了できます。
最新のSDKであるv2をインストールするためのこちらの手順を参考に、徹底的にインストール方法を説明します。
https://movidius.github.io/ncsdk/install.html

以降では、ラズパイのインストール時と同様に、ターミナルを立ち上げてコマンドを打っていきます

スワップサイズ増加

インストールを確実に成功させるために、"swapfile size"というものをインストール時だけ一時的に増加させます。
デフォルトの100から1024に変更します。全てのインストールが終わったら元に戻します。

まず現状のスワップサイズを見ておきましょう。以下のコマンドを打ち込んでください

free -m

以下のようにSwapのサイズが99になっていると思います

ではスワップサイズを変更します

sudo nano /etc/dphys-swapfile

このような画面になったと思います。この画面は"nano"というラズパイで良く使われるテキストエディッタの画面です。

16行目の"100"を"1024"に変更します。
nanoではマウスによる位置移動は出来ません。↑ ↓ ← → のキーボードを使って移動してください。
"1024"に変更したら、保存して終了しますが、それもマウスではなくキーボードで行います。
以下の通りにキーボードを入力してください。例えば "Ctrl + O"とは "Ctrl"キーを押しながら"O"キーを押すという意味です。
※ 0(ゼロ)ではなくO(オー)ですので注意してください

Ctrl + O
Enter
Ctrl + X

元のコマンド画面に戻ればOKです。
今の変更を有効にするために以下のコマンドを入力します

sudo /etc/init.d/dphys-swapfile restart

再びスワップサイズを見てみましょう

free -m

1023に変わっていれば成功です!

Cythonインストール

最新のSDKをラズパイにインストールしようとすると、現状のままでは途中でエラーになります。
https://ncsforum.movidius.com/discussion/892/version-2-00-5-00-02-fails-install-on-fresh-raspberry-stretch-os

CythonはPythonを処理速度の速いC/C++へ変換するプログラミング言語です
以下のコマンドですぐインストールできます

sudo apt-get install cython3

NCSDKインストール

これで準備が整ったので、SDKをインストールします
まず、始めに"workspace"というフォルダを作成します

mkdir ~/workspace

"workspace"へ移動します

cd ~/workspace

以下のコマンドを打ち、GitHubからダウンロードとインストールを一気に行います
ここで最新SDKをインストールするために、オプション"-b"で"ncsdk2"を指定しているのがポイントです。

git clone -b ncsdk2 http://github.com/Movidius/ncsdk && cd ncsdk && make install
「ncsdk2 not found」 というエラーが出た場合

コマンドを打ち込んで以下のようなエラーが出た場合の対処法をここで説明します。以下のエラーが出なかった人は読み飛ばしてください。

fatal: Remote branch ncsdk2 not found in upstream origin

エラーが出た原因はGitHubからNCSDKが無くなっているためです。
2018年9月現在、インテル社にてNCSDKのGitHubリポジトリを改装中で、今までのNCSDKは一時的に別のサーバーに置いているようです。ここでは、そちらのNCSDKをダウンロードしてインストールする手順を説明します

まずNCSDKが圧縮されたファイルをダウンロードします

wget https://ncs-forum-uploads.s3.amazonaws.com/ncsdk/ncsdk-02_05_00_02-full/ncsdk-2.05.00.02.tar.gz

次にダウンロードしたファイルを解凍します

tar xvf ncsdk-2.05.00.02.tar.gz

フォルダ "ncsdk-2.05.00.02" へ移動します

cd ncsdk-2.05.00.02

最後にインストールを行います

make install

※これ以後は "ncsdk" フォルダを "ncsdk-2.05.00.02" に置き換えて読み進めて下さい

実行結果

2~3分程、すると以下のような画面で止まります

変な日本語ですが、気にせずパスワードを打ち込みましょう
ラズパイのデフォルトのパスワードは"raspberry"です

この後、インストールが終わるまで1時間半くらいかかります。

このような感じで、"Installation is complete."と出れば成功です

エラーになった場合

成功した人は飛ばしてください。
もし、エラーになって以下のような表示になった場合の対処です

原因は不明ですが、たまにエラーになる場合があるようです。
この場合は、以下のコマンドを打ち込んでください。すぐにパスワードを問われるので先ほどと同じものを入力します。

make install

もう1度インストールを始めますが、既にインストール済のパッケージは飛ばすため、時間は重複しませんのでご安心ください。
運が悪いと複数回失敗します。めげずにリトライしましょう。

ちなみに、公式コミュニティでもこの問題が挙がっていますが、原因も解決策も不明のままです
https://ncsforum.movidius.com/discussion/871/raspian-stretch-movidius-ncsdk-installation-failure

サンプルのビルド

NCSDKのインストールが成功したら、サンプルソースを実行できるようにビルドを行います。
OpenCVなど実行に必要なソフトや、ディープラーニングのモデルをダウンロードし、すべてのサンプルをビルドします。

次のコマンドを打つ前に、Neural Compute Stickをラズパイに挿入しましょう。
挿入場所はUSBの上側2箇所のどちらかが良いと思います。下側に挿入してしまうと他のUSBが一切挿入できなくなるためです。

準備ができたら、新たにターミナルを開き、以下のコマンドを実行します

"workspace/ncsdk"に移動

cd ~/workspace/ncsdk

そして、最後のコマンドを打ちます。パスワードを聞かれたら入力してください。デフォルトでは"raspberry"です
これも結構時間がかかります。クラゲは2時間かかりました。

make examples

こんな感じで終了しました

スワップサイズを元に戻す

スワップサイズを元に戻します

sudo nano /etc/dphys-swapfile

16行目の"1024"を"100"に変更します。
保存して終了は以下のキー操作です

Ctrl + O
Enter
Ctrl + X

今の変更を有効にするために以下のコマンドを入力します

sudo /etc/init.d/dphys-swapfile restart

再びスワップサイズを見てみましょう

free -m

Swapのサイズが99に戻っていればOKです

動作確認

最後にNCSDKが正しくインストールされたか確認します

一番シンプルなサンプルコードの入ったフォルダへ移動します

cd ~/workspace/ncsdk/examples/apps/hello_ncs_py

サンプルコードを実行します

python3 hello_ncs.py

こんな感じになれば動作OKです!

ついでに、ディープラーニング推論がちゃんと動くかもチェックしましょう
以下コマンドでフォルダへ移動します

cd ~/workspace/ncsdk/examples/caffe/GoogLeNet

サンプルコードを実行します

python3 run.py

このような表示が出れば動作OKです!

よく見てみると「prediction 0 は 0.996の確率で electric guitar」というのが何となく読み取れます。
「prediction 1 は 0.003の確率で acoustic guitar」というのも読み取れますね。

実はこのサンプルコードは以下の写真をディープラーニングの推論に入力しています。


その結果が"electiric guitar"ということで、見事正解です。
「なぜこの写真がディープラーニングの推論に入力されていると分かったのか?」「この写真はどこから出てきたのか?」など疑問を持たれた方がいらっしゃると思います。サンプルのソースコードを見てみると分かるのですが、具体的には数回先のコンテンツで徹底的に説明します!
ディープラーニング推論プログラムに入る前に、まずはLinuxコマンド基礎やPython基礎を先にサクッと学びましょう!


さあ、これで環境の準備が整いました! 次回はラズパイで使うLinuxコマンドとnanoの操作を学びます!
以上、ゼロから始めるインストールでした。