本片博客的安装环境是ubuntu16.04系统和已经安装好的GPU驱动,GPU安装驱动请自行完成。
安装好驱动之后执命令查看安装的驱动版本:
sudo nvidia-smi
我这里选择cuda-8.0.44进行下载。这个是下载cuda的链接地址:https://developer.nvidia.com/cuda-80-download-archive
下载下来的文件放到**/home**目录下,大家也可以选择适合自己电脑的CUDA版本进行下载。
执行下面的命令进行安装:
sudo sh cuda_8.0.44_linux.run
注意:在安装的时候首先要一直按enter键完成安装文档的阅读,然后选择 **accept ** 接下来会出现让你选择是否安装nvidia361驱动,因为前面驱动已经安装好了,所以这里要选择no,不安装默认驱动
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?#就是这里要选择no
打开**~/.bashrc** 文件,并添加3句命令到文件的末尾。
sudo vim ~/.bashrc #打开.bashrc文件
export CUDA_HOME=/usr/local/cuda-8.0 #将export这3句添加到文件的末尾。
export PATH=$PATH:${CUDA_HOME}/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CUDA_HOME}/lib64
source ~/.bashrc #执行命令使.bashrc文件配置生效
同样在/home根目录下执行下面的命令,测试是否成功安装CUDA,若执行完命令显示GPU的相关信息表示安装成功。
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery #由自己电脑目录决定
sudo make
sudo ./deviceQuery
cudnn的安装更加简单,其实就是复制文件和建立软连接。
cudnn的下载链接如下,需要注册,然后再登录进去,选择适合自己的版本下载
https://developer.nvidia.com/rdp/cudnn-download
我这里下载的是cudnn6.0版本的,登陆进去之后选择Archived cuDNN Releases 然后选择cudnn v6.0…for CUDA 8.0下载
下载完成之后解压到/home目录下,文件夹重命名为cudnn6,然后执行下面的命令进行安装
vim setupcudnn.sh #新建一个shell脚本文件,文件里面复制下面的内容进去
#!/bin/bash
echo "remove libcudnn* file of /usr/local/cuda/lib64"
sudo rm -rf /usr/local/cuda/lib64/libcudnn.s* #删除旧版本cudnn
echo "copy cudnn.h to usr/local/cuda/include"
sudo cp /home/user_name/cudnn6/include/cudnn.h /usr/local/cuda/include #复制cudnn.h文件到/usr/local/cuda/include目录下,这里的user_name改为自己的用户名
sudo chmod 777 -R /usr/local/cuda/include #对复制后的文件解除权限
echo "copy lib* to usr/local/cuda/lib64"
sudo cp /home/user_name/cudnn6/lib64/lib* /usr/local/cuda/lib64 #同上
sudo chmod 777 -R /usr/local/cuda/lib64 #同上
sudo ldconfig #对所有的复制和解除权限操作执行生效
然后保存setupcudnn.sh文件的内容,并执行下面的命令进行安装:
sudo bash setupcudnn.sh #执行setupcudnn.sh脚本中的命令,安装cudnn
**注意:**这里将安装命令写成脚本文件的好处是,后面如果要进行其他cudnn版本的安装,只要稍加修改这个脚本,然后运行就可以迅速完成安装。例如要安装cudnn7版本,下载cudnn7,解压文件重命名为cudnn7,把脚本文件里的cudnn6修改为cudnn7,然后执行sudo bash setupcudnn.sh 就完成了安装。
下载地址https://opencv.org/releases.html
选择3.1.0版本sources下载,解压到/home根目录下,文件夹重命名为opencv
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
opencv/cmake
目录下,找到OpenCVDetectCUDA.cmake
文件并打开,定位到21行,修改set(HAVE_CUDA 1)
为set(HAVE_CUDA 0)
。sudo make install
出现如下的错误信息。nvcc warning : The 'compute_20', 'compute_20','sm_21' architectures are deprecated
备注:出现上面的错误信息的原因是使用CUDA配置opencv引起的。将HAVE_CUDA 设为0之后,在后面的编译过程中就会关闭CUDA,解决这个问题。
进入到opencv
目录下,找到CMakeList.txt
文件并打开,定位到176,177行,将ON
改为OFF
。
opencv
目录下新建build
文件夹。cd build #进入到build文件夹
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. #开始编译
make -j8
sudo make install -j8
执行完上面的命令就完成了opencv的安装,执行下面的命令测试是否安装成功,如果不出现报错信息就说明安装成功。
python
import cv2
错误1: fata error: LAPACKE_H_PATH-NOTFOUND when building OpenCV 3.1
解决办法:sudo apt-get install liblapacke-dev checkinstall
在安装的过程中可能还会还会出现其他各种各样的错误信息,这就靠自己依靠网络资源寻找解决方案了。一般从报错的信息提示入手,不断的卸载,安装,不断的尝试不同的方法,问题都会解决的。
小技巧:
sudo find / -iname "*opencv*
查找opencv安装路径,把*opencv*
替换成*lib*
就可以查找缺失的某个库文件,从而为解决问题寻找思路。/usr/lib/,/usr/bin/,/usr/share/,/usr/include/,/usr/include
删除含有OpenCV的文件夹即可。yolov3是在darknet平台上实现的,darknet安装教程按照官网步骤就可以了,官网链接https://pjreddie.com/darknet/install/
git clone https://github.com/pjreddie/darknet.git #从github上下载darknet安装包
这里的ARCH= -gencode arch=compute_61,code=[sm_61,compute_61]
根据自己的GPU型号的计算能力进行设置,可以通过下面链接查找GPU的计算能力。GTX1080Ti的计算能力是6.1,所以设置为61,其他型号的对照修改吧。
https://developer.nvidia.com/cuda-gpus
darknet
目录下,执行make -j8
darknet
目录下,执行wget https://pjreddie.com/media/files/yolov3.weights #下载权重文件
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg #使用下载的权重文件进行图片检测
运行成功后会出现下面的图片,并在darknet
目录下生成predictions.png
文件
至此教程结束。