Intel NCStick2用動作環境の構築
Dセンセの悪魔の囁きに踊らされ、Intel NCStick2をポチってしまった。
で、動作環境を構築したときのメモを残しておく。
ホストマシンは、RaspberryPi3 model B+ で Raspbian Buster を使用。
Raspbian Busterのインストールは、 Raspbian Busterのインストール の手順で行った。
JellyWare:ゼロから学ぶディープラーニング推論 → ゼロから始めるインストール をマネしただけだが、 ダウンロード先のURLが微妙に変更されてたり、 このページの説明が細かすぎてちょっとイラっとしたので、 以下に手順の要約を書いておく。
mkdir -p /work/NCS2
cd /work/NCS2/
アーカイブファイル落としてきて、展開するだけ。
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
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を持っているか確認。(デフォルトなら持ってるハズ) 持ってなかったら追加。
次のコマンドで追加してくれるっぽいけど。。。
sh ${INTEL_CVSDK_DIR}/install_dependencies/install_NCS_udev_rules.sh
NCStick2をUSBポートにぶっ挿す。
デカくて他のポートに干渉するので、必要なら延長ケーブルを使ってちょ。
で、認識されたか確認。
lsusb
# こんな感じで表示されるハズ。XXX部分は ぶっ挿したUSBポートで変わる。
・・・
Bus XXX Device XXX: ID 03e7:2485 Intel Movidius MyriadX
・・・
とりあえず、ワークディレクトリは/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をテキトーに表示。
人物の顔が四角で囲まれていることを確認。
めでたしめでたし。