OpenCV4.4 CUDA编译与加速全解析

2020 年 10 月 14 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


本文转自OpenCV学堂。


OpenCV4.4 + CUDA概述


OpenCV4.4中关于CUDA加速的内容主要有两个部分。


第一部分是之前OpenCV支持的图像处理与对象检测传统算法的CUDA加速;


第二部分是OpenCV4.2版本之后开始支持的针对深度学习卷积神经网络模型的CUDA加速。


这些内容都在OpenCV的扩展模块中,想要获取这OpenCV CUDA的支持,必须首先编译OpenCV CUDA相关的模块,这里主要是开展模块以CUDA开头的那些。


此外编译的电脑或者PC必须有N卡(英伟达GPU卡),并且按照好了正确版本的驱动与cuDNN支持软件。


本文分为两个部分来说明如何在OpenCV中实现CUDA加速,第一部分是实现CUDA支持版本OpenCV编译,第二部分是OpenCV CUDA SDK编程代码演示。


01

OpenCV+CUDA编译与配置

首先说一下系统与相关软件版本:

  • Window 10 x64

  • VS2015专业版

  • CMake 3.17.1

  • OpenCV4.4.0

  • OpenCV_contrib-4.4.0

  • CUDA10.0

  • cuDNN7.0

硬件为1050Ti。


OpenCV4.4下载地址

https://github.com/opencv/opencv/releases/download/4.4.0/opencv-4.4.0-vc14_vc15.exe

OpenCV4.4扩展模块下载地址:

https://github.com/opencv/opencv_contrib/archive/4.4.0.zip


下载好OpenCV4.4及其扩展模块之后,我们就开始下面的编译步骤。


第一步:打开CMake,设置好下面的目录路径,注意源代码路径需要指向真实的OpenCV的source目录。图示如下:



第一次运行,记得参数选择x64



如果成功运行了config之后,请继续完成下面的设置。


第二步:设置扩展模块路径,勾选所有CUDA选项再次点击config




点击config运行之后,再点击generate安装,如果一切OK即可完成CMake部分,下面就是到build的目录下:

D:\opencv-4.4.0\opencv\cudabuild


双击打开OpenCV.sln工程文件,切换到release模型下,右键点击ALL_BUILD选择【生成….】运行完成,再次右键选择install,选择【生成…】这两次过程都会比较漫长,编译完成之后,就会得到intall目录,我们需要的就是它,其它都可以删掉了。


这样我们就完成了OpenCV CUDA的编译。


注意点:


可能看我编译最多30分钟完成这些操作(等待时间不计在内),但是第一次这么干的新手会遇到各种问题,其中最常见的一个网络问题就是无法下载第三方库,导致CMake编译失败,这里时候需要手动下载一下,然后copy到

D:\opencv-4.4.0\opencv\sources\3rdparty

文件下对于目录内即可。


在config的扩展模块的时候,请去掉所有test相关的模块,然后选择不编译opencv_face模块,原因是它会下载一些东西,但是网络无法连接,这样就可以cmake失败。


完成了整个编译过程之后,生成install之后就可以来配置OpenCV CUDA支持啦!跟配置正常OpenCV4版本相似,唯一不同的就是这里没有opencv_world440.lib文件了,而且根据各个模型生成lib,需要把这些lib全部添加到链接器中,然后把库目录与包含目录原来指向目录都改到指向编译以后的install内相关目录路径,把vc14/bin目录添加环境变量中去。重启VS2015,即可完成全部配置过程。


上述步骤的详细操作,B站视频,直接这里观看!

https://www.bilibili.com/video/BV1Rp4y1a7cm/

02

CUDA加速演示

OpenCV支持传统的图像处理的CUDA加速,从OpenCV4.2开始支持深度神经网络的CUDA加速,因此在OpenCV4.4中,CUDA是既可以加速传统的图像处理,特征与对象检测;又可以支持深度神经网络的CUDA加速。下面的代码首先查询相关GPU:


1cuda::printCudaDeviceInfo(cuda::getDevice());
2int count = cuda::getCudaEnabledDeviceCount();
3if (count > 0) {
4    printf("GPU Device Count : %d \n", count);
5}


设备信息,代码与运行截图如下:


DNN人脸检测加速

CPU上运行OpenCV DNN人脸检测:



GPU上运行OpenCV DNN人脸检测:


视频背景分析



可以看出,无论是对传统图像处理的视频背景分析,还是基于深度学习DNN人脸检测,OpenCV CUDA都可以取得很好的加速效果。


注意:OpenCV4.4的CUDA导入跟之前的方式有所不同,模型头文件更加模块化,需要导入的头文件如下:


1#include <opencv2/cudaarithm.hpp>
2#include <opencv2/cudaoptflow.hpp>
3#include <opencv2/cudaimgproc.hpp>
4#include <opencv2/cudafeatures2d.hpp>
5#include <opencv2/cudaobjdetect.hpp>
6#include <opencv2/cudawarping.hpp>
7#include <opencv2/cudafilters.hpp>



专辑:计算机视觉方向简介

专辑:视觉SLAM入门

专辑:最新SLAM/三维视觉论文/开源

专辑:三维视觉/SLAM公开课

专辑:深度相机原理及应用

专辑:手机双摄头技术解析与应用

专辑:相机标定

专辑:全景相机

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

投稿、合作也欢迎联系:simiter@126.com

扫描关注视频号,看最新技术落地及开源方案视频秀 ↓

登录查看更多
3

相关内容

一个跨平台的计算机视觉处理库,全称是Open Source Computer Vision。
【2020干货书】Python3基础导论介绍,98页pdf
专知会员服务
100+阅读 · 2020年10月11日
专知会员服务
81+阅读 · 2020年9月28日
【2020新书】C++20快速语法参考,第4版,209页pdf
专知会员服务
71+阅读 · 2020年8月5日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
YOLOv3Tiny 仅需2.17ms,OpenCV 4.2 DNN with CUDA 示例
极市平台
8+阅读 · 2020年1月21日
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
用OpenCV创建GIFs,给你的照片戴上墨镜
论智
8+阅读 · 2018年11月8日
6个实验教你用Torch玩转深度学习
七月在线实验室
7+阅读 · 2017年11月21日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
手把手教你安装深度学习软件环境(附代码)
数据派THU
4+阅读 · 2017年10月4日
从零开始:深度学习软件环境安装指南
机器之心
6+阅读 · 2017年10月2日
Arxiv
0+阅读 · 2020年12月3日
Arxiv
0+阅读 · 2020年12月3日
Arxiv
0+阅读 · 2020年11月27日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
VIP会员
相关资讯
YOLOv3Tiny 仅需2.17ms,OpenCV 4.2 DNN with CUDA 示例
极市平台
8+阅读 · 2020年1月21日
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
用OpenCV创建GIFs,给你的照片戴上墨镜
论智
8+阅读 · 2018年11月8日
6个实验教你用Torch玩转深度学习
七月在线实验室
7+阅读 · 2017年11月21日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
手把手教你安装深度学习软件环境(附代码)
数据派THU
4+阅读 · 2017年10月4日
从零开始:深度学习软件环境安装指南
机器之心
6+阅读 · 2017年10月2日
相关论文
Arxiv
0+阅读 · 2020年12月3日
Arxiv
0+阅读 · 2020年12月3日
Arxiv
0+阅读 · 2020年11月27日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Top
微信扫码咨询专知VIP会员