01-深度学习-win10系统下配置OpenCV-DNN模块使用CUDA(支持nvidia 显卡加速)


说明:这一块坑比较多,再参考了大量资料才成功实现,一次编译花费近两个小时,十分费神。笔者在前人基础上进行归纳终结,也记录了期间遇到的问题和解决方法,尽可能把实现步骤说明白。在此,也特别感谢博主:広仁,与他讨论了许多细节问题和错误,接下来进入正题。


1.引言

2019年12月23号,openCV发布了新版本4.2.0,其中比较重要的更新是对主流深度学习模型进行了cuda支持。openCV4.2.0
不过该模块还暂未以release版本发布,需要自己利用cmake进行导出编译,最终可用于c++/python下的opencv_dnn模块加速。

2. 运行环境与前期准备

运行系统:

1)win10 系统

需要提前安装的软件:

1)   Visual Studio 2017 社区版(先安装好,否则cuda无法正常安装)

2) cuda10.0cuDNN7.6.4 (后安装)

 

注:cuda安装也有坑,笔者会单独出一篇安装教程:地址

版本说明:cuDNN一定要7.5版本以上,否则CMake将无法识别出cuDNN路径。

3)OpenCV4.2.0OpenCV Contrib 4.2.0

      opencv 下载地址

      opencv_contrib 下载地址

注:在github上将源码压缩包下载下来即可

4)  Cmake3.18

     cmake 下载地址   选择适合自己电脑的版本

    版本说明:CMake版本不适宜太低,推荐3.14版本及以上。

3. 使用cmake进行编译

1. 打开cmake ,设置opencv源码目录和编译输出目录,并勾选

2. 点击configure,设置编译平台,之后开始第一次confirure

接下来就是第一个坑了,全程高能!!!!

3. 第一次configure后,中间会下载一些缓存文件,但用国内网基本都会失败,无法正常安装。但如果你是幸运儿,可以接着往下看,如果你相笔者一样下载了十几次都不成功,请看第六章:问题及解决方法。

4.   第一次configure,若输出窗口没有文件下载失败警告才可执行以下(内容比较多,滑动看看,有大红的位置就看看,仔细点)

      勾选BUILD_opencv_world、WITH_CUDA、OPENCV_DNN_CUDA、

      设置OPENCV_EXTRA_MODULES_PATH,之后第二次configure

    4.1 BUILD目录下:勾选BUILD_opencv_world

      

     4.2  OPENCV目录下:勾选OPENCV_DNN_CUDA 、设置OPENCV_EXTRA_MODULES_PATH

     

      注:选路径不要复制粘贴,要通过右方进入文件夹选

      4.3 WITH目录下:  勾选WITH_CUDA   

                       

5.  若还有报错(第二次configure之后),找到CUDA_ARCH_BIN,根据https://developer.nvidia.com/cuda-gpus此网站找到自己显卡的算力填入(我的显卡是960M,算力为5),并且勾选CUDA_FAST_MATH,将OpenCV_GENERATE_SETUPVARS的勾去掉,第三次configure:

    若无报错可往下继续:

 6. Configure done后(没有任何报错),需要仔细检查以下信息:

  (1)OpenCV中必须包含cuda、python3
  (2)必须要检测到正确版本的CUDA和cuDNN

 

7. 步骤6的条件都满足后,可以点击Generate,generating done之后,点击Open Project. 

   到此cmake任务完成。

  接下来考验耐心的时候到了!!!

4. 使用vs2017进行工程编译

1. 设置编译平台(Release/Debug均可)和 x64, 右键ALL_BUILD-生成,生成时间较长,需要1.5小时左右:

期间可能会有些乱码,大家不必惊慌,玩玩手机,耐心等待,此时电脑会比较卡。

2. 经过漫长等待,全部生成成功(前面步骤很重要啊)

3. 生成成功后,右键INSTALL-仅用于项目-仅生成INSTALL

 

 

   至此,祝贺大家成功将CUDA编译至OpenCV DNN模块,接下去python平台下的opencv dnn进行测试。

5. 如何使用

1. 在编译输出文件夹lib\python3下的cv2.cp37-win_amd64.pyd 和 

    复制到python环境下Lib\site-packages

    若你已经安装了opencv,替换掉即可。

   注:笔者安装了使用的是anaconda虚拟环境,所以我放到以下目录

 

6. 问题及解决方法

6.1 文件download失败解决方法:

方法1:巧借东风

         最便捷的就是挂v*n,笔者用外网两次就全部下载成功

方法2:  自食其力

     文件下载失败和网络有关系,而且一旦失败就会有多个文件下载失败,下面以第一个下载失败文件为例,进行说明,日志如下:

从上面可以看出,下载日志在保存在“E:\opencv4.2\opencv\sources\build\CMakeDownloadLog.txt”文件内,打开文件,搜索"ippicv",  第三行即为本文件信息:

 其中上面为本地缓存路径,下面为下载网址,直接复制网址到浏览器下载,如果浏览器也下载失败,可以尝试将地址复制到迅雷进行下载.

下载后保存到“E:/opencv4.2/opencv/sources/.cache/ippicv/”目录,删除目录内大小0KB的文件(如果有), 并按照d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip重命名。

方法三: 

         最轻松的就是拿别人下好的了,笔者会上传百度云分享给大家,或者留下联系方式。

 

 

6.2 其他问题:

       有些问题笔者并没遇到,所以无法给出解决方案,我把网上看到的分享给大家。

        https://blog.csdn.net/length85/article/details/103767475#1

 

参考资料:

https://blog.csdn.net/stjuliet/article/details/107812875#comments_12992454

https://blog.csdn.net/weixin_39928773/article/details/103709184

https://blog.csdn.net/length85/article/details/103767475#1