VS2017 OpenCV4.4.0使用Openvino加速dnn模块推理速度

Step0 准备文件

  1. opencv-4.4.0.zip
  2. opencv_contrib-4.4.0.zip
  3. cmake-3.19.1-win64-x64_2.msi
  4. w_openvino_toolkit_p_2020.4.287.exe

Step1 解压文件

安装cmake-3.19.1-win64-x64_2.msi和w_openvino_toolkit_p_2020.4.287.exe,都默认就好。

将opencv-4.4.0.zip解压到文件夹opencv440中

将opencv_contrib-4.4.0.zip解压到文件夹opencv440/opencv_contrib中

Step2 配置opencv和dnn模块加速

配置好openvino的环境变量

环境变量
INTEL_OPENVINO_DIRC:\Program Files (x86)\IntelSWTools\openvino
INTEL_CVSDK_DIR%INTEL_OPENVINO_DIR%
HDDL_INSTALL_DIR%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\hddl
InferenceEngine_DIR%INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\share
NGRAPH_DIR%INTEL_OPENVINO_DIR%\deployment_tools\ngraph\cmake
OpenCV_DIR%INTEL_OPENVINO_DIR%\opencv\cmake

然后在path中添加

OpenCV相关的的条目可加可不加。

  • %HDDL_INSTALL_DIR%\bin
  • %INTEL_OPENVINO_DIR%\opencv\bin
  • %INTEL_OPENVINO_DIR%\deployment_tools\ngraph\lib
  • %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\tbb\bin
  • %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Release
  • %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Debug

然后打开cmake_gui

设置源文件目录为C:/Users/lenovo/Desktop/opencv440/

设置构建文件目录为C:/Users/lenovo/Desktop/opencv440/build

点击Configure

配置:“VS 15 2017” x64

点击Finish

然后根据下表格配置选项:

选项内容说明
OPENCV_EXTRA_MODULES_PATHC:/Users/lenovo/Desktop/opencv440/opencv_contrib/modules改成自己的modules路径
BUILD_opencv_python_bindings_generator不勾选
BUILD_opencv_world勾选
WITH_INF_ENGINE勾选
OPENCV_ENABLE_NONFREE勾选必须勾选

点击Configure

将路径

C:\Program Files (x86)\IntelSWTools\openvino_2020.4.287\deployment_tools\inference_engine\share

填入到选项InferenceEngine_DIR中。

把选项WITH_NGRAPH选项勾上,要不然编译时候会报错

把选项BUILD_opencv_python_bindings_generator 去掉勾选,

再点击Configure。

注意,点击Configure以后,可能会联网下载一些文件,如果下载不到的话,自己查资料解决一下,保证点击Configure以后不报错

Step3 打开工程

点击Generate,点击OpenProject,这时,vs会打开此工程。

Step4 编译

在项目中的ALL_BUILD上右键,选择生成。

Step5 导出到install

在项目中的INSTALL上右键,选择“仅用于项目”,选择“仅生成INSTALL”。

在install中即可找到编译好的文件。

Debug模式的文件同理。

Step6 加速推理

net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE);   // 不加速时用DNN_BACKEND_OPENCV
net.setPreferableTarget(DNN_TARGET_CPU);

Step7 异常解决

编译之后,在代码中调用过程中,前向推理时会报错,也就是net.forward();时会报错。
在QT中的错误代码是exited with code -1073741515
原因:dll文件缺失。
解决办法,到openvino安装目录下搜索两个文件

ngraph.dll
tbb.dll

上边两个文件,再加上opencv_world440.dll,一共三个文件复制到工程目录下即可。
如果复制后还是有问题,在VS中报错是InferenceEngine::GeneralError什么什么内存错误,还需要把MKLDNNPlugin.dll复制过来


更新:OpenCV4.5以后的版本,用这个版本的OpenVINO好像不行,编译的时候会报错。最好用新版本的OpenVINO。上次编译OpenCV4.5.2的时候,用的OpenVINO版本是2021.4,仅供参考。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值