一. NVIDIA显卡驱动
参考: https://www.cnblogs.com/abelsu/p/10625616.html
1. 安装前准备
(1). 检查是否有卡
一般购入电脑时就能有所了解,并且带有该显卡的电脑,都会有NVIDIA的绿色标识贴在机身上,只需要进一步确认就可以:
$ lspci | grep -i nvidia
如果输出有带NVIDIA字符就可以了。
(2). 关闭Security Boot
重启电脑,在开机过程中连续敲击某个键进入BOIS设置,我的是F2,有的电脑是F6,F12等,不确定的可以根据电脑情况查一下。
选择Security Boot一栏,回车将Enable改为Disable。
2. 安装NVIDIA显卡驱动
(1). 禁用nouveau
可以先检查一下是否禁用,我的在安装系统时就一并禁用了:
$ lsmod | grep nouveau
没有输出则证明被禁用了。
如果有输出,则执行:
$ sudo gedit /etc/modprobe.d/blacklist.conf
在文末添加:blacklist nouveau,保存关闭后执行:
$ sudo update-initramfs -u
重启电脑再执行:
$ lsmod | grep nouveau
(2). 把显卡驱动加入PPA:
卸载系统里的低版本驱动:
$ sudo apt-get purge nvidia*
$ sudo add-apt-repository ppa: graphics-drivers
$ sudo apt-get update
(3). 查找本电脑中NVIDIA显卡驱动最新版本号:
$ sudo apt-cache search nvidia
(4). 查看Ubuntu推荐的驱动版本:
$ Ubuntu-drivers devices
我的推荐是nvidia-driver-440。
(5). 打开软件和更新,点击附加驱动,选择使用推荐版本的选项,进行应用更改。
(6). 重启电脑执行:
$ nvidia-smi
我的配置只能用CUDA-10.2的版本,而目前的pytorch只能下载10.1版本,这是一个比较麻烦的问题,可能导致pytorch安装失败。
二. CUDA-10.2
1. 下载CUDA Toolkit 10.2
(1). 查看gcc,Kernel Header和Development
$ gcc --version
没有则安装:
$ apt install gcc
$ uname -r
确保Kernel Header与正在运行的Kernel相互匹配:
$ sudo apt-get install linux-headers-$(uname -r)
(2). 下载和安装CUDA
打开NVIDIA官网(https://developer.nvidia.com/cuda-downloads),在标有Select Target Platform的绿色表格内根据自己的配置情况进行选择,如我选的是:
Operating System:Linux
Architecture:x86_64
Distribution:Ubuntu
Version:18.04
Installer Type:deb(local)
一般来说下载方式选runfile(local)更容易成功,但deb比较稳妥。
选择结束之后下方的Download Installer for Linux Ubuntu 18.04 x86_64绿色表格中会出现名为Base Installer的嵌入式表格,复制其中给出的Installation Instructions到terminal进行安装即可。
文件大小约2.46G,最好保存到没有中文的目录下,以免出现之后乱码或其他问题。
(3). 查看文件是否下载完整
下载完成后点击嵌入式表格下方的Installer Checksums,查看校验码。在teiminal输入:$ md5sum ccuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb,得到下载之后的校验码。
对比二者无异则证明下载完整。
(4). 添加环境变量
打开cuda-10.2所在位置:
$ cd /usr/local/cuda-10.2/bin
找到nvcc,在terminal打开,输入:
$ vi ~/.bashrc
按a由只读改为插入,添加环境变量:
export PATH=”/usr/local/cuda-10.2/bin:$PATH”
输入命令验证是否配置好:
$ source ~/.bashrc
$ echo $PATH
(5). 测试是否安装成功
在终端输入:
$ cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
显示结果如图则证明安装成功。
三. cuDNN
参考:https://blog.csdn.net/u010801439/article/details/80483036
1. 下载和安装cuDNN
打开NVIDIA官网(https://developer.nvidia.com/cudnn),选择download cuDNN,这里需要登录才能进行下载,所以选择Login,没有账号则创建账号,有则直接登录。
选择for CUDA 10.2的cuDNN版本,选择其中的cuDNN Library for Linux下载,这个文件是基础文件。
下载完成后在文件所在目录下打开终端,执行:
$ tar zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz # 解压
$ sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64/
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.2/include/
$ sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn* # 为所有用户设置读取权限
$ cd /usr/local/cuda/lib64/
$ sudo rm -rf libcudnn.so libcudnn.so.7
$ sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7 libcudnn.so # 不够写的话分成三次建立
$ sudo ldconfig
安装libcupti:
$ sudo apt-get install libcupti-dev
在同样网站下载三个补丁文件:
cuDNN Runtime Library for Ubuntu 18.04(Deb)
cuDNN Developer Library for Ubuntu 18.04(Deb)
cuDNN Code Samples and User Guide for Ubuntu 18.04(Deb)
并安装:
$ sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.2_amd64.deb
2. 验证是否安装成功
在terminal输入:
$ cp -r usr/scr/cudnn_samples_v7/ home/用户名/cuDNN/
因为我在home建立了cuDNN的文件夹,就把它移动过来,进入目录:
$ cd /home/用户名/cuDNN/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
出现如下图证明安装成功:
四. Pytorch
Pytorch目前来看支持CUDA-10.1,cuDNN-7.6.3,但我的系统只支持CUDA-10.2,与cuDNN-7.6.5相匹配,只能安装CUDA-10.1的对应版本,凑合凑合也能用。
1. 下载pytorch
同CUDA一样,进入Pytorch官网依次选择安装指引即可下载,我的安装选择如下:
Pytorch Build:Stable(1.4)
Your OS:Linux
Package:Conda
Language:Python
CUDA:10.1
复制Run this Command至terminal即可下载,如果conda不行可以选择pip,不过两个都实在太慢,剩余时间是4-8天不等,于是切换到清华镜像(https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64)选择离线下载安装,根据电脑目前的配置选择pytorch和torchvision的两个文件:
a. pytorch-1.4.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2
b. torchvision-0.5.0-py37_cu101.tar.bz2
2. 安装
在浏览器下载成功后conda离线安装,速度非常快,一个文件大概十几秒:
$ conda install --offline pytorch-1.4.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2
$ conda install --offline torchvision-0.5.0-py37_cu101.tar.bz2
离线成功后再利用conda在线安装一次,注意:在Pytorch官网指令的基础上删掉“-c pytorch”,这一指令代表直接从官网下载,无法与本地安装好的部分相匹配,所以改成:
$ conda install pytorch torchvision cudatoolkit=10.1
开始下载,我因为网络的问题执行了两次才成功,不过总体只花费几分钟,还算高效。在terminal输入Python进入。注意如果anaconda环境变量没有添加成功,这里会返回Ubuntu系统自带的Python2.7,可以先输入Python3,这样可以直接跳转Python3.7,但是为了防止以后安装Python库的问题,还是尽快将anaconda的环境变量添加好。
代码:
$ python3
>>>import torch
>>>torch.cuda.is_available()
True
安装成功。
五. Tensorflow-gpu
参考:https://blog.csdn.net/MacwinWin/article/details/104108744#ssh_106
1. 安装前准备
升级一下pip3:
$ sudo apt-get install python3-pip
检查pip版本:
$ pip3 --version
目前已经是最新版。
用conda升级所有包:
$ conda update --all
不升级无妨,提前准备多一点,能让下一步运行更顺利一些。
2. 下载.whl文件
从Tensorflow的官网直下($ pip3 install tensorflow-gpu)网速过慢导致多次下载失败,也改用国内镜像源。
这次用的是阿里云的镜像,网址:http://mirrors.aliyun.com/pypi/simple/tensorflow-gpu/,直接下载tensorflow_gpu-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl到home,然后运行:
$ pip install tensorflow_gpu-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl
这样来说成功几率比较高,但是仍然可能中途出现卡顿、下载失败,可以将失败处的库找出来pip3 install+库的名称单独安装,然后重试安装Tensorflow。
同Pytorch一样,安装结束后进入Python:
$ python
>>>import tensorflow as tf # 此时会出现一些信息,是正常情况
>>>tf.__version__
‘2.1.0’
六. OpenCV-4.2.0
1. 安装前准备
参考:
https://blog.csdn.net/new_delete_/article/details/84797041#31_pkgconfig_86
https://blog.csdn.net/MacwinWin/article/details/104108744#ssh_106
(1). 安装依赖:cmake,依赖库和Python支持
安装cmake:
在cmake网站下载安装包(https://cmake.org/download/):
$ tar --zxvf cmake-3.16.4.tar.gz
$ cd cmake-3.16.4
$ sudo apt-get install libcurl4-gnutls-dev # 安装openssl依赖
$ ./bootstrap --system-curl
$ ./configure
$ sudo make install
$ cmake --version
3.16.4
安装依赖:
$ sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
安装Python3支持:
$ sudo apt install python3-dev python3-numpy
安装streamer支持:
$ sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
安装可选的依赖:
$ sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev
(2). 下载源文件
OpenCV(https://opencv.org/releases/)下载所需版本,有Source和GitHub两种方式,由于源的问题容易下载失败(失败时选择重试,之前下载的部分并不会被抹去)且耗时较长,可以尝试找一下GitHub资源,包括opencv(https://github.com/opencv/opencv/releases/tag/4.2.0)和opencv_contrib(https://github.com/opencv/opencv_contrib/releases/tag/4.2.0),下载好后将后者放进前者的文件夹下。
代码:
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib.git
如果下载太慢导致失败报错为:
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
有三种方法解决:
a. 加大缓存区:$ git config --global http.postBuffer xxx(改为缓存大小,524288000约有500M);
b. 缩小clone深度:$ git clone https://github.com/opencv/opencv.git --depth 1,depth 1指的是每个文件只取最近一次提交,而非所有历史版本,然后更新远程库到本地git fetch --unshallow
c. 更换协议:$ git clone git://github.com/opencv/opencv.git。
我试了一下都没用,直接打开https://github.com/opencv/opencv.git和https://github.com/opencv/opencv_contrib.git选择Clone or download下载到本地,下载好后将opencv_contrib放到opencv文件夹下。
OpenCV-4.2和OpenCV_contrib的压缩包网盘链接如下:
链接: https://pan.baidu.com/s/1rOz_lDZ4ZDGygi0TCGclUw 密码: pmwl
(3). 安装OpenCV
①. cmake
如果实在不清楚cmake命令,可以使用cmake-gui来进行选择:
A. C++接口
$ cd ~/opencv # opencv是自己取的文件夹名字,~是文件夹所在位置,不同用户各有不同
$ mkdir build
$ cd build/
$ cmake \
> -D CMAKE_BUILD_TYPE=RELEASE \
> -D CMAKE_INSTALL_PREFIX=/usr/local \
> -D INSTALL_C_EXAMPLES=ON \
> -D INSTALL_PYTHON_EXAMPLES=ON \
> -D BUILD_EXAMPLES=ON \
> -D OPENCV_GENERATE_PKGCONFIG=ON \
> -D WITH_TBB=ON \
> -D WITH_V4L=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 \
> -D OPENCV_EXTRA_MODULES_PATH=/home/jp/下载/opencv/opencv/opencv_contrib/modules ..
cmake过程中有两个包总下载失败:ippicv_2019_lnx_intel64_general_20180723.tgz(名字看报错下载失败的名字,之后安装的不一定是这个名字)和face_landmark_model.dat,最后在网页找到下载地址,ippicv网盘下载了,face_landmark_model.dat找同学帮忙下载的,代理服务器能用就用,不能用尽快另寻途径求助,否则一直下载失败。
ippicv网盘链接如下:
链接: https://pan.baidu.com/s/16FV_tFXi6trH79U-2oIyYg 密码: oc9j
face_landmark_model.dat网盘链接如下:
链接: https://pan.baidu.com/s/1BV2ONMrLrgcj2p0FMzdgug 密码: m44t
下载好后放在自己认为合理的位置,然后在~/opencv/3rdparty/ippicv路径下找到ippicv.make文件,修改一下第47行的
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/”
改为:
“file: (ippicv_2019_lnx_intel64_general_20180723.tgz的保存路径)”
同理打开~/opencv/opencv_contrib-master/modules/face打开CMakeList.txt,修改一下第19行的
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/”
改为:
“file: (face_landmark_model.dat的保存路径)”
重新执行cmake …的命令,发现在/usr/lib/include/x86_64-linux-gnu文件夹内缺失一个名为libvtkRenderingPythonTkWidgets.so的文件,在整个计算机目录下搜索找到其所在位置,在那个位置sudo mv libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/include/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so。
再次cmake即可成功。这个方法一般会默认接口在Ubuntu自带的Python2.7上。
cmake过程非常繁琐,运行结果冗长,并且不一定报的错误和此处指出的一样,只能逐行找error所在,然后逐个解决,如果配置都无误则一次就可以通过,一路顺利。即使报错也不要太担心,CSDN都有详细的帖子,耐心操作一下就可以了。
B. Python3接口
Python接口直接用:
$ pip3 install opencv-python
就可以了,如果要手动编译,cmake内容如下:
$ mkdir build
$ cd build/
$ cmake \
> -D CMAKE_BUILD_TYPE=RELEASE \
> -D INSTALL_C_EXAMPLES=OFF
> -D WITH_CUDA=ON
> -D WITH_CUBLAS=ON
> -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES"
> -D CUDA_ARCH_PTX=""
> -D CUDA_FAST_MATH=ON
> -D CUDA_ARCH_BIN="5.2"
> -D WITH_TBB=ON
> -D WITH_OPENMP=ON
> -D BUILD_NEW_PYTHON_SUPPORT=ON
> -D BUILD_TESTS=OFF
> -D WITH_V4L=ON
> -D PYTHON3_EXECUTABLE="/home/jp/anaconda3/bin/python3.7"
> -D PYTHON3_INCLUDE_DIR="/home/jp/anaconda3/include/python3.7m"
> -D PYTHON3_LIBRARIES="/home/jp/anaconda3/lib/libpython3.7m.so"
> -D PYTHON3_PACKAGES_PATH="/home/jp/anaconda3/lib/python3.7/site-packages"
> -D PYTHON3_NUMPY_INCLUDE_PATH="/home/jp/anaconda3/lib/python3.7/site-packages/numpy/core/numpy"
> -D OPENCV_EXTRA_MODULES_PATH=/home/jp/下载/opencv/opencv/opencv_contrib/modules ..
因为我要搭建Python3的接口,所以注意Python3的各项配置是否已经改到anaconda3下。
显示如图,即可进行下一步。
②. make
参考:https://blog.csdn.net/qq_33475105/article/details/82819850
查看电脑几线程:
$ grep 'processor' /proc/cpuinfo | sort -u | wc -l
我的是8线程,运行命令:
$ make -j8
A. C++接口
错误一:
出错位置在~/opencv/opencv_contrib-master/modules/cudalegacy/scr/graphcuts.cpp文件中,报错:Makefile:162: recipe for target ‘all’ failed,修改graphcuts.cpp第46行的|| (CUDART_VERSION >= 8000)为|| (CUDART_VERSION >= 10000)。这个报错的原因是目前OpenCV设定的版本是CUDA8.0,与CUDA10.0以上版本不兼容。
错误二:
/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: 没有那个文件或目录 #include “boostdesc_bgm.i”
打开https://github.com/opencv/opencv_3rdparty/branches/stale?page=1
下载: “contrib_xfeatures2d_vgg_20160317” and "contrib_xfeatures2d_boostdesc_20161012"两个文件并将解压后的文件中的所有.i文件复制至/opencv_contrib-master/modules/xfeatures2d/scr/目录下。
错误三:
/modules/xfeatures2d/test/test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录
#include “features2d/test/test_detectors_regression.impl.hpp”。
从/opencv/modules/features2d/test/中将test_detectors_regression.impl.hpp和test_descriptors_regression.impl.hpp两个文件复制到/opencv/opencv_contrib-master/xfeatures2d/test/下,然后修改头文件test_features2d.cpp第51-52行如下所示。
修改前:
#include “features2d/test/test_detectors_regression.impl.hpp”
#include “features2d/test/test_descriptors_regression.impl.hpp”
修改后:
#include “test_detectors_regression.impl.hpp”
#include “test_descriptors_regression.impl.hpp”
如果报错没有test_detectors_invariance.impl.hpp同理从/opencv/modules/features2d/test/中复制到/opencv/opencv_contrib-master/xfeatures2d/test/里,在头文件test_rotation_and_scale_invariance.cpp中进行类似修改,去掉文件名前的路径即可。缺乏不同文件需要修改的头文件不同,需要自己找,比如test_invariance_utils.hpp就不用修改头文件,复制到位即可。
这次没有报错了,后面继续编译到约97%会有点卡,稍等一下就能编译完,如图:
B. Python3接口
Python3接口报的错只有上述错误二,操作方式相同。
③. $ sudo make install
④. 测试
参考:
https://www.cnblogs.com/qiaozhoulin/p/4978055.html
https://blog.csdn.net/PecoHe/article/details/97476135
添加库路径:
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
可能是个空文件,在其中输入:/usr/local/lib,保存并退出。
添加环境变量一:
$ sudo gedit /etc/profile
在文本末尾输入:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
更新环境变量一:
$ source /etc/profile
添加环境变量二:
$ sudo gedit /etc/bash.bashrc
在文本末尾输入:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
更新环境变量二:
$ source /etc/bash.bashrc
更新系统库缓存:
sudo ldconfig
查看OpenCv4是否安装成功:
$ pkg-config --cflags opencv
$ pkg-config --libs opencv
没有报错就说明成功,这里是在检索一个名为opencv.pc的文件,也有可能名为opencv4.pc,如果第一次报错没有找到opencv,尝试把命令改为:
$ pkg-config --cflags opencv4
$ pkg-config --libs opencv4
或者在/usr/local/pkgconfig下找到opencv4.pc,更名为opencv.pc。
Python3安装结果如下:
来源:CSDN
作者:Jerry Pig
链接:https://blog.csdn.net/Jerry_Pig/article/details/104556910