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 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では引き続きベンチマークなどを行っていきたいと思います