OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)

目录

  • 精彩预告:
  • 1.从源码编译到程序测试,详细介绍了DNN模块使用CUDA加速的具体细节;
  • 2.本文所附链接均可一步到位获得实用资源。
  • 部分配图来源于网络,请仔细核对,根据自己的情况修改。
  • 1. 准备
    • 1.1. 系统及硬件确认
    • 1.2. 资源下载
    • 1.3. 安装
      • 1.3.1. 安装VS2019
      • 1.3.2. 安装CMake
      • 1.3.3. 安装cuda
  • 2. 编译OenCV
    • 2.1. 整理文件目录
    • 2.2. 设置CMake
    • 2.3. 修改下载路径
    • 2.4. 修改配置
    • 2.5. 生成及信息核对
    • 2.6. 工程编译
      • 2.6.1. ALL_BUILD
      • 2.6.2 INSTALL
  • 3. 测试
    • 3.1. 配置
    • 3.2. 识别
      • 3.2.1. 程序
      • 3.2.2. 识别结果对比

精彩预告:

1.从源码编译到程序测试,详细介绍了DNN模块使用CUDA加速的具体细节;

2.本文所附链接均可一步到位获得实用资源。

部分配图来源于网络,请仔细核对,根据自己的情况修改。

1. 准备

1.1. 系统及硬件确认

此处所列仅代表测试机信息,请根据实际对照进行。
系统:Windows 10 专业版 64位
显卡型号:GTX 1660Ti

1.2. 资源下载

Tips:请根据显卡型号确定需要安装的cuda版本,根据cuda版本确认cudnn版本。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第1张图片
(1) 编译环境:VS2019 Community(网址:https://visualstudio.microsoft.com/zh-hans/)
(2) 编译器:CMake(最新版)(网址:https://cmake.org/)
(3) opencv源码和安装包:opencv4.3.0(网址:https://opencv.org/releases/)
(4) opencv-contrib:opencv_contrib4.3.0(网址:https://github.com/opencv/opencv_contrib/releases/tag/4.3.0)
(5) cuda:cuda 10.0.130(网址:https://developer.nvidia.com/cuda-toolkit-archive)
(6) cudnn:cudnn-10.0-windows10-x64-v7.6.4.38(网址:https://developer.nvidia.com/rdp/cudnn-archive)

1.3. 安装

以下参考安装步骤仅作为教程使用,请以“1.2资源下载”版本为准。

1.3.1. 安装VS2019

请参考:vs2019安装及简单处理(详细的很)(网址:https://blog.csdn.net/YSJ367635984/article/details/104648941/)

1.3.2. 安装CMake

请参考:Win10下安装CMake3.14.2以及CMake使用教程(网址:https://blog.csdn.net/qq_41895190/article/details/89299988)

1.3.3. 安装cuda

安装过程中会有“检查系统兼容性”,所以安装前要注意显卡与cuda版本要匹配。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第2张图片
请参考:Win10安装CUDA10和cuDNN(网址:https://blog.csdn.net/qq_37296487/article/details/83028394)

2. 编译OenCV

2.1. 整理文件目录

将“opencv_contrib-4.3.0”源码拷贝到“opencv-4.3.0”文件夹内,创建“OpenCV430_Build_2019"用于存放编译文件。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第3张图片

2.2. 设置CMake

打开CMake,选择源码路径,以及生成路径,选择对应VS版本。开始第一次Configue。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第4张图片

2.3. 修改下载路径

第一次configure完成之后,因一些第三方文件网络限制,无法下载,会出现提示。
此时,应该根据提示信息修改下载路径。
请参考:部分文件联网下载失败导致opencv过不了cmake解决方法(网址:https://blog.csdn.net/weixin_42386056/article/details/105576333)

2.4. 修改配置

中间需要多次点击”configure“。
(1) BUILD_opencv_world
勾选 BUILD_opencv_world:此项的目的是生成一个dll文件,比如:opencv_world430d.dll。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第5张图片
(2) OPENCV_DNN_CUDA
勾选OPENCV_DNN_CUDA。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第6张图片
(3) OPENCV_ENABLE_NOFREE
勾选 OPENCV_ENABLE_NOFREE:此项目的是编译contrib模块。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第7张图片
(4) OPENCV_EXTRA_MODULES_PATH
设置OPENCV_EXTRA_MODULES_PATH:设置contrib模块的目录:(注意一定到modules这个目录)。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第8张图片
(5) WITH_CUDA
勾选WITH_CUDA。
(6) CUDA_ARCH_BIN
将该项中版本小于5.3的都去掉。如果查不到此项,请configure一次。
(7) WITH_CUDNN
勾选 WITH_CUDNN。如果查不到此项,请configure一次。
(8) CUDA_FAST_MATH
勾选CUDA_FAST_MATH。
(9) python相关组件
如果不使用python就将如下python对应项的”√“去掉。(因版本不同,组件名称不一定一样,请根据实际选择)
在这里插入图片描述(10) 其他
其他的选项就根据自己喜好设定,比如test模块等。

2.5. 生成及信息核对

以上经过多次点击”Configure“,确定没有任何错误提示信息。
等待Configure完成之后,查看是否检测到了CUDA和cuDNN,都出现YES之后,说明没有问题。如果没有检测到的话,需要确认是否CUDA和cuDNN版本正确,否则后面的编译将不会编译CUDA模块,白白浪费时间。确认之后,点击Generate。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第9张图片

2.6. 工程编译

2.6.1. ALL_BUILD

点击“Open Project”打开工程,在Release模式下右键点击ALL_BUILD,生成,时间较长(戴尔G3 i7处理器耗时约100分钟)。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第10张图片

2.6.2 INSTALL

生成之后,右击INSTALL->仅用于项目->仅生成INSTALL。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第11张图片
到这边就编译好了,Debug版本同理

3. 测试

3.1. 配置

将“OpenCV430_Build_2019”文件夹拷贝到一个地方。
注意:拷贝这一堆是不是觉得很大,其实只需要将“install”里面的内容拷贝、配置即可。
(1) 添加环境变量
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第12张图片
(2) 在测试代码中配置包含目录、库目录
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第13张图片
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第14张图片
(3) 添加附加依赖项,opencv_world430d.lib。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第15张图片
(4) 拷贝opencv_videoio_ffmpeg430_64.dll和opencv_world430d.dll到“C:\Windows\System32”下。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第16张图片

3.2. 识别

3.2.1. 程序

以Mask R-CNN为例,对GPU加速运算效果作个对比。
只使用cpu运算对应的程序为绿框内,使用GPU加速对应的程序为红框内。
OpenCV4.3.0版本DNN模块使用CUDA加速教程(Window10&VS2019)_第17张图片

3.2.2. 识别结果对比

只使用cpu计算的耗时为10091ms(约10s)。

使用GPU加速的耗时为799ms(约0.8s)。

同样条件下,GPU加速运算耗时仅是cpu运算耗时的7.92%,满足大部分实时性要求一般的场合。

你可能感兴趣的:(深度学习,计算机视觉)