ubuntu18.04使用cudnn的过程中会遇见很多问题,而且搜索很多文章发现比较杂乱,我这里总结一下,方便小伙伴少走几步坑。
我的服务器硬件配置信息 (2019-01购买)
CPU: 英特尔(intel) i7 7820X 酷睿八核16线程
主板: 华硕 (ASUS) PRIME X299-DELUXE II
内存: 金士顿(Kingston)DDR4 3000 16G * 2
显卡:技嘉(GIGABYTE)GeForce RTX 2080Ti * 2
SSD: 英特尔(intel)760P 512G
硬盘: 西部数据红 4TB
电源: 航嘉磐石1800w
机箱: 美商海盗船 AIR540
散热: 九周风神大霜塔CPU散热风扇
ubuntu18.04下载
具体下载链接如下:
http://ftp.sjtu.edu.cn/ubuntu-cd/18.04.2/ubuntu-18.04.2-desktop-amd64.iso
使用虚拟光驱制作u盘启动
安装系统
启动按”del”键,进入BIOS界面,设置u盘启动,保存并重启。
下面是我的安装步骤:
首先重启成功,进入选择操作界面,选择安装ubuntu操作系统,如下图:
进入下一步选择英文,这里我们选择装成英文版,如下图:
进入下一步,选择英文键盘,如下图:
进入下一步,选择安装第三方类库,如下图:
进入下一步,选择格式化磁盘安装,如下图:
进入下一步,选择安装的磁盘,这里我选择我的ssd硬盘,如下图:
系统提示要写入磁盘,点击继续进入下一步,如下图:
进入下一步,选择时区,这里选择中文时区,如下图:
进入下一步,设置你的账户密码,如下图:
进入下一步,开始安装系统,如下图:
安装完成,重启机器。服务器安装完成,赶快先装个ssh吧,可以远程ssh,截图也方便点,不用手机人工一张一张拍了。
安装ssh server,并首先远程登陆
先查看一下ssh安装情况,命令如下:
sudo ps -e |grep ssh
结果如下图,发现没有安装:
执行安装命令如下:
sudo apt-get install openssh-server
安装完成再次查看ssh安装情况,命令如下:
sudo ps -e |grep ssh
结果如下图,发现多了一个sshd的服务:
用命令查看一下ip信息,执行命令如下:
ifconfig
结果如下图,提示需要安装net-tools:
执行命令安装net-tools,执行命令如下:
sudo apt install net-tools
安装完成继续用命令查看ip信息,执行命令如下:
ifconfig
执行结果如下图,发现ip地址为192.168.118.147
ip地址拿到了,赶快重启机器测试一下ssh能否正常吧。
我用mac item2命令行测试,使用ssh命令登陆,ssh命令如下:
ssh saycolor@192.168.118.147
根据提示选择yes,并输入前面设置的密码,登陆结果如下图,可以正常远程登陆啦。
远程ssh搞定,接下来操作截图方便多了,接下来的是要检测硬件设备以及安装显卡驱动。
首先检查一下硬件信息(这步大家可以跳过)
查看cpu信息,执行命令如下:
cat /proc/cpuinfo | grep model\name
检查结果如下图,CPU16线程:
查看内存信息,执行命令如下:
cat /proc/meminfo | grep MemTotal
检查结果如下图,内存32G:
查看一下显卡信息,执行命令如下:
lspci | grep 'VGA'
检查结果如下图,2张显卡:
声卡、网卡、硬盘不在这里检查了,感兴趣的大家可以自己搜索进行操作。
显卡驱动安装
在安装驱动之前先删除原有vim类库,不然会在vi编辑时发现上下左右键变成了奇怪的字符,命令如下:
sudo apt-get remove vim-common
sudo apt-get install vim
在刚才操作过程中明显中明显感觉到显示超级卡,可能上了RTX 2080Ti显卡后,Ubuntu18.04内置的驱动和PPA安装的都不运作了。废话不多说,赶快搞显卡驱动吧。
禁用系统默认显卡驱动
打开系统黑名单,命令如下 :
sudo vi /etc/modprobe.d/blacklist.conf
在blacklist.conf文件中添加禁用的显示设备,文件尾部追加内如如下:
# for nvidia display device install
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
保存blacklist.conf文件,然后更新内核,命令如下:
sudo update-initramfs -u
至于initramfs的介绍,可以参考这位小伙伴的博文链接:
重启电脑
sudo reboot
重启完成,执行命令如下(查看是否禁用成功,无输出则禁用成功):
lsmod | grep nouveau
2. 下载安装RTX2080 Ti驱动
方法一:从Ubuntu软件库安装
添加Graphic Drivers PPA软件库源到系统,执行命令如下:
sudo add-apt-repository ppa:graphics-drivers/ppa
更新本地软件库
sudo apt update
在软件库中寻找合适的软件版本,执行如下命令:
ubuntu-drivers devices
可以看出结果如下图,这里推荐一个第三方的navidia-driver-415版本驱动:
为了稳妥,我们去官网核对以下。
选择RTX20系列,RTX2080 Ti显卡, linux 64-bit,英文版本驱动进行搜索。搜索完成会列出所有版本的显卡列表,如下图:
我们可以看到几个415版本的驱动,打开415.23这个版本查看一下详情,如下图:
再次确认415版本支持GeForce RTX 2080 Ti显卡,所以我们可以放心的使用我们的软件库中的软件进行安装了。由于我们要安装显卡驱动,会影响桌面显示,我们可以先关闭(图形)桌面显示管理器LightDM,执行命令如下(对于本机安装的小伙伴,可以按ctrl+alt+F1进入tty文本模式):
sudo service lightdm stop
直接执行安装命令如下(这个下载过程比较长,大家耐心等待):
sudo apt install nvidia-driver-415
安装完成,重启系统,命令如下:
sudo reboot now
方法二:官网下载原厂最新驱动
在上面都搜索列表中,我们也可以直接安装最新的版本驱动,由于Graphic Drivers PPA软件库并不支持最新的驱动。
点击进入第一个最新的驱动版本进入详情页如下图,点击DOWNLOAD进行下载:
下载链接如下:
https://us.download.nvidia.com/XFree86/Linux-x86_64/418.43/NVIDIA-Linux-x86_64-418.43.run
服务器执行wget命令进行下载:
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/418.43/NVIDIA-Linux-x86_64-418.43.run
给驱动文件添加可执行权限,命令如下:
sudo chmod +x NVIDIA-Linux-x86_64-418.43.run
执行安装文件,命令如下:
sudo ./NVIDIA-Linux-x86_64-418.43.run
然后更新内核,重启系统,命令如下:
sudo update-initramfs -u
sudo reboot now
检测显卡驱动安装情况
重启完系统以后,进入桌面,明显感觉不卡啦,直观感觉显卡驱动装好啦,而且开机明显能听见显卡驱动风扇的声音。
执行命令查看显卡驱动是否安装成功,命令如下:
nvidia-settings
出现如下界面,驱动安装成功:
远程登陆服务器,使用命令行参数查看一下显卡信息,执行命令如下:
nvidia-smi
出现如下结果,表示安装成功(注意这里可以看到CUDA Version:10.0,我也有点疑问?这里我认为cuda是一种显卡支持的能力,随显卡驱动安装完成即拥有,CUDA Toolkit是一种基于GPU的抽象接口,使得c和c++开发者不用进行底层开发,需要单独安装。):
查看下显卡具体的版本,执行如下命令:
cat /proc/driver/nvidia/version
可以查看结果如下图:
安装CUDA Tookit
CUDA是什么?
CUDA® 是 NVIDIA 创造的一个并行计算平台和编程模型。它利用图形处理器 (GPU) 能力,实现计算性能的显著提高。想详细了解的可以参考小伙伴的这篇博文:CUDA——\”从入门到放弃\”
CUDA Tookit是什么?
NVIDIA® CUDA® 工具包为 C 和 C++ 开发人员构建 GPU 加速应用程序提供全面的开发环境。CUDA 工具包中包括一个针对 NVIDIA GPU 和数学库的编译器,以及用于调试和优化应用程序性能的各种工具。您还将找到编程指南、用户手册、API 参考和其他文档,帮助您快速开始使用 GPU 来加速应用程序。具体安装步骤参考链接: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
安装之前,我们要确认操作系统与显卡驱动以及gcc还有cuda的对应关系无误。
查看操作系统版本命令如下:
uname -m && cat /etc/*release
结果如下图:
查看gcc版本命令如下:
gcc -v
结果如下图:
ubuntu18.04和gcc的对应关系如下图,参考链接: CUDA Toolkit Documentation
可以看出ubuntu18.04和gcc7.3.0的对应关系,我们机器实际对应关系无误。
再确认一下显卡驱动版本,命令如下:
cat /proc/driver/nvidia/version
结果如下图,显卡驱动版本为415.27版本。
CUDA Tookit和显卡驱动的对应关系如下图,参考链接:CUDA Toolkit Documentation
上面我们安装的显卡驱动为415.27,根据关系相匹配的CUDA Toolkit应为10.0版本。下载CUDA Tookit,先进入CUDA Tookit列表选择页面,链接如下: https://developer.nvidia.com/cuda-toolkit-archive
最新的版本为10.1,但是跟我们匹配的是10.0,这里一定要选择对版本,点击进入下载,下载链接:https://developer.nvidia.com/cuda-10.0-download-archive ,选择对应的版本进行下载,这里选择runfile类型,因为这个可以选择跳过显卡驱动安装。
下载链接地址为:
https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
然后进行下载,准备安装,命令如下(这里可以使用sudo apt install nvidia-cuda-toolkit安装,但是我不确定是否安装版本能匹配上,没做尝试,大家可以选择尝试):
wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
给cuda toolkit安装文件添加可执行权限,命令如下:
sudo chmod +x cuda_10.0.130_410.48_linux
执行命令安装如下:
sudo ./cuda_10.0.130_410.48_linux
安装过程交互步骤:
输入accpet回车操作,确认协议,进入下一步:
输入no点击回车,进行下一步:
进入下一步,指定安装目录,直接回车,默认目录安装,如下图:
进入下一步,提示是否要建立一个软连接,直接回车确认建立,如下图:
进入下一步,提示是否安装cuda toolkit 示例,回车确认安装,如下图:
进入下一步,提示指定安装cuda toolkit 示例的安装路径,直接回车,默认目录安装,如下图:
安装完成出现如下界面,提示你确认添加环境变量配置。
首先我们确认一下当前使用的shell,使用命令如下:
echo $SHELL
截图如下,使用的是bash脚本。
我们修改用户目录下的.bashrc文件,命令如下:
cd ~
sudo vi .bashrc
添加如下配置到.bashrc文件尾部,内容如下:
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
添加完成以后,激活当前配置,命令如下:
source .bashrc
使用命令验证cuda toolkit安装是否成功:
nvcc -V
出现如下信息,cuda toolkit安装成功,如下图:
验证cuda toolkit,进入cuda toolkit提供的demo,进行编译测试,命令如下:
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
执行结果如下图,看到Result = PASS表示测试通过:
在上面我们可以看到2张显卡的设备信息,已经通过cuda toolkit测试通过的信息,cuda toolkit安装成功。
安装cuDNN
cuDNN是什么?
cuDNN的全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络(Deep Neural Networks)中的基础操作而设计基于GPU的加速库。cuDNN为深度神经网络中的标准流程提供了高度优化的实现方式,例如convolution、pooling、normalization以及activation layers的前向以及后向过程。cuDNN只是NVIDIA深度神经网络软件开发包中的其中一种加速库。
cuDNN只是NVIDIA深度神经网络软件开发包中的其中一种加速库。如下图,NVIDIA为深度学习准备了很多的SDK类库,想详细了解的可以参考链接: https://developer.nvidia.com/deep-learning-software
下载cuDNN
我们选择与CUDA版本对应的列表,这里我们选择支持CUDA10.0最新的cuDNN v7.4.2版本,如下图,对应系统架构和操作系统以及版本(x86_64架构ubuntu18.04操作系统):
下载链接地址:
cuDNN Runtime Library for Ubuntu18.04 (Deb)
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.2/prod/10.0_20181213/Ubuntu18_04-x64/libcudnn7_7.4.2.24-1%2Bcuda10.0_amd64.deb
cuDNN Developer Library for Ubuntu18.04 (Deb)
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.2/prod/10.0_20181213/Ubuntu18_04-x64/libcudnn7-dev_7.4.2.24-1%2Bcuda10.0_amd64.deb
cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.2/prod/10.0_20181213/Ubuntu18_04-x64/libcudnn7-doc_7.4.2.24-1%2Bcuda10.0_amd64.deb
大家可以用上面的安装包安装,我这里选择用linux通用的版本安装,如下图(这里需要点击进去注册登陆才能下载):
直接下载,命令如下(wget如果出现403,是需要登陆,我这里直接浏览器登陆下载的):
wget https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.2/prod/10.0_20181213/cudnn-10.0-linux-x64-v7.4.2.24.tgz
解压压缩包,命令如下:
tar -xzvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
然后copy解压文件到cuda目录,命令如下:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
至此cuDNN安装完成。
检测一下cuda版本,命令如下:
cat /usr/local/cuda/version.txt
结果如下图:
检测一下cuDNNcuda版本,命令如下:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
结果如下图:
我们想通过示例测试cuDNN,下载链接: cuDNN Archive
我们就下载官方示例代码,现在链接地址如下(wget如果出现403,是需要登陆,我这里直接浏览器登陆下载的):
wget https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.2/prod/10.0_20181213/Ubuntu18_04-x64/libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb
下载完成后,新建目录,解压deb文件到对应目录,然后取出里面的示例代码,命令如下:
mkdir cuda-samples
dpkg -X libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb cuda-samples
cd cuda-samples/usr/src
ls
可以看到目录中示例代码,如下图:
执行一下压缩命令,留着备用,需要的也可以直接找我要。
tar zcvf cudnn_samples_v7.tar.gz cudnn_samples_v7/
接下来我们要进去测试cuDNN,进入cudnn_samples_v7目录进行测试,这个下面的任何一个示例都可以,我们选择mnistCUDNN,先进入对应目录命令如下:
cd cudnn_samples_v7/mnistCUDNN
进行编译操作,命令如下:
make clean && make
编译完成可以看到生成一个编译后的可执行文件如下:
运行测试文件,命令如下:
./mnistCUDNN
运行以后可以看到如下的结果,如下图:
可以看到2张显卡写协作运行,测试通过。
安装anaconda
下载anaconda,命令如下:
wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh
执行安装命令:
./Anaconda3-2018.12-Linux-x86_64.sh
修改bash环境变量,命令如下:
sudo vi .bashrc
.bashrc文件尾部加入下面内容并保存。
export ANACONDA_HOME=/home/saycolor/anaconda3
export PATH=$ANACONDA_HOME/bin:$PATH
激活.bashrc
source .bashrc
检查安装结果
conda --version
看到如下图结果,表示anaconda安装成功:
由于anaconda默认国外镜像,有时候下载特别慢,我们想把镜像指向国内,执行如下命令,命令含义是加入镜像通道,并在搜索的时候显示通道地址:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
此时会在~/.condarc文件加入内容如下:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: true
我们查看一下加入镜像以后的文件内容,如下图:
新建python3的虚拟环境(名字叫tensorflow)
conda create -n tensorflow python=3.6.4
继续修改bash环境,设置默认激活tensorflow虚拟环境,命令如下:
sudo vi .bashrc
.bashrc文件尾部加入下面内容并保存。
source activate tensorflow
激活配置,执行命令如下:
source .bashrc
通过anaconda安装tensorflow
anaconda提供了一个界面进行操作;但是作为一个码农,我还是喜欢使用命令操作,所以下面都是基于命令行的操作;不喜欢的也可以在界面进行操作,这里不在介绍,大家可以自行google。
搜索镜像中的tensorflow列表,执行命令如下:
anaconda search -t conda -p linux-64 tensorflow
搜索命令参考如下图,-t参数指定安装方式,-p指定安装的平台,官网链接如下:Command reference
搜索以后结果如下图,Name是仓库名;Version是版本;Package Types就是安装包类型,我们上面指定的是conda,这里只会显示conda类型的安装包;Platforms这里是支持的平台,我们指定的是linux-64,这里会显示所有支持linux 64平台的conda类型的安装包,当然有些同时支持其他平台比如os-64等;Build是基于python构建的版本:
这里可能比较多,小伙伴不知道怎么选择,我这里给出几点建议:
1.优先选择你想要的版本,比如你比较明确要安装tensorflow1.12 gpu的版本,那选择对应的就并且支持你所要安装的平台架构可以了。
2.尽量选择支持平台多的版本,有时候我们服务器和自己电脑都要安装,想安装同样的版本,这个支持平台多的版本,对于代码在自己电脑和服务器同步操作的情况下,由于版本造成的差异会很小。
3.尽量选择anaconda/*开头的版本,这个一般是官网出的版本,一般情况下支持的平台也最多,至于原因就是因为我个人认为官网比较权威,没有被别人改动或者污染的可能性低。
这里我目标很明确,想要安装linux64的tensorflow gpu版本,所以我选择了一个如下版本:
查看一下镜像的具体信息,命令如下(anaconda命令不熟悉的小伙伴可以继续参考官网链接:Command reference):
anaconda show anaconda/tensorflow-gpu
查看结果如下图,列出了所有的版本,也看到最下方也提示了你执行安装的命令:
安装最新版,执行命令如下(如果不指定版本的前提下,默认安装最新版):
conda install --channel https://conda.anaconda.org/anaconda tensorflow-gpu
接下来就是安装过程,系统会提示你所安装的类库需要依赖安装的类库以及需要更新的类库,以及更新的类库对应从哪个版本变更到哪个版本。由于确认以后自动安装和更新,这里大家最好心中有数,以免新类库安装好了,基于被更新类库的代码跑不通了或者出现问题,这里如果确认无误,输入y确认安装,输入n推出安装。
安装过程如下图:
这里我们看到提示tensorflow-gpu 1.12版本安装成功,同时我们也能发现点问题
tensorflow-gpu依赖tensorflow-base
tensorflow-gpu 1.12版本依赖cudatoolkit-9.2和cudnn-7.2.1,而我们的显卡比较新安装了CUDA10.0最新的cuDNN v7.4.2版本,我怀疑tensorflow并不能跑出gpu加速效果。
接下来查看tensorflow是否安装,命令如下:
conda list|grep tensorflow
可以看到如下图,表面当前激活的anaconda环境下已经安装了tensorflow
快使用代码测试一下吧,使用python命令进入命令行,执行python脚本如下:
python
import tensorflow as tf
print(tf.__version__)
可以看到执行结果如下图,显示tensorflow的版本,表明安装成功:
这里tensorflow安装完成了,但是有些小伙伴喜欢使用jupyter Notebook进行编码和调试,下面我们就来配置一下jupyter Notebook使用自己上面配置的anaconda环境。
在当前anaconda虚拟环境下安装ipykernel,这里没啥特殊要求,直接如下命令默认安装。
conda install ipykernel
将当前anaconda虚拟环境环境写入notebook的kernel中,这里第一个tensorflow是anaconda虚拟环境环境的名字,第二个带引号的tensorflow是在jupyter Notebook中的显示服务名。
python -m ipykernel install --user --name tensorflow --display-name "tensorflow"
启动jupyter notebook,命令如下:
jupyter notebook
在jupyter notebook新建文件的时候,可以看到display-name对应对环境名或者在已经打开对文件选择服务–>改变服务切换。对于已经新建好的文件,也可以默认修改默认的服务,如下图:
还有些小伙伴使用pycharm开发,怎么配置pycharm使用anconda新建的虚拟环境呢,如下配置就可以了,指定好你的路径:
至此,ubuntu18.04+RTX2080Ti+cuda+cudnn+anaconda+tensorflow+jupyter notebook/pycharm配置基本完成。
opencv安装
安装opencv可以直接使用命令安装,这里我们下载opencv源码进行编译安装,如下图,官网链接 Releases – OpenCV library:
虽然4.0已经发布,但是python类库并不一定支持比较好,但是这里我选择3.4.4版本。
执行下载命令如下:
wget https://github.com/opencv/opencv/archive/3.4.4.zip
解压压缩包,命令如下:
unzip 3.4.4.zip
安装build-essential软件包 ,执行命令如下:
Ubuntu缺省情况下,并没有提供C/C++的编译环境,因此还需要手动安装。但是如果单独安装gcc以及g++比较麻烦,幸运的是,Ubuntu提供了一个build-essential软件包。也就是说,安装了该软件包,编译c/c++所需要的软件包也都会被安装。因此如果想在Ubuntu中编译c/c++程序,只需要安装该软件包就可以了。
sudo apt-get install build-essential
GCC 4.4.x以上,检查命令如下:
gcc -v
检查结果如下图:
2. CMake 2.8.7以上,检查命令如下:
cmake
检查结果如下图,发现没有cmake:
使用命令安装cmake,命令如下:
sudo apt install cmake
3. Git,检查命令如下,发现没有git:
使用命令安装git,命令如下:
sudo apt install git
4. GTK+2.x以上版本,包含头文件(libgtk2.0-dev),命令如下:
sudo apt-get install libgtk2.0-dev
5. pkg-config,安装命令如下:
sudo apt-get install pkg-config
6. Python 2.6 以上 and Numpy 1.5 以上,检测命令如下(这里有点疑惑,官网说的是developer packages,我们这里anaconda虚拟环境已经安装了,我认为不再需要安装):
conda list|grep python
conda list|grep numpy
7. 安装视频处理相关的软件包,执行命令如下:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
8. 安装可选的软件包,执行命令如下:
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
根据官网的步骤安装,我们其中还有一个libjasper-dev包安装不上,所以上面命令去除了这个软件包,错误如下图:
这里我们添加一个镜像仓库,更新以后再安装,执行命令如下:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper-dev
安装完成如下图:
9. CUDA Toolkit 6.5以上,之前我们安装过了,再检查一下,命令如下:
nvcc -V
准备工作完毕,进入opencv目录,新建目录命令如下:
cd opencv-3.4.4/
mkdir build_gpu
cd build_gpu
启用opencv cuda加速,配置命令如下:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUDA=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_CUBLAS=1 ..
具体参数含义如下:
CMAKE_BUILD_TYPE是编译方式
CMAKE_INSTALL_PREFIX是安装目录
OPENCV_EXTRA_MODULES_PATH是加载额外模块
INSTALL_PYTHON_EXAMPLES是安装官方python例程
BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON )
在配置过程中,需要下载ippicv_2019_lnx_intel64_general_20180723.tgz文件,这个文件下载速度超级慢,如下图:
所以这里选择离线单独下载这个文件,这里网上找到一个小伙伴分享的地址,下载地址如下,详细安装可以参考小伙伴的博文链接 Ubuntu – OpenCV 源码安装与测试:
ippicv_2019_lnx_intel64_general_20180723.tgz
百度网盘链接: https://pan.baidu.com/s/1mVTSdn6hTgo8P3ASKauyDg 提取码: hiux
配置完成,如下图:
配置完成,在配置完成的目录下,进行编译操作命令如下:
make -j7
编译过程中,出现错误如下图:
出现这个的问题是cuda10已经废除了NVIDIA Video Decoder (NVCUVID),参考链接:CUDA Toolkit Documentation
重新配置一下opencv,关闭cuda编译,命令如下(
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
使用如下命令进行编译:
make -j7
编译完成看到如下图:
执行安装命令如下:
sudo make install
安装完成提示如下图:
测试opencv安装是否成功,执行命令如下:
opencv_version
可以看到如下图,显示opencv的版本,如下图:
opencv虽然安装了,但是opecv基于cuda问题没有解决,这里也向小伙伴求助,欢迎小伙伴来指导。
安装python-opencv
使用anaconda搜索python-opencv,执行命令如下:
anaconda search -t conda opencv
查看python-opencv 3.4.4版本具体信息,执行命令如下:
anaconda show conda-forge/opencv
执行安装命令如下:
conda install --channel https://conda.anaconda.org/conda-forge opencv
测试python-opencv,在python命令行执行脚本如下:
python
import cv2
print(cv2.__version__)
看到如下图显示版本号,opencv安装成功:
接下来配置opencv库的环境变量,不然再调用时候会出现找不到类库的情况,修改/etc/ld.so.conf文件,命令如下:
sudo vi /etc/ld.so.conf
在文件尾部追加如下内容:
include /usr/local/lib
执行命令更新一下类库缓存:
sudo ldconfig
修改环境变量~/.bashrc文件,执行命令如下:
sudo vi ~/.bashrc
在~/.bashrc文件中加入PKG_CONFIG_PATH环境变量,如下:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
激活环境变量,执行命令如下:
source ~/.bashrc
安装pytorch
添加清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
anaconda安装pytorch
conda install pytorch torchvision cudatoolkit=9.0
验证pytorch以及cuda是否正常,如下图:
由于我们经常要在服务器上显示操作,不如做目标检测,总是在命令行操作,看不到opencv打开的效果怎么办?我们这里装个teamviewer吧,具体安装步骤如下:
官网选择linux版本,下载ubuntu版本deb安装包,官网链接地址:下载 Linux 版 TeamViewer,进行远程桌面访问和协作
执行下载命令进行下载,命令如下:
wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
下载完成,使用如下命令进行deb包的安装:
sudo dpkg -i teamviewer_amd64.deb
如果出现依赖库安装失败执行如下命令,强制更新类库依赖:
sudo apt-get install -f
安装如下图:
安装完成,执行启动teamviewer命令如下:
teamviewer
同意授权,如下图:
启动完成如下图,至此可以愉快的开始打怪升级之路了。