私的AI研究会 > OpenVINOusage

OpenVINO™ Toolkit の使い方

 サイト: Yasunori Shimura(yas-sim) GitHubを参考に OpenVINO™ Toolkit の使い方を実習する。

※ 最終更新:2021/09/30 

DBFace on Intel® OpenVINO™

 リアルタイムでシングルステージの顔検出モデル、DBFaceをIntel(r) Distribution of OpenVINO(tm) Toolkit上で実行する。

 Original DBFace GitHub site: https://github.com/dlunion/DBFace

事前準備

  1. サイト: https://github.com/yas-sim/dbface-on-openvino からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し dbface-on-openvino-master/ を ~/workspace/app3/ へフォルダごとコピーする。
  3. ソースファイル「dbface-infer.py」をコピーして「dbface-infer2.py」を作成。
  4. 「dbface-infer2.py」を修正する。
    ・コマンドパラメータの追加
    ・実行速度の計測
    ・処理結果の出力
▼ 修正済ソースファイル「dbface-infer2.py」

プログラムの実行

Object (Face) Detection Demo with Adaptive Partitioning to Improve Detection Rate

 ディープラーニングを使ったオブジェクト検出アプリケーションにおける検出率改善のアイディアの仕組みを検討する。
 通常、ディープラーニングモデルの入力シェイプ(=サイズ)は固定のため、入力画像はモデルの入力シェイプに合わせてスケーリングをしてから推論する。モデルのシェイプは300x300や500x500など、今の標準的なカメラの入力解像度と比べて非常に小さいため、入力画像は縮小されてから推論を行う。これが小さなオブジェクトの検出をさらに困難にする。
 通常、遠くにあるオブジェクトは映像に小さく映る。特に監視カメラのように高い位置に設置され見下ろしているような場合に顕著である。
 プログラムでは入力画像を列(row), 行(column)に分割して、分割画像ごとに推論した結果を統合し、NMS (Non-Maximum Suppression)アルゴリズムで重複検出オフジェクトを除外することで最終結果を得るようにすることで検出精度の向上させる。

事前準備

  1. サイト: https://github.com/yas-sim/object-detection-with-adaptive-partitioning からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し object-detection-with-adaptive-partitioning-master/ を ~/workspace/app3/ へフォルダごとコピーする。
  3. ソースファイル「naive-objdet.py」をコピーして「naive-objdet2.py」を作成。
  4. ソースファイル「objdet-adaptive-partitioning.py」をコピーして「objdet-adaptive-partitioning2.py」を作成。
  5. 「naive-objdet2.py」「objdet-adaptive-partitioning2.py」を修正する。
    ・コマンドパラメータの追加
    ・処理結果の出力

プログラムの実行

Object Tracking with Line Crossing and Area Intrusion Detection

 ディープラーニングの物体検出モデルと特徴抽出(re-identification)モデルを用いて、ムービーフレーム中のオブジェクトを検出し、追跡するプログラム。
 プログラムは見つけたオブジェクトの軌跡を記録し、オブジェクトが定義された仮想ラインを超えたり定義されたエリアに侵入したことを検出する。


事前準備

  1. サイト: https://github.com/yas-sim/object-tracking-line-crossing-area-intrusion からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し object-tracking-line-crossing-area-intrusion-master/ を ~/workspace/app3/ へフォルダごとコピーする。
  3. ソースファイル「object-detection-and-line-cross.py」をコピーして「object-detection-and-line-cross2.py」を作成。
  4. 「object-detection-and-line-cross2.py」を修正する。
    ・コマンドパラメータの追加
    ・実行速度の計測
    ・処理結果の出力
▼ 修正済ソースファイル「object-detection-and-line-cross2.py」

プログラムの実行

Gaze Estimation Demo with Sparking Laser Beam ;-)

 ディープラーニングの物体検出モデルと特徴抽出(re-identification)モデルを用いて、ムービーフレーム中のオブジェクトを検出し、追跡するプログラム。プログラムは見つけたオブジェクトの軌跡を記録し、オブジェクトが定義された仮想ラインを超えたり定義されたエリアに侵入したことを検出する。

事前準備

  1. サイト: https://github.com/yas-sim/gaze-estimation-with-laser-sparking からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し gaze-estimation-with-laser-sparking-master/ を ~/workspace/app3/ へフォルダごとコピーする。
  3. ソースファイル「gaze-estimation.py」をコピーして「gaze-estimation2.py」を作成。
  4. 「gaze-estimation2.py」を修正する。
    ・コマンドパラメータの追加
    ・実行速度の計測
    ・処理結果の出力
▼ 修正済ソースファイル「gaze-estimation2.py」

プログラムの実行

$ python3 gaze-estimation2.py

--- Gaze Estimation Demo with Sparking Laser Beam 2 ---
4.5.3-openvino
OpenVINO inference_engine: 2021.4.0-3839-cd81789d294-releases/2021/4

Gaze Estimation Demo with Sparking Laser Beam 2: Starting application...
   - Image File   :  0
   - Device       :  CPU
   - Program Title:  y
   - Speed flag   :  y
   - Processed out:  non

Gaze estimation demo
'f': Flip image
'l': Laser mode on/off
's': Spark mode on/off
'b': Boundary box on/off


FPS average:      21.50

 Finished.

Interactive Image Inpainting Demo

 inpainting-gmcnn (画像修復モデル)を使用する方法をデモするプログラム。
 ユーザーが入力画像の上に自由にマスクを描画したのち、プログラムがマスク部分を欠損部分として扱い、欠損部分を補うようにディープラーニングでの推論を行い修復描画(Inpaint)する。
 絵の中の望ましくない部分(景色に写りこんだ柵や人など)をマスクすることで、それらを取り除いた自然な絵を生成できる。

事前準備

  1. サイト: https://github.com/yas-sim/interactive-image-inpainting からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し interactive-image-inpainting-master/ を ~/workspace/app3/ へフォルダごとコピーする。
  3. ソースファイル「image-inpainting.py」をコピーして「image-inpainting2.py」を作成。
  4. 「image-inpainting2.py」を修正する。
    ・コマンドパラメータの追加
    ・処理結果の出力
▼ 修正済ソースファイル「image-inpainting2.py」

プログラムの実行

Handwritten Japanese Deep Learning Based OCR with Touch Panel Demo

 i手書き日本語OCRデモ。
  Open Model Zooの文字検出DLモデル(text-detection-0003)で自動領域識別も行ない、DL-OCRモデルで文字認識を行う。

事前準備

  1. サイト: https://github.com/yas-sim/handwritten-japanese-ocr からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し handwritten-japanese-ocr-master/ を ~/workspace/app3/ へフォルダごとコピーする。
  3. ソースファイル「handwritten-japanese-OCR-touch-panel-demo.py」をコピーして「handwritten-japanese-OCR-touch-panel-demo2.py」を作成。
  4. 「handwritten-japanese-OCR-touch-panel-demo2.py」を修正する。
    ・コマンドパラメータの追加
    ・処理結果の出力
▼ 修正済ソースファイル「handwritten-japanese-OCR-touch-panel-demo2.py」

プログラムの実行

Intel(r) OpenVINO(tm) IR model utility tool

 OpenVINOのIRモデル用のユーティリティーツールプログラム。

  1. IRモデルのサマリー情報表示 (ir-summary.py)
    IRバージョン、input / output blob名、shape
  2. IRモデルの重みデータ抜き出し (ir_weight_extractor.py)
     重みデータを抜き出し、Python pickleファイルを作成
  3. 特徴マップデータ抜き取り (ir_featuremap_extractor.py)
     IRモデルを実行しながら中間バッファから特徴マップデータを抜き出し、Python pickleファイルを作成
  4. 特徴マップデータ比較ツール (compare_feature_maps.py)
     2つの特徴マップデータを比較し差異を表示。
  5. IRモデル中のレイヤーごとのoutput blobのサイズとそのトータルを求める (ir_output_blob_sie_calculator.py)

事前準備

  1. サイト: https://github.com/yas-sim/openvino-ir-utility からプロジェクトソース一式をダウンロードする。
  2. Download.zip を解凍し openvino-ir-utility-master/ を ~/workspace/app3/ へフォルダごとコピーする。

プログラムの実行

 

更新履歴

参考資料

 

Last-modified: 2021-09-30 (木) 20:06:50