human_pose_estimation_demo

human_pose_estimation_demo を試してみました
このデモプログラムはcppとPythonの二つがありますが、今回はcppにチャレンジしてみました

今回のターゲット環境は
Ubuntu18.04
Intel(R) Atom(TM) Processor E3950 @ 1.60GHz
MemTotal: 8012260 kB
です

上記サイトでビルドしているようにビルドすれば、
~/omz_demos_build/ ディレクトリにデモがビルドされています

super_resolution_demoがビルドされているのであれば、
~/omz_demos_build/intel64/Release/human_pose_estimation_demo
として実行できます

モデルは、
/opt/intel/openvino_2021/deployment_tools/open_model_zoo/demos/human_pose_estimation_demo/cpp
にリストがあります
こちらを下記のコマンドでダウンロードしましょう

python3 /opt/intel/openvino_2021/deployment_tools/tools/model_downloader/downloader.py –list models.lst -o ~/intel_models

これで実行環境が整いました
サンプルとなるビデオは、
https://github.com/intel-iot-devkit/sample-videos
こちらから使用させてもらいます
下記コマンドで実行していますが、ネットから直接ファイルを読み込んでいますので、効率は悪いと思います

./omz_demos_build/intel64/Release/human_pose_estimation_demo -i https://github.com/intel-iot-devkit/sample-videos/blob/master/face-demographics-walking.mp4?raw=true -m intel_models/intel/human-pose-estimation-0001/FP16/human-pose-estimation-0001.xml -at openpose

実際に実行したものは、下記の映像です

次にNeural Compute Stick2を使用して、実行してみました
コマンドライン にオプションで、-d MYRIADを付け加えるだけです

FPSが5倍程度違いますね
このくらい早いと実用になりそうです

手元にもう一つNCS2があったので、MYRIAD MULTI環境を試してみました

$ ./omz_demos_build/intel64/Release/human_pose_estimation_demo -h
 [ INFO ] InferenceEngine:       API version ……… 2.1
         Build ……….. 2021.3.0-2787-60059f2c755-releases/2021/3
 human_pose_estimation [OPTION]
 Options:
 -h                        Print a usage message. -at "<type>"              Required. Type of the network, either 'ae' for Associative Embedding or 'openpose' for OpenPose. -i                          Required. An input to process. The input must be a single image, a folder of images, video file or camera id. -m "<path>"               Required. Path to an .xml file with a trained model. -o "<path>"                Optional. Name of output to save. -limit "<num>"             Optional. Number of frames to store in output. If 0 is set, all frames are stored. -tsize                      Optional. Target input size.   -l "<absolute_path>"    Required for CPU custom layers. Absolute path to a shared library with the kernel implementations.       Or   -c "<absolute_path>"    Required for GPU custom kernels. Absolute path to the .xml file with the kernel descriptions. -d "<device>"             Optional. Specify the target device to infer on (the list of available devices is shown below). Default value is CPU. Use "-d HETERO:<comma-separated_devices_list>" format to specify HETERO plugin. The demo will look for a suitable plugin for a specified device. -pc                       Optional. Enables per-layer performance report. -t                        Optional. Probability threshold for poses filtering. -nireq "<integer>"        Optional. Number of infer requests. If this option is omitted, number of infer requests is determined automatically. -nthreads "<integer>"     Optional. Number of threads. -nstreams                 Optional. Number of streams to use for inference on the CPU or/and GPU in throughput mode (for HETERO and MULTI device cases use format <device1>:<nstreams1>,<device2>:<nstreams2> or just <nstreams>) -loop                     Optional. Enable reading the input in a loop. -no_show                  Optional. Do not show processed video. -u                        Optional. List of monitors to show initially.
 Available target devices:  CPU  GNA  GPU  HDDL  MYRIAD.1.4-ma2480  MYRIAD.3.1-ma2480

ここで、Available target devicesにMYRIADが二つ表示されています
これを使用して、デモプログラムを走らせてみます

./omz_demos_build/intel64/Release/human_pose_estimation_demo -m intel_models/intel/human-pose-estimation-0001/FP16/human-pose-estimation-0001.xml -at openpose -i https://github.com/intel-iot-devkit/sample-videos/blob/master/face-demographics-walking.mp4?raw=true -d MULTI:MYRIAD.1.4-ma2480,MYRIAD.3.1-ma2480 -nireq 8 -nthreads 4 -nstreams 4

-dの指定をMULTIにするのと、-nireqの値をNCS2の個数の4倍にすることがコツのようです(https://github.com/yas-sim/openvino-multi-ncs2-throughput-mode

なんと倍の速度になりました
CPUと比較すると10倍です
ちゃんとマルチで使用できているようです

super_resolution_demo

super_resolution_demo を試してみました

今回のターゲット環境は
Ubuntu18.04
Intel(R) Atom(TM) Processor E3950 @ 1.60GHz
MemTotal: 8012260 kB
です

上記サイトでビルドしているようにビルドすれば、
~/omz_demos_build/ ディレクトリにデモがビルドされています

super_resolution_demoがビルドされているのであれば、
~/omz_demos_build/intel64/Release/super_resolution_demo
として実行できます

モデルは、
/opt/intel/openvino_2021/deployment_tools/open_model_zoo/demos/super_resolution_demo/cpp
にリストがあります
こちらを下記のコマンドでダウンロードしましょう

python3 /opt/intel/openvino_2021/deployment_tools/tools/model_downloader/downloader.py –list models.lst -o ~/intel_models

これで実行環境が整いました
これを下記のコマンドで高解像度化します

omz_demos_build/intel64/Release/super_resolution_demo -m intel_models/intel/single-image-super-resolution-1033/FP16/single-image-super-resolution-1033.xml -i target_image/target_20210515_640x360.png

どんな画像が超解像できるのか、試してみてください

demo_speech_recognition

最近のOpenVINOには音声認識がデモとして入っています
OpenVINO2020.xの頃はどうしても動作させることができず、後回しにしていたのですが、OpenVINO2021.3ではコマンドライン でGUIが表示されるまでになっていましたので、こちらでとりあげます

buildに関しては、下記のようになります

cd /opt/intel/openvino_2021/deployment_tools/demo/
bash ./demo_speech_recognition.sh

たったこれだけで、GUIが起動します

今回のターゲット環境は
Ubuntu18.04
Intel(R) Atom(TM) Processor E3950 @ 1.60GHz
MemTotal: 8012260 kB
です

入力する音声ファイルは、スティーブジョブズのスタンフォード大学でのスピーチをWav化したものとなります
ソースとなるファイルは、著作権などが絡みますので、音声ファイルは公開しませんが、オーディオ入力からでも取り込めると思います

こちらが認識デモです
最初に二つ画面が表示されます

上のウィンドウで音声ファイルを選び、recognizeボタンを押すと認識開始です
なおビデオの加工はしておりませんので、スピードはこのままとなります

英語の音声認識はかなり進んでいるようですね
ぜひ日本語にもチャレンジしたいです

OpenVINO 2021.3 OpenModelZoo build

実行環境

CPU: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
MemTotal:       16113068 kB
OS: Ubuntu 20.04.1 LTS

あまり難しいことはありません
こちらの記事を元にOpenVINO 2021.3をインストールしたのち、
/opt/intel/openvino_2021/deployment_tools/open_model_zoo/demos
に移動し、build_demos.shコマンド一発です

ビルドされるディレクトリは、
~/omz_demos_build/intel64/Release 配下となります

OpenVINO 2021.3 OpenModelZoo List

OpenModeZooのビルドに関してはこちら
古いビルドの記事もありますが、再度検証していたりもしています

ModelDemos supported on the modelCPUGPUMYRIAD/HDDLHETERO:FPGA,CPU
action-recognition-0001-decoderAction Recognition Python* DemoSupportedSupportedSupported
action-recognition-0001-encoderAction Recognition Python* DemoSupportedSupportedSupported
age-gender-recognition-retail-0013Interactive Face Detection DemoSupportedSupportedSupportedSupported
asl-recognition-0004Gesture Recognition Python* DemoSupportedSupported
driver-action-recognition-adas-0002-decoderAction Recognition Python* DemoSupportedSupportedSupported
driver-action-recognition-adas-0002-encoderAction Recognition Python* DemoSupportedSupportedSupportedSupported
emotions-recognition-retail-0003Interactive Face Detection DemoSupportedSupportedSupportedSupported
face-detection-adas-0001Interactive Face Detection DemoSupportedSupportedSupportedSupported
face-detection-retail-0004Interactive Face Detection DemoSupportedSupportedSupportedSupported
facial-landmarks-35-adas-0002Interactive Face Detection DemoSupportedSupportedSupportedSupported
facial-landmarks-35-adas-0002Gaze Estimation DemoSupportedSupportedSupportedSupported
gaze-estimation-adas-0002Gaze Estimation DemoSupportedSupportedSupportedSupported
handwritten-japanese-recognition-0001Handwritten Text Recognition Python* DemoSupportedSupportedSupported
handwritten-simplified-chinese-recognition-0001Handwritten Text Recognition Python* DemoSupportedSupportedSupported
head-pose-estimation-adas-0001Interactive Face Detection DemoSupportedSupportedSupportedSupported
head-pose-estimation-adas-0001Gaze Estimation DemoSupportedSupportedSupportedSupported
human-pose-estimation-0001Human Pose Estimation Python* Demo

cpp demo
SupportedSupportedSupportedSupported
human-pose-estimation-0005Human Pose Estimation Python* Demo

cpp demo
SupportedSupported
human-pose-estimation-0006Human Pose Estimation Python* Demo

cpp demo
SupportedSupported
human-pose-estimation-0007Human Pose Estimation Python* Demo

cpp demo
SupportedSupported
human-pose-estimation-3d-00013D Human Pose Estimation Python* DemoSupportedSupported
image-retrieval-0001Image Retrieval Python* DemoSupportedSupportedSupportedSupported
instance-segmentation-security-0002Instance Segmentation Python* DemoSupportedSupported
instance-segmentation-security-0091Instance Segmentation Python* DemoSupportedSupported
instance-segmentation-security-0228Instance Segmentation Python* DemoSupportedSupported
instance-segmentation-security-1039Instance Segmentation Python* DemoSupportedSupported
instance-segmentation-security-1040Instance Segmentation Python* DemoSupportedSupported
landmarks-regression-retail-0009Smart Classroom DemoSupportedSupportedSupportedSupported
license-plate-recognition-barrier-0001Security Barrier Camera DemoSupportedSupportedSupportedSupported
pedestrian-and-vehicle-detector-adas-0001any demo that supports SSD*-based modelsSupportedSupportedSupportedSupported
pedestrian-detection-adas-0002any demo that supports SSD*-based modelsSupportedSupportedSupportedSupported
person-attributes-recognition-crossroad-0230Crossroad Camera DemoSupportedSupportedSupportedSupported
person-attributes-recognition-crossroad-0234Crossroad Camera DemoSupportedSupportedSupported
person-attributes-recognition-crossroad-0238Crossroad Camera DemoSupportedSupportedSupported
person-detection-retail-0002Pedestrian Tracker DemoSupportedSupportedSupportedSupported
person-detection-retail-0013Object Detection DemoSupportedSupportedSupportedSupported
person-reidentification-retail-0277Crossroad Camera DemoSupportedSupported
person-reidentification-retail-0286Multi-Camera Multi-Target Tracking DemoSupportedSupported
person-reidentification-retail-0287Multi-Camera Multi-Target Tracking DemoSupportedSupported
person-reidentification-retail-0288Multi-Camera Multi-Target Tracking DemoSupportedSupported
person-vehicle-bike-detection-crossroad-0078Crossroad Camera DemoSupportedSupportedSupportedSupported
person-vehicle-bike-detection-crossroad-1016Crossroad Camera DemoSupportedSupportedSupported
person-vehicle-bike-detection-crossroad-yolov3-1020Object Detection Python* DemoSupportedSupportedSupported
person-detection-action-recognition-0005Smart Classroom DemoSupportedSupportedSupportedSupported
person-detection-action-recognition-teacher-0002Smart Classroom DemoSupportedSupportedSupportedSupported
road-segmentation-adas-0001Segmentation DemoSupportedSupportedSupportedSupported
semantic-segmentation-adas-0001Image Segmentation DemoSupportedSupportedSupportedSupported
single-human-pose-estimation-0001Single Human Pose Estimation Python* DemoSupportedSupportedSupported
single-image-super-resolution-1032Super Resolution DemoSupportedSupportedSupportedSupported
single-image-super-resolution-1033Super Resolution DemoSupportedSupportedSupportedSupported
text-detection-0003Text Detection DemoSupportedSupportedSupportedSupported
text-detection-0004Text Detection DemoSupportedSupportedSupportedSupported
text-recognition-0012Text Detection DemoSupportedSupportedSupported
text-recognition-0013Text Detection DemoSupportedSupportedSupported
vehicle-attributes-recognition-barrier-0039Security Barrier Camera DemoSupportedSupportedSupportedSupported
vehicle-attributes-recognition-barrier-0042Security Barrier Camera DemoSupportedSupportedSupported
vehicle-license-plate-detection-barrier-0106Security Barrier Camera DemoSupportedSupportedSupportedSupported
vehicle-license-plate-detection-barrier-0123Security Barrier Camera DemoSupportedSupportedSupportedSupported
vehicle-detection-adas-0002any demo that supports SSD*-based modelsSupportedSupportedSupportedSupported
yolo-v2-tiny-vehicle-detection-0001Object Detection Python* DemoSupportedSupportedSupported

OpenVINO toolkit 2021.3 ベンチマーク

OpenVINO toolkit 2021.3のベンチマークを取りました
使用したアプリケーションは、security barrier c++ demoを使用しております

また使用機材は下記となります

11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 
DDR4-4267 16GB
Ubuntu 20.04 LTS

ベンチマーク時のオプションは下記となります

security_barrier_camera_demo -d $a -d_va $b -d_lpr $c -i car_1.bmp -m openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.xml -m_lpr openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.xml -m_va openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.xml -no_show
-d -d_va -d_lpr FPS Average
CPU CPU CPU 83.4
CPU CPU GPU 120.3
CPU CPU MYRIAD 84.7
CPU GPU CPU 86.1
CPU GPU GPU 118.5
CPU GPU MYRIAD 84.2
CPU MYRIAD CPU 88.1
CPU MYRIAD GPU 124.6
CPU MYRIAD MYRIAD 67.2
GPU CPU CPU 90.7
GPU CPU GPU 112.6
GPU CPU MYRIAD 78.0
GPU GPU CPU 95.4
GPU GPU GPU 98.4
GPU GPU MYRIAD 80.4
GPU MYRIAD CPU 93.6
GPU MYRIAD GPU 113.3
GPU MYRIAD MYRIAD 66.7
MYRIAD CPU CPU 30.4
MYRIAD CPU GPU 31.9
MYRIAD CPU MYRIAD 28.1
MYRIAD GPU CPU 30.6
MYRIAD GPU GPU 31.3
MYRIAD GPU MYRIAD 28.2
MYRIAD MYRIAD CPU 30.2
MYRIAD MYRIAD GPU 31.5
MYRIAD MYRIAD MYRIAD 26.3

安定して動作している様子です

OpenVINO 2021.3 環境構築(Ubuntu20.04編)

インストールの前に

OpenVINO2021.x系からインストールされる場合は、ほぼそのままでインストールできるようです
OpenVINO2020.x系からインストールする場合、それまでのものと比べ、インストールがUbuntu18.04のインストール時の設定では行えなくなっています
またインストールされるフォルダが異なります


プラットフォーム

ハードウェアの制限

  • 6th-10th Generation Intel® Core™
  • Intel® Xeon® v5 family
  • Intel® Xeon® v6 family
  • Intel® Neural Compute Stick 2

OS

  • Ubuntu 18.04.x long-term support (LTS), 64-bit
  • CentOS 7.4, 64-bit (for target only)
  • Yocto Project v3.0, 64-bit (for target only and requires modifications)

ソフトウェアのインストール

今回はUbuntu20.04にOpenVINO toolkit 2021.3をセットアップします
CPUスペックは、Intel(R) Core(TM) i7-1165G7 @ 2.80GHzとなります

必要なソフトウェア

  • CMake 3.13 or higher
  • Python 3.5 or higher

OpenVINO ToolKIT のダウンロード

こちらから登録を行い、ダウンロードして下さい

OpenVINO Toolkit のインストール

openvino@ubuntu$ ls l_openvino_toolkit_p_2021.3.394.tgz
openvino@ubuntu$ tar -xvzf l_openvino_toolkit_p_2021.3.394.tgz
openvino@ubuntu$ cd l_openvino_toolkit_p_2021.3.394/

#コマンドラインインストール
openvino@ubuntu$ sudo ./install.sh

基本的には、Enterで進めていくとインストールされます
途中で、必要なアプリケーションなどのチェックが入りますので、
もし不足している場合は、画面に従いインストールが必要になります

defaultのまま設定をすすめていくと、インストール完了です

環境変数の設定

openvino@ubuntu$ source /opt/intel/openvino_2021/bin/setupvars.sh

#ログイン時に環境変数を有効にする場合
vi <user_directory>/.bashrc
#最終行に下記を追加
source /opt/intel/openvino_2021/bin/setupvars.sh 

Model Optimizer の設定

openvino@ubuntu$ cd /opt/intel/openvino_2021/deployment_tools/model_optimizer/install_prerequisites
 openvino@ubuntu$ sudo ./install_prerequisites.sh

Ubuntu18.04に標準で入るtensorflowのバージョンが必要なバージョンよりも低いため、 恐らくここでもエラーが発生すると思います

sudo python3 -m pip install --upgrade pip
sudo python3 -m pip uninstall -y tensorflow
sudo python3 -m pip install tensorflow==1.15.2 

でtensorflowのバージョンを上げると、インストールされると思います

外部依存ソフトウェアのインストール

openvino@ubuntu$ cd /opt/intel/openvino_2021/install_dependencies/
openvino@ubuntu$ sudo -E ./install_openvino_dependencies.sh 

This script installs the following OpenVINO 3rd-party dependencies:
 GTK+, FFmpeg and GStreamer libraries used by OpenCV
 libusb library required for Myriad plugin for Inference Engine
 build dependencies for OpenVINO samples
 build dependencies for GStreamer Plugins
  
環境により異なりますが、上記ライブラリが自動的にインストールされます

インストールのチェック

openvino@ubuntu$ cd /opt/intel/openvino_2021/deployment_tools/demo
openvino@ubuntu$ ./demo_squeezenet_download_convert_run.sh 

Demo check

openvino@ubuntu$ cd /opt/intel/openvino_2021/deployment_tools/demo
openvino@ubuntu$ ./demo_security_barrier_camera.sh

GPU関連モジュールインストール

openvino@ubuntu$ cd /opt/intel/openvino_2021/install_dependencies/
openvino@ubuntu$ sudo -E su
root@ubuntu# ./install_NEO_OCL_driver.sh

ここで過去にOpenVINOをインストールしていた場合、そのバージョンによっては下記のメッセージが出て、インストールされません

root@xps:/opt/intel/openvino_2021/install_dependencies# ./install_NEO_OCL_driver.sh 
 Intel OpenCL graphics driver installer
 Checking current driver version...
 
 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
 
 Intel(R) Graphics Compute Runtime installation skipped because current version greater or equal to 19.41.14441
 Installation of Intel Compute Runtime interrupted 

Demo check

openvino@ubuntu$ cd /opt/intel/openvino_2021/deployment_tools/demo openvino@ubuntu$ ./demo_security_barrier_camera.sh -d GPU

Neural Compute Stick2 の使用

#usersグループにカレントユーザーを加えます 
$ sudo usermod -a -G users "$(whoami)"

#NCS2用のルールをコピーし、リブートします
$ sudo cp /opt/intel/openvino_2021/inference_engine/external/97-myriad-usbboot.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger
$ sudo ldconfig 

以上で、インストールが完了しました

OpenVINO 2021.3 Release

OpenVINO 2021.3がリリースされました
https://software.intel.com/en-us/openvino-toolkit
https://software.intel.com/content/www/us/en/develop/articles/openvino-relnotes.html

Intelからのリリースを転記します

Major Features and Improvements

  • Upgrade to the latest version for new capabilities and performance improvements.
  • Introduces a preview of Conditional Compilation (available in open-source distribution) which enables a significant reduction to the binary footprint of the runtime components (Inference Engine linked into applications) for particular models.
  • Introducing support for the 3rd Gen Intel® Xeon® Scalable platform (code-named Ice Lake), which delivers advanced performance, security, efficiency, and built-in AI acceleration to handle unique workloads and more powerful AI.
  • New pre-trained models and support for public models to streamline development:
    • Pre-trained Models: machine-translation, person-vehicle-bike-detection, text-recognition and text-to-speech.
    • Public Models: aclnet-int8 (sound_classification), deblurgan-v2 (image_processing), fastseg-small and fastseg-large (semantic segmentation) and more.
  • Developer tools now available as Python wheel packages using pip install openvino-dev on Windows*, Linux*, and macOS* for easy package installation and upgrades.

その他、今後サポートされるOSに多数変更があります

OpenVINO.jpでは引き続きベンチマークなどを行っていきたいと思います

OpenVINO toolkit 2021.1 ベンチマーク

TigerLake搭載機が入手できましたので設定に紆余曲折ありましたが、OpenVINO toolkit 2021.1のベンチマークを取りました
使用したアプリケーションは、security barrier c++ demoを使用しております

また使用機材は下記となります

11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 
DDR4-4267 16GB
Ubuntu 20.04 LTS

ベンチマーク時のオプションは下記となります

security_barrier_camera_demo -d $a -d_va $b -d_lpr $c -i car_1.bmp -m openvino_models/ir/intel/vehicle-license-plate-detection-barrier-0106/FP16/vehicle-license-plate-detection-barrier-0106.xml -m_lpr openvino_models/ir/intel/license-plate-recognition-barrier-0001/FP16/license-plate-recognition-barrier-0001.xml -m_va openvino_models/ir/intel/vehicle-attributes-recognition-barrier-0039/FP16/vehicle-attributes-recognition-barrier-0039.xml -no_show
-d-d_va-d_lprFPS Average
CPUCPUCPU89.725
CPUCPUGPU123
CPUGPUCPU77.675
CPUGPUGPU108.575
GPUCPUCPU92.85
GPUCPUGPU112.55
GPUGPUCPU91.35
GPUGPUGPU105.25

MYRIADはまだ私の環境では安定していないので、設定が出来次第、ベンチマークを取る予定です。

日立制御エッジコンピュータ CE50-10

OpenVINOTMツールキットをプレインストールされた組み込み向けPCです。

ファンレス、スピンドルレスで組み込みに強い仕様になっています。

詳しくは、https://www.hitachi.co.jp/products/it/control_sys/platform/cs_edge/index.html