前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用OpenVINO ToolKit 实时推断

使用OpenVINO ToolKit 实时推断

作者头像
OpenCV学堂
发布2019-04-29 16:14:40
4.6K2
发布2019-04-29 16:14:40
举报

微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 觉得文章有用,请戳底部【好看】支持

OpenVINO ToolKit介绍

OpenVINO ToolKit是英特尔发布的一套深度学习推断引擎,支持各种网络框架,官方给出的说明是支持100多种网络训练导出的模型(100多种网络模型,无知限制了我的想象力)官方对这个工具包的主要特点总结如下:

  • 在Intel平台上提升计算机视觉相关深度学习性能达19倍以上
  • 解除CNN-based的网络在边缘设备的性能瓶颈
  • 对OpenCV,OpenXV*视觉库的传统API实现加速与优化
  • 基于通用API接口在CPU、GPU、FPGA等设备上运行加上

工具包(ToolKit)主要包括两个部分:

  • 模型优化器
  • 推断引擎

支持在Windows与Linux系统,Python/C++语言,也就是说ubuntu上可以放心使用!支持各种常见的深度学习框架的导出模型、推断引擎支持各种硬件设备包括

  • CPU
  • GPU
  • FPGA
  • VPU

调用工作流程如下:

安装OpenVINO ToolKit

首先需要注册与下载,下载地址如下(建议下载Web Installer):

https://software.intel.com/en-us/openvino-toolkit/choose-download

Windows平台下的预安装要求如下:

很不幸的是我已经全部满足,所以下载好了就直接安装吧!

安装好以后执行:

完成车辆与车牌识别,注意模型支持中文车牌识别, 显示如下:

表示安装成功!

使用DLIE实现加速

配置OpenCV DLIE支持版本 安装好的OpenVINO已经包含编译好的支持DLIE(deep learning Inference Engine)OpenCV开发SDK, 只需要要稍微配置一下即可支持,最新版本是OpenCV4.0.1,在我的机器上改动主要有两个地方:

  1. 因为我原来已经安装了OpenCV4.0,所以我把所有的VS2015配置都指向了OpenVINO中的OpenCV路径。
  2. 把默认路径(假设你安装OpenVINO时候没有修改) C:\Intel\computer_vision_sdk_2018.5.456\deployment_tools\inference_engine\bin\intel64\Debug,添加到环境变量中去

OpenCV DNN模块支持的相关API如下

代码语言:javascript
复制
cv::dnn::Net::setPreferableBackend(
    int backendId
)
backendId 表示后台计算id,
- DNN_BACKEND_INFERENCE_ENGINE表示使用intel的预测推断库
- DNN_BACKEND_OPENCV 一般情况都是使用opencv dnn作为后台计算

读取网络之后使用OpenCV作为计算后台

代码语言:javascript
复制
Net net = readNetFromCaffe(protxt, bin_model);
net.setPreferableBackend(DNN_BACKEND_OPENCV);
net.setPreferableTarget(DNN_TARGET_CPU);

读取网络之后使用DLIE作为计算后台

代码语言:javascript
复制
Net net = readNetFromCaffe(protxt, bin_model);
net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE);
net.setPreferableTarget(DNN_TARGET_CPU);

其中DNN_BACKEND_INFERENCE_ENGINE表示使用DLIE加速推断,DNN_TARGET_CPU表示在CPU设备上使用。如果没有安装DLIE,OpenCV默认的backend是DNN_BACKEND_OPENCV。 基于GooglNet Caffe模型对同一张图像进行分类预测推断

对比一下时间开销:

可以看出来,使用了DLIE作为backend进行推断之后,网络在OpenCV DNN中运行速度提升9倍左右。相关代码:

代码语言:javascript
复制
// 加载网络
Net net = readNetFromCaffe(protxt, bin_model);
net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE); // DLIE加速
// net.setPreferableBackend(DNN_BACKEND_OPENCV); 不使用DLIE加速
net.setPreferableTarget(DNN_TARGET_CPU);

if (net.empty()) {
    printf("read caffe model data failure...\n");
    return -1;
}
Mat inputBlob = blobFromImage(src, 1.0, Size(w, h), Scalar(104, 117, 123), false, false);

// 执行图像分类
Mat prob;
net.setInput(inputBlob);
prob = net.forward();
vector<double> times;
double time = net.getPerfProfile(times);
float ms = (time * 1000) / getTickFrequency();
printf("current inference time : %.2f ms \n", ms);

基于残差网络的实时人脸检测,OpenCV DNN运行

什么!i7的CPU FPS=36帧左右,画面太美好,谁还敢说OpenCV DNN不够实时。这么硬核的文章,求个好看不为过吧!

代码语言:javascript
复制
博观而约取
厚积而薄发
本文参与?腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenVINO ToolKit介绍
  • 安装OpenVINO ToolKit
  • 使用DLIE实现加速
相关产品与服务
汽车相关识别
汽车相关识别(Vehicle Optical Character Recognition,Vehicle OCR)基于行业前沿的深度学习技术,提供驾驶证识别、行驶证识别、车牌识别、车辆 VIN 码识别等多种服务,支持将图片上的文字内容,智能识别为结构化的文本,应用于车主身份认证、ETC 出行、违章识别、停车管理等多种场景,大幅提升信息处理效率。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com