2019/11/27 update

ゼロから始めるインストール

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

第3回目は、RaspberryPiのOS、OpenVINO™ツールキットのインストールについてゼロから徹底的に説明します。最後には、正しくインストールされているかをサンプルプログラムを実行して確かめます。
ちなみに、RaspberryPiのOSのダウンロードは、状況にもよりますが1~2時間くらいかかりますので、事前に実行すると良いと思います。

【 目次 】


RaspberryPiのOSインストール

まず始めにラズパイにOSをインストールを行います。

こちらのページに詳しく書いてありますので、内容に従ってインストールお願いします。
以下の全ての項目を実施してください

VNCの活用

先程のインストールでは、ラズパイに繋いだディスプレイ、キーボード、マウスが必須でしたが、インストール後は"VNC"というものを活用することにより、ラズパイのデスクトップ画面を無線でPCにて表示・操作することが可能になります。

VNCは必須の内容ではありませんが、非常に便利ですのでこちらのページを参考に設定してみて下さい。以下3項目です。

OpenVINO™ツールキットインストール

2019年11月27日現在、OpenVINO™ツールキットの最新バージョンは 2019_R3.1 です。
ラズパイへのインストール方法はこちらの公式ページに書いてある通りですが、ここではクラゲ視点の解説を交えながらインストール方法を説明します。少しコマンドを使いますが、初心者の方でも分かるようにご説明します。

※ここでは「PC + Raspberry Pi + Neural Compute Stick」環境の方を対象としております。それ以外の「PCのみ」環境の方はこちら、「PC + Neural Compute Stick」環境の方はこちらを参照してください

ダウンロード

ラズパイ画面左上の「地球儀アイコン」をクリックしてブラウザを立ち上げて以下のURLをコピー&ペーストしてアクセスします

https://download.01.org/opencv/2019/openvinotoolkit/R3/

l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgzというファイルをクリックするとダウンロードが自動的に始まります。

ここからは LXTerminal を使ってコマンド入力を行います。ラズパイ画面左上の「泣き顔のような黒いアイコン」をクリックすると LXTerminal が立ち上がります。

文字が小さいと感じた方は編集からZoon Inを選択すると大きくなります。
以下のコマンドを打ち込んでください。cdの後には半角スペースが必要で、~は「チルダ」という記号です。ダウンロードという日本語以外は全て半角です。最後にEnterキーを押すことで実行されます。

cd ~/ダウンロード/

ちなみに日本語入力を行う場合はラズパイ画面右上の「キーボードアイコン」をクリックすると可能になります。

今打ち込んだコマンドのおおまかな意味を説明します。cdはchange directoryのことで、ディレクト(フォルダ)を~/ダウンロード/という場所に移動せよ という意味です。~はユーザーのホームディレクトリを指します。
次に以下のコマンドを打ち込んでみて下さい。そのディレクトリにあるフォルダやファイルの一覧が表示されます。先程ダウンロードしたファイルが表示されていればOKです。

ls

これ以降はコマンドの詳細説明は割愛して、簡単な解説のみ行います。詳細が気になる方はこちらのページを参照したり、ネットで検索してみて下さい。なお、各コマンドを覚える必要は全くありません。
コマンドは、打ち間違え防止のためにも基本的にはコピー&ペーストすることをお勧めします。

本体のインストール

OpenVINO™ツールキットを展開するフォルダを作成します。/opt/intel/openvinoというフォルダを作成します。

sudo mkdir -p /opt/intel/openvino

先程ダウンロードしたファイルを/opt/intel/openvinoに展開します。コマンドを実行しても何も表示されませんが、裏では動いています。

sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz --strip 1 -C /opt/intel/openvino

フォルダを作成して、ZIPファイルを展開しただけですが、これで本体のインストールは完了です

CMakeのインストール

サンプルコードをビルドするためのCMakeというソフトウェアをインストールします。
続行しますか?[Y/n]という表示が出てきたらyを入力します。たくさん文字が出てきて1分も経たずに終了すると思います。

sudo apt install cmake

環境変数の設定

setupvars.shスクリプトを実行することによりOpenVINO™ツールキットが動作するように環境を整えます。実行して[setupvars.sh] OpenVINO environment initializedと表示されれば成功です。

source /opt/intel/openvino/bin/setupvars.sh

これでOpenVINO™ツールキットを使えるようになりましたが、再起動や別のターミナルを開いた場合にも先程のコマンドが毎回必要で面倒です。毎回先程のコマンドを打たなくても良いように、起動時に自動でコマンド実行するように設定します。

echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

このコマンドが反映されているか確認します。
ラズパイ画面左上の「泣き顔のような黒いアイコン」をクリックして別の LXTerminal を開いてみて下さい。[setupvars.sh] OpenVINO environment initializedと最初に出てくれば成功です。今開いたターミナルは閉じてOKです。

USBルールの追加

現在のユーザーをusersグループに追加します

sudo usermod -a -G users "$(whoami)"

Neural Compute Stickを使ってOpenVINO™を実行できるように以下のスクリプトを実行します。[install_NCS_udev_rules.sh] udev rules installedと表示されればOKです。

sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

これで、OpenVINO™ツールキットとNeural Compute StickをRaspberryPiで実行する準備が整いました!

サンプルのビルドと実行

こちらの公式ページでは、サンプル実行として以下の2つの例が記載されていますが、どちらも同じ顔検出です。ここでは1番目のみ実行することとしましょう。

ユーザーのホームディレクトリにbuildというフォルダを作成して移動します

mkdir ~/build && cd ~/build

サンプルをビルドするためのコマンド前半です。たくさん文字が出て30秒足らずで終了します

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples

続けてサンプルをビルドするためのコマンド後半です。今度は5分程度かかります。[100%] Built target object_detection_sample_ssdと出ればビルド完了です。

make -j2 object_detection_sample_ssd

これで物体検出を行う実行ファイルはできましたが、学習済みモデルと重みが別途必要になります。顔検出が学習済であるモデルと重みをそれぞれダウンロードします。
まずは学習済み重みファイルです。保存完了などと出ればOKです

wget --no-check-certificate https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.bin

次に学習済みモデルファイルをダウンロードします。こちらも保存完了などと出ればOKです

wget --no-check-certificate https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

ここでlsコマンドを実行してみて下さい

ls

このように binファイルとxmlファイルがあることが確認できると思います
今までコマンドで見てきましたが、普通にマウスを使ってもファイルを確認することが可能です。

ラズパイ画面左上の「フォルダアイコン」をクリックし、buildフォルダを選択することで中身が見えます。

最後にディープラーニング推論する画像を用意して下さい。顔が写っている画像であれば何でも良いです。ブラウザ等を使ってインターネットから適当にダウンロードしてもOKです。画像を buildフォルダに入れて下さい。この後のコマンドでファイル名を記述するので、ファイル名をinput.jpgに変更して下さい。右クリックすれば変更できます。

実行の前にNeural Compute Stickをラズパイに挿入します。

これで全て準備が揃いましたので以下のコマンドで実行します

./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -input.jpg

最後の方に [ INFO ] Execution successful という表示が出れば成功です。buildフォルダにout_0.bmpというファイルが出来ていますので、ダブルクリックしてみて下さい

元々用意した画像の顔部分に紫色の矩形が描かれていると思います。別の入力画像を用意すれば、最後のコマンドだけですぐに実行可能です。

さて、ここまでがRaspberrPiへのOpenVINO™インストールと実行確認でした。後半のコマンドが難しいと感じた方やビルド時間が長いと感じた方もいらっしゃると思います。本シリーズではPythonを使ってアプリを作りますので、今のような長いコマンドやビルドなどは今後一切出てきませんので安心してください。モデルと重みと入力画像は同様に必要ですが、Pythonで行う場合はプログラムを書いて即座に実行できます!
次回はPythonの基礎から学んでゆきます。


以上、「ゼロから始めるインストール」でした。