2018/06/29
2018/09/05更新
どうも、ディープなクラゲです。
「ゼロから学ぶディープラーニング推論」シリーズの3回目記事です。
このシリーズでは、Neural Compute StickとRaspberryPiの使い方をゼロから徹底的に学び、成果としてディープラーニングの推論アプリケーションが作れるようになることを目指しています。
第3回目は、RaspberryPiのOS、MovidiusのSDKのインストールについてゼロから徹底的に説明します。
最後にちゃんとインストールされているかをサンプルプログラムを実行して確かめます
先に言っておきますが、それぞれの項目で時間がかかります。ただし、特に操作せず待っているだけです。
食事や昼寝などと並行しながら、計画的に実行すると効率が良いと思います。
ラズパイのOSダウンロード:2時間弱
NCSDKインストール:約1.5時間
サンプルのビルド:約2時間
まず始めにラズパイにOSをインストールを行います。
こちらのサイトに詳しく書いてありますので、インストールお願いします。
違いは、今回はmicroSDカードの容量が32GBであるということだけです。
https://jellyware.jp/kurage/raspi/raspberrypi.html
以下の全ての項目を実施してください
ここは実は必須ではありませんが、非常に便利なので設定しておいた方が良いでしょう。
VNCはVirtual Network Computingの略で、ラズパイのデスクトップ画面をPCから表示・制御できます。例えば、ラズパイに入っているアプリを画面を見ながらPC側で動かしたり、ラズパイに繋がっているカメラの映像をPCで見たりすることが可能になります。
さらに単なる画面転送ではなく、キーボードやマウスも使えます。
VNCを使うことにより、ラズパイ側のマウス、キーボード、ディスプレイが無くても動かせるようになります!
こちらのサイトに設定方法が書いてありますので、手順に従い設定お願いします。
https://jellyware.jp/kurage/raspi/vnc.html
以下の全ての項目を実施してください
ちなみに、RaspberryPiのIPアドレスは、ラズパイ画面右上の以下のアイコンをクリックすることで簡単に分かります。
ここでは、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に変わっていれば成功です!
最新の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
これで準備が整ったので、SDKをインストールします
まず、始めに"workspace"というフォルダを作成します
mkdir ~/workspace
"workspace"へ移動します
cd ~/workspace
以下のコマンドを打ち、GitHubからダウンロードとインストールを一気に行います
ここで最新SDKをインストールするために、オプション"-b"で"ncsdk2"を指定しているのがポイントです。
git clone -b ncsdk2 http://github.com/Movidius/ncsdk && cd ncsdk && make install
コマンドを打ち込んで以下のようなエラーが出た場合の対処法をここで説明します。以下のエラーが出なかった人は読み飛ばしてください。
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の操作を学びます!
以上、ゼロから始めるインストールでした。