注意:この記事は古くなっています。
最新の状況は随時、ネットワークで検索してください。
pip で openvinoがインストールできるようになっています。
https://pypi.org/project/openvino/
Ubuntu 18, Ubuntu20 でのaptを使うインストール手順
以下のリンクをたどってください。
概要
OpenCVの初期のリリースはIntelによってなされた。その後長いことIntelとは独立な状況が続いたが、近年またOpenCVにIntelが深く関与するようになった。
最近では、Intelが開発したOpenVinoがOpenCVで使いやすい状況になってきている。
OpenVinoとは、既存のフレームワークで学習済みのモデルを、再学習させることなしに軽量化し、ターゲットデバイスでの動作速度の向上させるものです。
そのOpenVinoで軽量化したモデルをターゲットデバイスで実行させる部分が、OpenCVに取り入れられてきた。
そのことをこの記事では述べる。
readNetFromModelOptimizer()
OpenVinoのmodel optimizer で最適化済みのモデルをOpenCVで推論できるようになっている。
Model Optimizer を使う利点:
GPUやCPUで学習されたDNNのモデルは、浮動小数点演算をするモデルの場合が多い。Cの浮動小数点演算がdoubleが基本になっていることもあって、倍精度の浮動小数点演算を使っていることが多い。
しかし、深層学習では、FP32,FP16の浮動小数点演算でも十分なことが多い。演算するデータ型のbit幅が少ないほど計算量を抑えこむことができる。しかも、Model Optimizerでは、学習のやり直しが不要なまま、既存の学習結果から、FP32やFP16などのbit幅の少ない学習モデルに変換する。
このことでIntelは、Intelのターゲットデバイス上で、計算量の少ないモデルの実行を可能にしている。そのModel Optimizerで変換済みの学習結果をOpenCVで利用できるようになってきているようだ。
Intel® Inference Engine backend (OpenVINO™):をサポートするようになってきている。
cv::dnn::Target
には、cv.dnn.DNN_TARGET_MYRIAD、cv.dnn.DNN_TARGET_FPGAが含まれている。
執筆時点での状況
cv2.dnn.readNetFromModelOptimizer() を使うには、それようにOpenCVしなければならない。
まず、OpenVinoをインストールする。
インストール後にOpenVinoが利用できる環境にしておく。
source /opt/intel/openvino/bin/setupvars.sh
opencv, opencv-contrib のビルド時にOpenVinoのinference engine を利用できるようにしておくこと。
cmakeを実行してMakefile を作る際に、以下のオプションを有効にしておく。
-DWITH_INF_ENGINE=ON
-DENABLE_CXX11=ON
OpenCVのWikiにInference Engine を有効にしてビルドする方法が書いてある。
https://github.com/opencv/opencv/wiki/Intel%27s-Deep-Learning-Inference-Engine-backend
OpenVino 用の pre-trained model をダウンロードするには
OpenVino の各モデルのGFlops の値が書かれている。
PINTO0309 氏によるモデルの情報
OpenVino上で動くモデルについて詳しい。
https://github.com/PINTO0309/PINTO_model_zoo
https://github.com/PINTO0309/OpenVINO-YoloV3
opencv-python-inference-engine で pipでインストールできるようへの試み
pip でインストールできるようになったようだ。
追記
参考情報
qiita Note Book : Build OpenCV v4.5.0 backend Openvino