1. 硬件说明:
电脑型号:OMEN-by-HP-Laptop-17-an0xx(惠普幽灵17)
显卡:Nvidia GeForce GTX1070 (8G显存)
内存:16G
系统:预装Win10
2. Ubuntu16.04+win10双系统安装
UEFI引导的系统参考博文:https://blog.csdn.net/baobei0112/article/details/77996570
老电脑传统系统引导参考博文:https://www.cnblogs.com/liyiran/p/6611325.html
主分区 / / home 一定要多分
3. 搭建深度学习框架:
(1)更换下载源通过国内镜像网站快速下载Ubuntu的各种包,(中科大源)
cd /etc/apt/
sudo cp sources.list sources.list.bak
sudo gedit sources.list
将下面的源添加到文件头部
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
换源后更新源和已经安装的包:
sudo apt-get update
sudo apt-get upgrade
(2)gcc/g++降级
cuda8.0对gcc5不支持,在编译时会出问题,所以此处将Ubuntu16.04自带的gcc和g++降级到4.9版本。
sudo apt-get install -y gcc-4.9
sudo apt-get install -y g++-4.9
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.9 gcc
sudo rm g++
sudo ln -s g++-4.9 g++
(3)对nouveau禁用
nouveau是ubuntu自带的显卡驱动,在禁用后才能使用NVIDIA驱动。 建立一个黑名单文件,将nouveau加入。
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
新建的文件中输入:
blacklist nouveau
options nouveau modeset=0
保存文件并退出,然后在终端执行如下命令:
sudo update-initramfs -u
检查禁用是否成功:
lspci | grep nouveau
若没有任何反应,则禁用成功。
(4)NVIDIA驱动安装
打开系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改
(博主是384的驱动)
Ps:或者按照教程https://blog.csdn.net/u014568993/article/details/84308287下载驱动后安装
(5)CUDA8.0安装
官网下载CUDA安装包,选择.run格式的文件下载。
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
在下载的目录打开终端,输入如下指令:
sudo sh cuda_8.0.61_375.26_linux.run
按照终端的提示一步步操作即可:
按q退出条款浏览或者按空格直到条款末尾,输入 accept 接受条款。
输入n不安装nvidia图像驱动,因为前面已经安装好驱动。如果这里按照默认选择yes,则前面安装的高版本nvidia驱动将被替换成为cuda里带的低版本nvidia驱动。
输入y安装cuda 8.0 toolkit。
回车确认cuda默认安装路径(/usr/local/cuda-8.0)。
输入y安装CUDA 8.0 Samples。
输入CUDA 8.0 Samples安装路径:/home/用户名/CUDA/samples。
至此CUDA安装完成,下面需要配置CUDA的环境变量,保证其正常工作。
打开新终端,设置CUDA环境变量:
sudo gedit /etc/profile
如果在刚才的安装过程中均默认安装路径,则把下面内容复制到打开的文件中:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
使环境变量生效:
sudo ldconfig
验证CUDA安装是否成功,可以通过编译示例程序检测。首先安装相应的库和依赖:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx
然后进入默认安装示例库的文件夹对所有示例进行编译:
cd /usr/local/cuda/samples
sudo make all
待编译完成后,测试:
cd ./bin/x86_64/linux/release
./deviceQuery
安装成功。
(7)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 就完成了安装。
(8)安装Opencv2.4.11
opencv的下载
下载地址https://opencv.org/releases.html
选择2.4.11版本sources下载,解压到/home根目录下,文件夹重命名为opencv
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
(9)安装yolov3
darknet的安装
yolov3是在darknet平台上实现的,darknet安装教程按照官网步骤就可以了,官网链接https://pjreddie.com/darknet/install/
git clone https://github.com/pjreddie/darknet.git #从github上下载darknet安装包
MakeFile
配置进入到下载下来的darknet文件夹下,打开Makefile,对如下几个地方进行修改
备注:--------------------------------->
这里的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: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
处理方法:
在darknet目录下先meak clean清除掉原有编译文件,然后sudo ldconfig然后make一下后重新输入:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
便可成功运行。
运行成功后会出现下面的图片,并在darknet
目录下生成predictions.png
文件