OpenCV DNN模块使用OpenVINO对CPU进行推理加速

引言

OpenVINO是Intel推出的针对自家硬件(酷睿系列6代以上CPU,至强系列部分CPU,部分图形显卡以及FPGA、VPU、神经计算棒等硬件,详情点此处)进行神经网络模型推理加速的开发库,可使用Python和C++进行编程开发。主要可以从两个方式进行开发:
1.直接利用OpenVINO导入模型进行推理加速。
2.利用OpenCV导入训练好的模型,设置好推理后端以及推理硬件,即可实现推理加速。

net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE);
net.setPreferableTarget(DNN_TARGET_CPU);

本文将对第二种方式的环境搭建,以及OpenCV和OpenVINO的联合编译过程及相关注意事项进行记录,希望对大家有所帮助。

相关软件及库下载安装说明

1.OpenVINO库下载及安装

根据官网要求注册Intel帐号,登录之后就可以下载,我这边选择了最新版本,记住序列号,可能以后会用到。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第1张图片
下载完成之后直接运行,需要把文件解压到一个文件夹,这边任意选择一个文件夹进行解压即可。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第2张图片
解压完之后会直接进入安装界面,由于楼主没有VPU,这边就不安装VPU模块,建议安装在默认路径,点击Next。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第3张图片
接下去会提示缺少什么软件或者硬件,如我这边缺少Intel的图形显卡硬件,无关紧要,直接下一步进行安装。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第4张图片
等待安装完成。

OpenCV源码下载

选择好OpenCV版本进行下载,要4.0以上的版本,楼主这边选择4.1.2版本,不需要opencv_contrib库。

CMake及VS安装

CMake这边楼主选择的是3.14,VS版本可以是2015和2017,都有过测试,可用。

编译过程

打开CMake,选择OpenCV源码路径以及生成的路径,点击Configure,选择正确的编译平台,点击Finish,开始第一次Configure。(由于过程中会下载一些第三方库,下载速度可能会比较慢,可手动到此处下载,放在相应的文件夹中,这部分比较繁琐,就不细说)
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第5张图片
勾选Build_opencv_world,进行第二次Configure。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第6张图片
Configure完成之后,点击Generate,等待生成完成。OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第7张图片
生成完成之后,在生成路径下找到OpenCV.sln,右键选择相应版本的VS打开。找到opencv_world项目,右键属性,配置相关路径。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第8张图片
包含目录:
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第9张图片
库目录:
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第10张图片
附加依赖项,inference_engine.lib (Release模式)和inference_engined.lib (Debug模式)。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第11张图片
在C/C+±>预处理器->预处理定义器中添加:HAVE_INF_ENGINE。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第12张图片
找到源文件op_inf_engine.cpp,添加

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

OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第13张图片
找到头文件op_inf_engine.hpp,注释掉warning。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第14张图片
右键ALL_BUILD生成,等待一会儿。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第15张图片
生成完之后,找到INSTALL->仅用于项目->仅生成INSTALL。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第16张图片
到这边编译完成。

测试

设置环境变量。在这里插入图片描述
在工程中设置包含目录,库目录以及附加依赖项。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第17张图片
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第18张图片
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第19张图片
然后开始测试,首先是不使用推理引擎加速的,推理时间是20-23ms左右,略有波动。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第20张图片
然后是使用推理引擎,推理时间是8-9ms左右。OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第21张图片
顺便贴出使用CUDA模块进行加速的推理时间,大概是2到3ms之间。配置方法可以看我这篇博客。
OpenCV DNN模块使用OpenVINO对CPU进行推理加速_第22张图片

你可能感兴趣的:(OpenCV)