OpenVINO開発コンテスト応募URL ☞
’20/ 2/14まで
OpenVINO™ Toolkitとは
2
ISUAL
NFERENCING &
EURAL NETWORK
PTIMIZATION
コンピュータ・ビジョン
アプリケーション
開発ツールキット (SDK)
OpenVINO™ で何ができるか
3
画像処理
ディープラーニングを
使った画像推論
4
OpenVINO™ Toolkit概要
OpenVINO™ Toolkit
Libraries Inference Engine
(推論Lib)
Model
OptimizerTools
学習済み
DLモデル
画像処理
*別配布
ディープラーニング (推論)
OpenVINO™ はインテル・アーキテクチャーに高度に最適化済み
幅広いOSサポート: Ubuntu, CentOS, Yocto, Win10, MacOS
DL
workbench
Model
Downloader /
Converter
5
Inference Engineの動作 - 1
Inference
Engine
入力画像
推論結果
学習済み
モデル
def cnn_model_fn(features, labels, mode):
input_layer = tf.reshape(features["x"], [-1, …
conv1 = tf.layers.conv2d(inputs=input_layer, …
pool1 = tf.layers.max_pooling2d(inputs=conv1,…
conv2 = tf.layers.conv2d(inputs=pool1, …
pool2 = tf.layers.max_pooling2d(inputs=conv2,…
pool2_flat = tf.reshape(pool2, [-1, 7 * 7 * 64
dense = tf.layers.dense(inputs=pool2_flat, …
dropout = tf.layers.dropout(inputs=dense, …
:
• モデル定義などの煩雑なプログラミング不要
• 学習済みモデルを用意するだけ
6
OpenVINO™
Model
Optimizer
IR
Inference
Engine
CPU
GPU
MYRIAD
FPGA
HDDL
GNA
ユーザープログラム
IE API C++, Python
Input
Inferred Result学習 / Training 推論 / Inference
OpenCV OpenVX MediaSDK
推論
結果
無償, オープンソース, 省メモリ, 高速・高効率
学習済みディープラーニングモデル
IR DL
モデル
Myriad: VPU (Vision Processing Unit)
HDDL: High density Deep Learning accelerator
GNA: Gaussian-mixture-model Neural network Accelerator
IR: Intermediate RepresentationInference Engineの動作 - 2
Model
Downloader
インテル学習済みモデル
#include <vector>
#include <opencv2/opencv.hpp>
#include <inference_engine.hpp>
namespace ie = InferenceEngine;
int main(int argc, char *argv[]) {
ie::Core ie;
ie::CNNNetReader network_reader;
network_reader.ReadNetwork("squeezenet/squeezenet1.1.xml");
network_reader.ReadWeights("squeezenet/squeezenet1.1.bin");
network_reader.getNetwork().setBatchSize(1);
ie::CNNNetwork network = network_reader.getNetwork();
std::shared_ptr<ie::InputInfo> input_info =
network.getInputsInfo().begin()->second;
std::string input_name = network.getInputsInfo().begin()->first;
input_info->getPreProcess().setResizeAlgorithm(ie::RESIZE_BILINEAR);
input_info->setLayout(ie::Layout::NHWC);
input_info->setPrecision(ie::Precision::U8);
ie::DataPtr output_info = network.getOutputsInfo().begin()->second;
std::string output_name = network.getOutputsInfo().begin()->first;
output_info->setPrecision(ie::Precision::FP32);
ie::ExecutableNetwork executable_network = ie.LoadNetwork(network, "CPU");
ie::InferRequest infer_request = executable_network.CreateInferRequest();
CNN C++ サンプルコード (main.cpp)
cv::Mat image = cv::imread("data/guineapig224.bmp");
ie::TensorDesc tDesc(ie::Precision::U8,
{1, 3, static_cast<long unsigned int>(image.rows),
static_cast<long unsigned int>(image.cols) },
ie::Layout::NHWC);
infer_request.SetBlob(input_name,
ie::make_shared_blob<uint8_t>(tDesc, image.data));
infer_request.Infer();
ie::Blob::Ptr output = infer_request.GetBlob(output_name);
std::vector<unsigned> results;
TopResults(5, *output, results);
std::cout << "nresultsn------------------" << std::endl;
for (size_t id = 0; id < 5; ++id)
std::cout<<results[id]<< ":"<<((float*)output
->buffer())[results[id]]<<std::endl;
}
32行!
CPU / GPU / MYRIAD / FPGA / HDDL / GNA
CNN Python サンプルコード
import cv2
import numpy as np
from openvino.inference_engine import IENetwork, IECore
ie = IECore()
net = IENetwork(model='googlenet-v1.xml', weights='googlenet-v1.bin')
batch,channel,height,width = net.inputs['data'].shape
exec_net = ie.load_network(network=net, device_name="CPU", num_requests=1)
img = cv2.imread("guineapig224.bmp")
cv2.imshow("input", img)
img = cv2.resize(img, (width,height))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = img.transpose((2, 0, 1))
img = img.reshape((1, channel, height, width))
res = exec_net.infer(inputs={'data': img})
idx = np.argsort(res['prob'][0])[::-1]
for i in range(5):
print(idx[i]+1, res['prob'][0][idx[i]])
cv2.waitKey(3*1000)
18行!
9
Intel Open Model Zoo (OMZ)
https://github.com/opencv/open_model_zoo
OpenVINOに最適化した、50を超えるDLモデルを提供中
10
すぐに試せるデモプログラムも多数同梱
11
12
物体検出
13
14
人検出 / 属性抽出 / 追跡
float feature[256]
Calculate distance between feature
vectors to identify the most similar
object
e.g. cosine similarity
15
16
17
車検出 / 属性抽出 / ナンバー読取 / 個体セグメンテーション
18
顔検出 / 年齢・性別 / 頭の向き / 特徴点 / 表情 / 視線
19
20
21
骨格推定
22
23
テキスト検出 / 読み取り
24
25
超解像
超解像Bi-cubic
26
超解像Bi-cubic
27
モノクロテキスト超解像
Bi-cubic 超解像
28
脳腫瘍推定
29
スマート・クラスルーム
30
画風変換 / 着色
+
31
音声認識
Model=Mozilla DeepSpeech
The model uses LSTM
32
Windows版 OpenVINOインストール手順概略
• 依存SWインストール cmake >=3.4 x64, python 3.6.5 x64
Microsoft Visual Studio 2015/2017/2019準備
• OpenVINOインストール w_openvino_toolkit_p_<version>.exeOpenVINO
インストール
• Model Optimizer setup install_prerequisites.bat
• Model Downloader setup
付属ツール
セットアップ
• 内蔵GPU (不要 – GfxドライバがOCLをサポート)
• VPU (Myriad) (不要)
アクセラレータ
セットアップ
(オプショナル)
• サンプル build_samples_msvc.bat [VS2015|VS2017|VS2019]
• デモ build_demos_msvc.bat [VS2015|VS2017|VS2019]
デモビルド
33
Ubuntu版 OpenVINOインストール手順概略
• 依存SWインストール install_openvino_dependencies.sh
準備
• OpenVINOインストール setup_GUI.shOpenVINO
インストール
• Model Optimizer setup install_prerequisites.sh [venv]
• Model Downloader setup pip3 install --user –r ./requirements.in
付属ツール
セットアップ
• 内蔵GPU install_NEO_OCL_driver.sh
• VPU (Myriad) install_NCS_udev_rules.sh
アクセラレータ
セットアップ
(オプショナル)
• サンプル build_samples.sh
• デモ build_demos.sh
デモビルド
34
Model Downloader / Model Converter
簡単に各種DLモデルをダウンロード、変換
• Model downloaderは名前を指定するだけでモデルをダウンロード
• Model converterはMOのフロントエンド。Downloaderでダウンロードした
モデルを簡単にIR形式に変換 (public models)
• インテル提供の学習済みモデル(Open Model Zoo: OMZ)やパブリックモデル
(ResNetなど)、100を超えるモデルをダウンロード可能
• OMZモデルはIR形式で提供されているので変換の手間なく、すぐに使える
e.g.
python3 $INTEL_OPENVINO_DIR/deployment_tools/tools/model_downloader/downloader.py --name resnet-50
#./public/resnet-50/resnet-50.[prototxt|caffemodel]がダウンロードされる
python3 $INTEL_OPENVINO_DIR/deployment_tools/tools/model_downloader/converter.py --name resnet-50 --preci
sions FP16
# オプション付きでMOが実行され、./public/resnet-50/FP16/resnet-50.[xml|bin]が生成される
35
DL Workbench (INT8変換, ベンチマーク, 精度チェック, グラフ可視化などなど)
Docker containerで動く、
webブラウザアプリ
36
DL Workbench (パフォーマンス比較, レイヤー情報)
37
お使いのPCで始められるOpenVINOでのDL推論
Windows 10
Ubuntu, CentOS, Yocto
Mac OS
Internet of Things Group 38
VPUとは
Intel® Neural Compute Stick 2
高い
NN推論性能
手軽に
実験、試作
効率よく
性能評価
8X¹HIGHER
PERFORMANCE
初代NCSからの性能向上
UPTO
*MSRP is not a guarantee of final retail price. MSRP may be changed in the future based upon economic conditions.
多くのスマートカメラ製品で採用されたVPUのAI推論能力を大幅に向上
評価、実験用に手軽に利用可能なニューラル・コンピュート・スティック2
**ボードベンダーの詳細についてはインテルの担当者にお問い合わせ下さい。
Intel、インテル、Intel ロゴは、アメリカ合衆国および/またはその他の国における Intel Corporation またはその子会社の商標です。
※ その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
39
M.2, Key E miniPCIe* PCIe* x4インターフェイス
インテル® Movidius
MA2485 VPU
X 1
インテル® Movidius™
MA2485 VPUs
x2
インテル® Movidius™
MA2485 VPUs
x8
製品化
ボードベンダー*
インテル® Arria® 10 FPGA
1150GX/660GX
PCIe* x8
OpenVINO™ ツールキット
エッジで実行するNN推論モデルの構築; インテル® CPU, GPU, VPU, FPGAで共通の開発環境
ソフトウェア
開発ツール
インテル® ビジョン・アクセラレーター・デザイン・プロダクト
(インテル® Movidius™ VPU搭載版)
インテル® ビジョン・アクセラ
レーター・デザイン・プロダクト
(インテル® Arria® 10 FPGA
搭載版)
インテル® ビジョン・
アクセラレーター・
デザインに基づく
アドインカード(例)
40
様々なエッジHW実行環境をクラウド経由で提供
HW購入前にAI推論性能の比較検証が可能
簡単な手続きで、世界中どこからでもアクセス可-
最新のHW、SWでの開発‘評価を支援-
開発期間とコストを最小化-
ベンチマーク測定し最適なHWを推定-
Intel DevCloud で検索
募集期間: 2020年2月14日まで
是非、ご参加ください!
41
OpenVINO™ ツールキットによる
開発コンテスト開催中
42
OpenVINO™ ツールキット・セミナー
ベーシックコース
OpenVINO™ ツールキットの概要
サンプル・コードでデモを動作させ性能評価
ができるレベルを目標
OpenVINO™ ツールキット・セミナー
アドバンスドコース
ベーシック・コース受講後、独自モデルの最
適化やカスタム・レイヤーの開発方法などを
解説
OpenVINO™ ツールキット・ワークショップ
PC開発環境で課題を交えてツールの使い方を学ぶハンスオン・トレーニング
12月18日(水) 13:30-17:30
OpenVINO™ ツールキット・ハンズオンセミナー (大阪開催)
セミナー ベーシックコース(午前)とワークショップ(午後)を実施
12月20日(金) 10:00-17:30
43
まとめ
• OpenVINO™ を使うとIAプラットフォームで高速なDL推論が可能
• ツールも学習済みモデルも無償提供
• CPUだけではなく、内蔵GPUも活用可能
さらに外部アクセラレータもサポート
• Atom®からXeon®まで幅広いプラットフォームをサポート
• 充実のOSサポート: Windows 10, Ubuntu, CentOS, MacOS
• OpenVINO™を使うことで組み込み機器でのDLを低コストで実現可能
• 開発期間の短縮にも寄与
44
OpenVINO開発コンテスト応募URL ☞
’20/ 2/14まで

Intel OpenVINO™ ツールキットのご紹介