点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

来源丨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>

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐