openVINO 2022.1 (Ubuntu 20.04)でNCS2を使うためのメモ
openVINO 2022.1ではpypiからモジュールインストールするだけで使えるようになったのだけれど(python使用時)、
NCS2を使用しようとすると以下のようなエラーが発生します。
RuntimeError: Cannot load library 'libopenvino_intel_myriad_plugin.so: libopenvino_intel_myriad_plugin.so: cannot open shared object file: No such file or directory
どうやらNCS2(myriad)用のshared libraryがないらしい。
インストールミスか?と思ったけど、pypiのインストールファイル確認してみたけど、やっぱり入っていない。
[!NOTE] whlファイルの拡張子をzipに変更するとファイルの中身を確認できる
そこで、ソースからNCS2用のshared libraryをbuildしてみる。
参考: BuildingForLinux
今回はWSL2の仮想マシンでbuildしてみることにする。
また、NCS2用のshared libraryだけが目的なので、pythonモジュールとかはbuildしていない。
たぶん、ちゃんとCMAKEのオプション設定すればbuild時間が短くなるかもしれないけど、そこはお手軽最優先で。
[!NOTE] 色々とbuildのために``apt install`するので、WSL2上のcloneした仮想マシンで実行した。
NCS2はWSL2上で使えないけど、buildするだけなら大丈夫みたい。
仮想マシンはUbuntu22.04を使用。 たぶん、20.04でも同様と思われる。
まぁ、Docker使えという説もある…
openVINOのリポジトリからソース取得。
例によって--depth 1
をつけてディスク容量&通信時間節約。
今回はcontribは使わない。
git -C /work clone -b 2022.1.0 --depth 1 https://github.com/openvinotoolkit/openvino.git
git -C /work/openvino submodule update --init --recursive --depth 1
cd /work/openvino
[!NOTE] これ書いてる時点で2022.1.1がリリースされているけど、-bオプション変えればOKでしょう。 たぶん。。。
必要なモジュールはスクリプトファイルにまとめられているので、それを実行するだけ。
bash install_build_dependencies.sh
cmakeのバージョン3.17以上が必要なので、cmakeがそれ以下だとcmakeをソースからbuildしてくれる。
Ubuntu22.04のデフォルト状態だとcmakeのバージョンは3.16なのでbuildが実行される。
ちょっと時間がかかるけど、気長にお待ちください。
準備ができたので、buildを実行。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. 2>&1 | tee cmake.log
make --jobs=$(nproc --all) 2>&1 | tee make.log
あとはひたすら待つ。
(うちの環境では1時間くらいだったかな)
makeが終わると、以下のファイルが出来ているはず。
この2つをNCS2を使用するターゲットマシンにコピーする。
ターゲットマシンのコピー先はopenVINOモジュールのインストール先のopenvino/libs/
ディレクトリの下。
libopenvino.so
など、soファイルが並んでいるはず。
なお、openVINOモジュールのインストール先は以下のようなコマンドで確認できる。
pip list -v | grep "^openvino"
コピーの方法はエクスプローラでもrcpでも何でもよい。
エクスプローラなど、Windows経由でコピーすると実行属性が落ちてしまうけど、
そもそも実行属性必要ないので気にしなくて良いです。
NCS2を使用してプログラム実行してみて、エラーにならずに実行できればOK。
でも、なんでNCS2用のライブラリ入ってないんだろ?
単なる入れ忘れ? サポート終了目前?