Ubuntu16.04下运行YOLO3及相关环境配置

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

Ubuntu16.04下运行YOLO3及相关环境配置_第1张图片

若没有任何反应,则禁用成功。

(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

Ubuntu16.04下运行YOLO3及相关环境配置_第2张图片

在下载的目录打开终端,输入如下指令:

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

 

Ubuntu16.04下运行YOLO3及相关环境配置_第3张图片

安装成功。

 

(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编译配置文件

进入到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
    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安装包

 

  • darknet的MakeFile配置

进入到下载下来的darknet文件夹下,打开Makefile,对如下几个地方进行修改

Ubuntu16.04下运行YOLO3及相关环境配置_第4张图片

 

备注:--------------------------------->

这里的ARCH= -gencode arch=compute_61,code=[sm_61,compute_61]根据自己的GPU型号的计算能力进行设置,可以通过下面链接查找GPU的计算能力。GTX1080Ti的计算能力是6.1,所以设置为61,其他型号的对照修改吧。
https://developer.nvidia.com/cuda-gpus

 

  • darknet的安装

darknet目录下,执行

make -j8

 

  • darknet的测试
    同样在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文件

Ubuntu16.04下运行YOLO3及相关环境配置_第5张图片

 

Ubuntu16.04下运行YOLO3及相关环境配置_第6张图片

 

你可能感兴趣的:(机器学习)