MyFPGA Forum

 找回密码
 注册
搜索
查看: 2839|回复: 0
打印 上一主题 下一主题

OpenVINO视觉加速库使用一

[复制链接]
跳转到指定楼层
1#
发表于 2020-6-19 16:56:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
OpenVINO介绍

图1

OpenVINO是英特尔推出一套基于深度学习的计算机视觉加速优化框架,支持其它机器学习平台模型的压缩优化、加速计算等功能。 自发布以后就得到开发者的青睐,其强大的模型优化与压缩能力与加速计算引擎带来的速度提升让人十分惊喜,前面发布过一篇文章,详细介绍了OpenVINO的架构与其加速引擎(Inference Engine-IE)使用,如何帮助开发者在CPU上对深度学习的模型跑出实时帧率,文章链接如下:

相关内容链接:
使用OpenVINO ToolKit 实时推断
OpenCV调用Faster-RCNN对象检测网络

其下载地址如下:
https://software.intel.com/en-us ... ee-download-windows

核心组件与功能
OpenVINO主要包括两个核心组件一个预训练模型库

图2

核心组件-模型优化器

模型优化器Model Optimizer,模型优化器支持的深度学习框架包括

-ONNX
-TensorFlow
-Caffe
-MXNet

核心组件-推断引擎

推断引擎(Inference Engine)支持硬件指令集层面的深度学习模型加速运行,同时对传统的OpenCV图像处理库也进行了指令集优化,有显著的性能与速度提升。支持的硬件平台包括如下:

-GPU
-GPU
-FPGA
-MYRIAD(英特尔加速计算棒第一代与第二代)
-HDDL
-GAN

公开模型库

Intel发布的大量预训练模型,这些模型包括

图3

图4
这些模型库涵盖了很多视觉应用场景的通用模型,可以快速的搭建项目原型,得到效果,同时还支持把tensorflow/caffe等框架训练出来的模型通过模型优化器,优化处理成为二进制IR模型。

使用预训练模型实现车辆与车牌检测

OpenCV4.0 DNN模块支持直接加载这些模型,API为:
  1. Net cv::dnn::readNetFromModelOptimizer(
  2.     const String &xml,
  3.     const String &bin
  4. )
复制代码
其中
Xml表示模型配置信息文件
Bin表示二进制的模型文件

在OpenCV DNN中加载车辆与车牌检测模型,代码如下:
  1. // 加载模型
  2. Net net = readNetFromModelOptimizer(xmlInfo, binModel);
  3. net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE);
  4. net.setPreferableTarget(DNN_TARGET_CPU);
复制代码
使用模型进行预测代码如下:
  1. // 运行网络
  2. Mat blob = blobFromImage(image, 1.0, Size(300, 300), Scalar(), false, false, 5);
  3. net.setInput(blob);
  4. Mat detection = net.forward();
复制代码
对输出的detection进行解析之后显示:
  1. // 解析输出结果
  2. for (int i = 0; i < detectionMat.rows; i++) {
  3.     float confidence = detectionMat.at<float>(i, 2);
  4.     if (confidence > confidence_threshold) {
  5.         size_t objIndex = (size_t)(detectionMat.at<float>(i, 1));
  6.         float tl_x = detectionMat.at<float>(i, 3) * image.cols;
  7.         float tl_y = detectionMat.at<float>(i, 4) * image.rows;
  8.         float br_x = detectionMat.at<float>(i, 5) * image.cols;
  9.         float br_y = detectionMat.at<float>(i, 6) * image.rows;

  10.         Rect object_box((int)tl_x, (int)tl_y, (int)(br_x - tl_x), (int)(br_y - tl_y));
  11.         rectangle(image, object_box, Scalar(0, 0, 255), 2, 8, 0);
  12.     }
  13. }
复制代码
运行结果如下所示:

图5

图像大小为1600x1200, i7 CPU笔记本上运行,这速度还用多说吗?

转自:https://mp.weixin.qq.com/s/3KkucMJSde9SUf4pTp-4Kw
作者:gloomyfish  OpenCV学堂




您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-4-26 11:32 , Processed in 0.041976 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表