Intel NCStick2用動作環境の構築

Intel NCStick2用動作環境の構築

Dセンセの悪魔の囁きに踊らされ、Intel NCStick2をポチってしまった。
で、動作環境を構築したときのメモを残しておく。

ホストマシンは、RaspberryPi3 model B+ で Raspbian Buster を使用。

Raspbian Busterのインストールは、 Raspbian Busterのインストール の手順で行った。

JellyWare:ゼロから学ぶディープラーニング推論ゼロから始めるインストール をマネしただけだが、 ダウンロード先のURLが微妙に変更されてたり、 このページの説明が細かすぎてちょっとイラっとしたので、 以下に手順の要約を書いておく。

作業ディレクトリの作成

mkdir -p /work/NCS2
cd /work/NCS2/

openVINO の取得とインストール

アーカイブファイル落としてきて、展開するだけ。
R3がリリースされているようなので、これを使う。(2019/10/01現在) ちょくちょくリリースされるみたいなので、https://download.01.org/opencv/2019/openvinotoolkit/をチェックしてね。
2020年になったら、~download.01.org/opencv/2020/~ なのかな?

wget https://download.01.org/opencv/2019/openvinotoolkit/R3/l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz

# インストール先ディレクトリの作成 & オーナー変更(あとあとめんどくさいので)
VINO_DIR_TMP=/opt/intel/openvino
sudo mkdir -p  ${VINO_DIR_TMP}
sudo chown `whoami`:`whoami` ${VINO_DIR_TMP}

# 展開
tar xzvf l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz -C ${VINO_DIR_TMP} --strip-components=1
sed -i "s|<INSTALLDIR>|${VINO_DIR_TMP}|" ${VINO_DIR_TMP}/bin/setupvars.sh

[!NOTE] 以下以前の情報

wget https://download.01.org/opencv/2019/openvinotoolkit/R2/l_openvino_toolkit_runtime_raspbian_p_2019.2.242.tgz

VINO_DIR_TMP=/opt/intel/openvino
sudo mkdir -p ${VINO_DIR_TMP}
sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2019.2.242.tgz --strip 1 -C ${VINO_DIR_TMP}
sudo sed -i "s|<INSTALLDIR>|${VINO_DIR_TMP}|" ${VINO_DIR_TMP}/bin/setupvars.sh

cmakeのインストール

sudo apt install cmake

他にもmakeとかbuild-essentialとか要るけど、ここ でインストールしたやつがあれば大丈夫っぽい。

初期化スクリプトの変更

~/.bashrc の最後に以下を追加。
ここでは${VINO_DIR_TMP}使っちゃダメよ~。

# openVINOの設定
source /opt/intel/openvino/bin/setupvars.sh

初期化スクリプトの変更を反映

シリアルコンソールやSSHでlog inしてる場合は、ここで一旦log offして再log in。
X使ってるならターミナル開きなおす。
もちろん、sourceするだけでも良いけど。
いちお、.bashrcにちゃんと書けてるか確認の意味で一旦log off or ターミナル開きなおしするのがいいかな。
(.bashrcの変更だけなので、再起動までは必要ない)
log in時 or 新しいターミナルを開いた時に [setupvars.sh] OpenVINO environment initialized と表示されることを確認。

グループの追加

ユーザがグループusersを持っているか確認。(デフォルトなら持ってるハズ) 持ってなかったら追加。
次のコマンドで追加してくれるっぽいけど。。。

udevルールの追加

sh ${INTEL_CVSDK_DIR}/install_dependencies/install_NCS_udev_rules.sh

いよいよNCStick2の登場だ~~~

NCStick2をUSBポートにぶっ挿す。
デカくて他のポートに干渉するので、必要なら延長ケーブルを使ってちょ。

で、認識されたか確認。

lsusb 
# こんな感じで表示されるハズ。XXX部分は ぶっ挿したUSBポートで変わる。
・・・
Bus XXX Device XXX: ID 03e7:2485 Intel Movidius MyriadX
・・・

サンプルのbuild

とりあえず、ワークディレクトリは/work/NCS2/を使ってる。
home に色々ぶち込むの嫌いなので。
なお、/workは作成済みでchown済みとする。

# ワークディレクトリの作成
mkdir -p /work/NCS2/sample
cd /work/NCS2/sample

# cmakeの実行
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" ${INTEL_CVSDK_DIR}/deployment_tools/inference_engine/samples

# makeの実行
make -j2 object_detection_sample_ssd

# ネットワークデータの取得
# shell変数の設定時はスペース入れちゃダメだよ~
DL_URL1=https://download.01.org/opencv/2019/open_model_zoo/R2/20190716_170000_models_bin/face-detection-adas-0001/FP16
wget --no-check-certificate ${DL_URL1}/face-detection-adas-0001.bin
wget --no-check-certificate ${DL_URL1}/face-detection-adas-0001.xml

# 入力ファイルをどっかから持ってきて、<<入力ファイル>>.jpgとしてカレントディレクトリに保存しておく
# 顔検出のデモなので、人物が何人か写ってる画像を用意してね。

# サンプル実行
./armv7l/Release/object_detection_sample_ssd  -m face-detection-adas-0001.xml -d MYRIAD -i <<入力ファイル>>.jpg

# out_0.bmpができる

結果の確認

out_0.bmpをテキトーに表示。
人物の顔が四角で囲まれていることを確認。

インストールと動作確認完了

めでたしめでたし。