微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 觉得文章有用,请戳底部【好看】支持
OpenVINO ToolKit是英特尔发布的一套深度学习推断引擎,支持各种网络框架,官方给出的说明是支持100多种网络训练导出的模型(100多种网络模型,无知限制了我的想象力)官方对这个工具包的主要特点总结如下:
工具包(ToolKit)主要包括两个部分:
支持在Windows与Linux系统,Python/C++语言,也就是说ubuntu上可以放心使用!支持各种常见的深度学习框架的导出模型、推断引擎支持各种硬件设备包括
调用工作流程如下:
首先需要注册与下载,下载地址如下(建议下载Web Installer):
https://software.intel.com/en-us/openvino-toolkit/choose-download
Windows平台下的预安装要求如下:
很不幸的是我已经全部满足,所以下载好了就直接安装吧!
安装好以后执行:
完成车辆与车牌识别,注意模型支持中文车牌识别, 显示如下:
表示安装成功!
配置OpenCV DLIE支持版本 安装好的OpenVINO已经包含编译好的支持DLIE(deep learning Inference Engine)OpenCV开发SDK, 只需要要稍微配置一下即可支持,最新版本是OpenCV4.0.1,在我的机器上改动主要有两个地方:
OpenCV DNN模块支持的相关API如下
cv::dnn::Net::setPreferableBackend(
int backendId
)
backendId 表示后台计算id,
- DNN_BACKEND_INFERENCE_ENGINE表示使用intel的预测推断库
- DNN_BACKEND_OPENCV 一般情况都是使用opencv dnn作为后台计算
读取网络之后使用OpenCV作为计算后台
Net net = readNetFromCaffe(protxt, bin_model);
net.setPreferableBackend(DNN_BACKEND_OPENCV);
net.setPreferableTarget(DNN_TARGET_CPU);
读取网络之后使用DLIE作为计算后台
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倍左右。相关代码:
// 加载网络
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不够实时。这么硬核的文章,求个好看不为过吧!
博观而约取
厚积而薄发