支持openvino的opencv源码编译

目录

Windows 7环境下安装

1 下载并安装OpenVINO

1-1 下载OpenVINO

1-2 开始安装 

1-3、安装完成

2、opencv 安装编译

2-1 下载opencv4.1.1

2-2 cmake下载安装

2-3 编译opencv 

3 opencv 配置openvino 编译

3-1 debug模式: 

3-2 Release模式:

4、测试:

4-1、使用 DNN_BACKEND_OPENCV backend;

4-2、使用DNN_BACKEND_INFERENCE_ENGINE backend,



OpenVINO是英特尔基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,支持各种英特尔平台的硬件加速器上进行深度学习,并且允许直接异构执行。 支持在Windows与Linux系统,Python/C++语言。

Opencv4.0 以上dnn模块添加了对Intel's Inference Engine的支持,可以通过OpenVINO对计算进行加速。

  opencv4.1.1 Backend 定义:

 enum Backend
    {
        //! DNN_BACKEND_DEFAULT equals to DNN_BACKEND_INFERENCE_ENGINE if
        //! OpenCV is built with Intel's Inference Engine library or
        //! DNN_BACKEND_OPENCV otherwise.
        DNN_BACKEND_DEFAULT,
        DNN_BACKEND_HALIDE,
        DNN_BACKEND_INFERENCE_ENGINE,  //!< Intel's Inference Engine computational backend.
        DNN_BACKEND_OPENCV,
        DNN_BACKEND_VKCOM
    };

本文是在Windows 7环境下安装及测试

1 下载并安装OpenVINO

1-1 下载OpenVINO

下载地址:https://software.seek.intel.com/openvino-toolkit?os=windows
此过程需要用户注册。

1-2 开始安装 

双击下载好的OpenVINO开始安装

选择安装内容,可以全选默认,Inference Engine里是不同硬件加速选项,我这里安装主要使用对CPU加速的部分。

支持openvino的opencv源码编译_第1张图片

1-3、安装完成

安装软件在,C:\Program Files (x86)\IntelSWTools\openvino_2019.2.275下

支持openvino的opencv源码编译_第2张图片

 

2、opencv 安装编译

2-1 下载opencv4.1.1

双击,选择解压路径

支持openvino的opencv源码编译_第3张图片

解压等待完成

2-2 cmake下载安装

可以在https://cmake.org/download/网址选择下载版本

选择cmake-3.15.1-win64-x64.msi下载,按照提示安装。

2-3 编译opencv 

打开cmake-gui.exe,选择源码路径和生成二进制路径,然后点一下config按钮,

等待结束后,在Search框查找world, 将BUILD_opencv_world选项勾选,将会将所有动态库整合为一个。

支持openvino的opencv源码编译_第4张图片

再次点击“Configure”按钮

等红色条目没有的时候,依次点击“Generate”,“Open Project”按钮,用VS2015打开。

3 opencv 配置openvino 编译

选择opencv_world工程,右键属性

支持openvino的opencv源码编译_第5张图片

做如下更改:

3-1 debug模式: 

1、VC++ 目录->包含目录 添加: C:\Program Files (x86)\IntelSWTools\openvino_2019.2.275\deployment_tools\inference_engine\include

2、VC++ 目录 -> 库目录添加: C:\Program Files (x86)\IntelSWTools\openvino_2019.2.275\deployment_tools\inference_engine\lib\intel64\Debug

3、C/C++ -> 预处理器 -> 预处理器定义 中 添加: HAVE_INF_ENGINE

4、链接器->输入->附加依赖项 中添加: inference_engined.lib

5、在文件op_inf_engine.cpp中添加   HAVE_INF_ENGINE定义

#ifndef HAVE_INF_ENGINE
#define HAVE_INF_ENGINE
#endif // !HAVE_INF_ENGINE

支持openvino的opencv源码编译_第6张图片

将 op_inf_engine.hpp文件内的  #warning("IE version have not been provided via command-line. Using 2018R4 by default") 行注释掉:

#ifndef INF_ENGINE_RELEASE
//#warning("IE version have not been provided via command-line. Using 2018R4 by default")
#define INF_ENGINE_RELEASE INF_ENGINE_RELEASE_2018R4
#endif

修改完成后 编译。

3-2 Release模式:

1,3,5和Debug模式相同,2,4改动如下:

 2、VC++ 目录 -> 库目录添加: C:\Program Files (x86)\IntelSWTools\openvino_2019.2.275\deployment_tools\inference_engine\lib\intel64\Release

4、链接器->输入->附加依赖项 中添加: inference_engine.lib

 

4、测试:

使用opencv自带的object_detection.cpp进行测试,用tesorflow的ssd_mobilenet_v2模型,Release模式下,

4-1、使用 DNN_BACKEND_OPENCV backend;

Net net = readNetFromTensorflow(modelPath, configPath);
net.setPreferableBackend(DNN_BACKEND_OPENCV);
net.setPreferableTarget(DNN_TARGET_CPU);

支持openvino的opencv源码编译_第7张图片

4-2、使用DNN_BACKEND_INFERENCE_ENGINE backend,

	Net net = readNetFromTensorflow(modelPath, configPath);
	net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE);
	net.setPreferableTarget(DNN_TARGET_CPU);

支持openvino的opencv源码编译_第8张图片

对比DNN_BACKEND_OPENCV和DNN_BACKEND_INFERENCE_ENGINE,每帧检测时间从 70~80mm缩减到了15~25mm,速度提升了3倍多,

网上看到有检测速度从80mm缩减到40mm, 加速性能可能和具体cpu型号有关系。

你可能感兴趣的:(opencv)