[加速] Opencv DNN通过 GPU 加速推理过程

本文介绍了如何利用CUDA加速OpenCV的DNN模块进行图像处理,特别是在使用HED算法进行边缘检测时,通过从源码编译安装支持GPU的OpenCV,解决了在大图推理上的速度问题。环境为Ubuntu 16.04,GPU为GTX TitanX,注意到OpenCV4.2.0对CUDA的Compute Capability最低要求为5.3。经过编译配置,最终实现了从原来的6秒降至0.2秒的推理时间。
摘要由CSDN通过智能技术生成

简介

最近在使用 Opencv HED 算法做边缘检测,在一张 1000X1000 大小的图片推理大概需要6秒,所以想通过GPU加速。之前一种通过 PYPI 安装 opencv-python ,这个版本是不支持GPU的,因此需要从源码编译安装。

参考了教程How to use OpenCV’s “dnn” module with NVIDIA GPUs, CUDA, and cuDNN
pyimagesearch 这个网站有很多篇文章介绍

环境是

Ubuntu 18.04
cuda 10.0 
cudnn 7.6.5 
GTX1080Ti
g++7
gcc7
cmake 3.14.1

同时注意Terminal能翻墙,cmake过程中会下载一些东西,网站被墙了。
另外尝试过使用cuda9.0 gcc5/g++5 和 TitanX显卡,都失败了。

安装 Opencv 4.2.0 大致流程如下。

安装必须要的库

Opencv 官方教程列的很详细

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential cmake unzip pkg-config
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libv4l-dev libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ sudo apt-get install python3-dev
$ sudo apt-get install python3.8-dev # 用于python3.8

查看cuda版本和显卡型号

$ nvcc -V # 可以查看cuda版本

还需要显卡的 Compute Capability, 在 Nvidia官网查看
比如 GTX TitanX对应的型号是 5.2,但Opencv4.2.0 dnn 最低要求是5.3 即使编译安装成功,最后推理的时候也会报错。
最好使用 10 系列显卡。

下载 Opencv 和 Opencv Contrib

直接复制开始给的连接的代码就好

$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
$ unzip opencv.zip
$ unzip opencv_contrib.zip
$ mv opencv-4.2.0 opencv
$ mv opencv_contrib-4.2.0 opencv_contrib

结束后 opencvopencv_contrib 分别包含各自的源码

准备虚拟环境

$ conda create -n py38 python=3.8 numpy # py38 环境名,必须包含numpy
$ conda acitvate py38 # 切换到这个环境下面
$ sudo mv /usr/bin/python2.7 /usr/bin/pythonNO-temp
# 记得用完后改回来
$ sudo mv /usr/bin/pythonNO-temp /usr/bin/python2.7

编译和安装

之前解压了opencv和openc-contrib,先进入copencv文件夹里面

$ cd opencv
$ mkdir build
$ cd build

然后用cmake指令

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \ 
	-D CMAKE_INSTALL_PREFIX=/usr/local \ 
	-D
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值