[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn

零、前言

首先感谢您来阅读这个教程

我一开始就是装双系统的,后来真是重装系统到怕了,每次删分区都怕手抖不小心把我windows给格了,所以才决定先做虚拟机的,也建议来看这个的先看我虚拟机装CPU版的那篇文章,熟悉了再来研究双系统的。

GPU版的区别在于需要跨过显卡驱动,cuda,cudnn三座大山,我自己踩了很多雷,网上关于这个的教程太多了,但是都不太系统,每个人的做法都不太一样,目前我所知道显卡驱动就有(老黄官网下载法,PPA安装法,系统驱动安装法,装cuda顺便安装法),cuda貌似只有一种,cudnn有(直接dpkg法,有下载三个deb法),这几种方法的排列组合我都试过,而且还有各种各样奇奇怪怪的版本对应问题,经典的教程版本太老,新的教程又不够详细。

不过谢天谢地,我终于搞定了。

本人用笔记本,配置是i5-7300hq,16G内存,1050m。

另外这篇教程有点长,csdn的自动折叠有点烦,这里有一个自动展开的脚本,建议使用Tempermonkey暴力猴安装

一、安装双系统

图片比较多,我单独出来为另一篇文章

二、安装双系统后

第一次直接进ubuntu发现会卡死在登录界面,主要是因为坑爹的默认nouveau驱动,我们等下就会把它干掉
现在只能长按关机键重启

  • 这次就要精明一点了,不要直接进ubuntu,而是选择高级模式
  • 因为我们刚才装机时连接了wifi,他自动更新了一下我们系统,所以有两个版本,我们选最新版本的recovery模式进入
    [新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第1张图片
  • 之后选择resume进入即可[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第2张图片

1. 获取root权限

创建一个root账户,因为在普通用户权限下执行命令通常都要加sudo,而在root账户下输入命令前面不用再加sudo,而且有些指令必须要root账户才能用

打开终端,输入下面指令,注意一下在ubuntu的终端里面粘贴是使用ctrl+shift+v

sudo passwd root

输入想要设置的密码两次,就成功创建了root账户,
另外注意一下linux里面输入密码是不会显示的,但确实是有输入
想要提权为root用户的时候输入

su root

再输入密码,前面的用户名就会变成 root
注意一下root 用户的根目录就是在“计算机”看到的目录
普通用户的默认根目录是/home/用户名(也称家目录)
在cd的时候就会知道区别

2. 换源

刚安时候可能是全英的,需要下载中文语言包,不过我们先换源,下载就会更快一点

sudo gedit /etc/apt/sources.list

删除里面所有内容,然后添加

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

更改完成后输入更新源,以后用apt装什么东西之前都要先运行这个更新一下列表

sudo apt update

刚装好建议也更新一下系统

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y

三、卸载旧显卡驱动

1. 先清除可能存在的NVIDIA残余势力

sudo apt-get remove nvidia*
sudo apt-get autoremove

2. 禁用nouveau显卡驱动

打开黑名单

sudo gedit /etc/modprobe.d/blacklist.conf 

在最后加入这些指令

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
options nouveau modeset=0

完成更改

sudo update-initramfs -u

重启

sudo reboot

重启后就完成更改了,使用如下命令,如果没有输出就代表禁用成功

lsmod | grep nouveau

另外由于显卡驱动的问题解决了,打开ubuntu时也可以正常打开不用进入recovery模式了

四、依赖包安装(和cpu的一样)

1. 安装依赖包

 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
 sudo apt-get install --no-install-recommends libboost-all-dev
 sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
 sudo apt-get install git cmake build-essential

认真仔细逐条复制,这些库没有后面会爆各种奇怪错误

2. 配置环境变量

sudo gedit ~/.bashrc

在文件最后加入这两行内容

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 

重启或输入下面使之生效

source ~/.bashrc

3. 安装pip3

既然是python3,pip是肯定要装的,Ubuntu18自带python27和36两个版本,平时在命令行里面输入python和python2都是打开27,只有输入python3才是打开36
另外想给36来pip安装东西,使用的也是pip3 install xxx,否则只是pip install的话就装给27了

sudo apt install python3-pip

换不换源随意,我不换源速度也挺快的

4. 安装opencv_python

pip3 install opencv-python

5. 安装numpy1.15.0

首先卸载numpy,有人会问你,你不是安装嘛,咋卸载呢,你回头一看,发现opencv给拖家带口了一个numpy,但他会给你安一个1.17+的,然而这个1.17+好死不死,很多重要的函数修改了定义,导致很多人工智能相关库都出错,不信你试试导入opencv,保准报错

python3
>>> import cv2

相当愚蠢的设定,如果之后安装什么库把numpy给升级成1.17+,我们就用下面这条命令卸载

pip3 uninstall numpy

再重新指定版本安装,我们就要1.15的

pip3 install numpy==1.15.0

之后再import cv2就不会出错了
这里提一下cv2就是你装的python-opencv,我当时下载到版本是4.1.2
再提一嘴pkg-config opencv --modversion通过这个可以查到opencv版本,结果是3.2.0,我当时也纳闷,后来发现是在装依赖包第一条的时候装上的,这个opencv和py-cv没啥关系。

五、PPA法安装NVIDIA显卡驱动

有很多种方法可以装NV驱动,比如说系统驱动设置法,老黄官网下载法,装cuda时顺路安装法,我这里选择比较保险的PPA法。

sudo add-apt-repository ppa:graphics-drivers/ppa  #加入图形驱动的PPA源
sudo apt-get update                               #使源生效
ubuntu-drivers devices                            #显示驱动列表

[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第3张图片
这里可以看到我们当前最新的是440版本的驱动,
使用下面命令安装440驱动

sudo apt-get install nvidia-driver-440

装完显卡驱动也是需要重启的
重启完之后可以输入nvidia-smi,会弹出一个黑窗口,显示当前显卡占用
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第4张图片还有一个nvidia-settings,显示其他一些更复杂的设置
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第5张图片

六、安装cuda10.1

1. 下载cuda10.1

下载地址:
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocal

界面如下,选择选择.run版本
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第6张图片
老黄直接给出了安装的指令,不过我建议不要用wget下载,直接复制wget后面的下载地址用浏览器下载都比他快到不知道哪去了

2. 安装依赖库

安装前先安装依赖库(否则之后编译时会提示没有libGL.so,libGLU.so,gl.h,glu.h等OpenGL相关的库)

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

3. 安装

cd 下载
sudo ./cuda_10.1.243_418.87.00_linux.run 
  • 弹出已存在相关驱动的提示,不用管,continue继续
  • 弹出用户协议,只能accept
  • 弹出选择安装内容的窗口,第一项Driver是显卡驱动,还是旧版418的,当然不装,按回车取消前面的X就代表不安装
    [新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第7张图片
  • 然后Install,等待过程中可以上这里看看各种显卡的算力

安装完会有如下提示
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第8张图片
提示各种库的路径,在/usr/local/下可以看到创建了cuda10.1的文件夹和cuda的快捷方式
并警告没有设置path和没有安装418版本的驱动。
驱动问题可以无视,现在来设置path

sudo gedit ~/.bashrc

在最后加入下面三行(注意CUDA_HOME版本号的修改)

export CUDA_HOME=/usr/local/cuda-10.1/
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}

使生效

source ~/.bashrc

4. 测试是否成功

在家目录下自动出现了一个cuda的samples目录,里面是各种各样的样例程序

cd NVIDIA_CUDA-10.1_Samples/5_Simulations/particles/
sudo make
./particles

[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第9张图片
会出现好鬼酷的东西,就代表安装成功了,样例程序里面的程序都很好玩,大家不妨试一试
装完cuda应该会出现这几样东西
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第10张图片
打开第二个或者在终端输入nvvp,会报如下错误
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第11张图片
原因是甲骨文修改了条例,只允许个人用户免费用java,所以现在英伟达的cuda不能自带Java。很好,现在又要我们自己另外安装java了

5. 安装java

(1)下载jdk8

jdk是给程序员开发java程序用的,jre是给普通用户使用java程序用的,安装jdk就自带jre了
我们装java8,比较经典

下载地址
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

选择linux x64的tar.gz版本下载
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第12张图片

(2)创建文件夹

我们将要把jdk放置到/usr/lib/jvm下,首先需要创建这个文件夹

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件

(3) 安装

cd 下载
sudo tar -zxvf jdk-8u231-linux-x64.tar.gz  -C /usr/lib/jvm/

(4)改path

sudo gedit /etc/profile

最后加入

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_231
export PATH=${JAVA_HOME}/bin:${PATH}

使生效

source /etc/profile

(5)验证

java-version和echo $JAVA_HOME看看是否有如下输出[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第13张图片

6. 为cuda配置jre

根据刚才报错,我们把java的jre软连接到nvvp里(可以理解为是快捷方式)

sudo ln -s /usr/lib/jvm/jdk1.8.0_231/jre/ /usr/local/cuda-10.1/libnvvp/

这时候再nvvp就可以正常打开了
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第14张图片

七、安装cudnn7.6.5

1. 下载cudnn7.6.5

下载地址:https://developer.nvidia.com/rdp/cudnn-download

会叫你注册一个什么账号才能下载,乖乖注册
之后根据自己的cuda版本选择(刚好我着手写这篇博客的时候发现cuda10.2已经出了,不过问题不大,操作都是类似)
下载我标记的这三个文件,这种安装最方便,不用设置什么软连接之类的烦人东西
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第15张图片

2. 安装

虽然文件名很像,但是安装顺序一定一定不能弄错,弄错很麻烦!!!!

sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb 
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb 
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.1_amd64.deb 

3. 验证

cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN

出现test passed!说明安装成功,这里的样例程序就远没有cuda里面的好玩了
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第16张图片

八、安装caffe

重头戏来了,你是否还记得被Makefile.config统治的恐惧,前面三步和cpu版都是一样的,我直接复制过来了,后面Makefile和CPU就有很大不同

1. 下载caffe源码

git clone https://github.com/BVLC/caffe.git

这条代码会把caffe文件夹下载到你当前cd的目录,建议自己复制一份到其他地方,然后就可以瞎搞了

2. 咋又要我装库

下面我就用caffe来表示caffe的主目录了,注意你先复制到一个自己喜欢的专门放库的文件夹(方便起见我是直接用家目录的),因为并不是像windows安装好就万事大吉的可以把安装包删掉的,这个是更类似“绿色安装”的存在,如果你之后为了省空间等把这个文件给删了,你会发现你用不了caffe了

下面先安装库,全给装上准没错,比之后编译时这里没库那里没库到处出错到处要救火好

cd caffe/python
#安装该目录下requirements.txt所需的包
for req in $(cat requirements.txt); do sudo pip3 install $req; done

3. 创建py36的连接库

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python3-py36.so.1.65.1 /usr/local/lib/libboost_python3.so

这句命令,前面的文件是源文件,后面的文件是快捷方式
需要自己看看自己源文件的版本然后修改

cd /usr/lib/x86_64-linux-gnu/
ls libboost_python*

在这里插入图片描述
然后看到蓝白色的是快捷方式,白色的是源文件
比如libboost_python3-py36.so
就是libboost_python3-py36.so.1.65.1的一个快捷方式

之后就修改,比如说原主的是libboost_python-py35.so.1.5x.x ,
要改为libboost_python3-py36.so.1.65.1
改的时候一定要注意有空格断开前后两个文件

4. 最恐怖的修改Makefile.config

cd回去caffe的主目录
目录下的example只是caffe给的样例文件,不能拿来编译,只有Makefile.config才能编译

cd caffe/
cp Makefile.config.example Makefile.config
sudo gedit Makefile.config

请按照以下步骤仔细修改Makefile.config,活用ctrl+F搜索

第一步

我们用的是GPU,所以要把CUDNN的注释去掉

将# USE_CUDNN := 1
改为USE_CUDNN := 1

第二步

caffe通常都是要用opencv的,不知道官方在想什么把这里默认注释上了,去掉

将# OPENCV_VERSION := 3
改为OPENCV_VERSION := 3

第三步

对于>9.0的cuda而言,算力20和21已经落后于时代,需要删掉这两行

-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \

结果如下

CUDA_ARCH := 	-gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
		-gencode arch=compute_50,code=sm_50 \
		-gencode arch=compute_52,code=sm_52 \
		-gencode arch=compute_60,code=sm_60 \
		-gencode arch=compute_61,code=sm_61 \
		-gencode arch=compute_61,code=compute_61

第四步

把py2.7的两行注释掉,caffe默认是27,但我们的是36

# PYTHON_INCLUDE :=  /usr/include/python2.7 \
#               /usr/lib/python2.7/dist-packages/numpy/core/include

第五步

去掉py3.5的注释:

PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
                 /usr/local/lib/python3.5/dist-packages/numpy/core/include

然鹅我们的python版本是36,需要把上面三个3.5的地方改成3.6
这恰恰展现了caffe的更新迟缓 对旧版本的优良兼容性

第六步

我们用的是python运行caffe,当然要去掉# WITH_PYTHON_LAYER := 1的注释

将# WITH_PYTHON_LAYER := 1
改为WITH_PYTHON_LAYER := 1

第七步

在INCLUDE_DIRS和LIBRARY_DIRS后面分别加上/usr/include/hdf5/serial和/usr/lib/x86_64-linux-gnu/hdf5/serial,效果如下

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

这里也给出我改好的Makefile.config,如果上面有什么不明白还是可以下载看一看,不过也要根据自己电脑实际版本做做修改

5. 激动人心的编译

下面是激动人心的编译环节

sudo make all -j4
sudo make test -j4
sudo make runtest -j4

中途我爆了点小warn,问题不大
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第17张图片
这次是2207难,全部通过,做过cpu版的应该对这些OK比较麻木了,失去了当年的感动
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第18张图片

6. 跑跑样例

这一篇文章对caffe的示例程序,解释了里面的语句,讲得很仔细,推荐去看看
注意的是下面的这些指令都是要在caffe主目录下运行,不能cd进去详细目录再运行

(1)获取数据集

cd caffe
sudo sh data/mnist/get_mnist.sh   #由于省空间,数据集是要自己另外下载的
sudo time sh examples/mnist/train_lenet.sh   #将数据集转换成LMDB数据才可以被caffe识别

(2)修改配置文件

sudo gedit examples/mnist/lenet_solver.prototxt

这个是运行的配置文件
有两个地方值得注意

这里是最大迭代层数,按需要改,默认是10000
max_iter: 10000
这里是修改用cpu还是gpu运行,默认是gpu,我们不用改
将solver_mode: GPU
改为solver_mode: CPU

(3)开跑

sudo time sh examples/mnist/train_lenet.sh

加入time参数可以查看运行的时间,我迭代10000层用1050跑大概需要45秒,神速
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第19张图片
训练后,会在examples/mnist下生成四个文件,分别是迭代5000次和10000次的模型,如果要重跑,就把这四个删掉

lenet_iter_10000.caffemodel
lenet_iter_10000.solverstate
lenet_iter_5000.caffemodel
lenet_iter_5000.solverstate

(4)测试准确率

cd caffe/examples/mnist
touch test_lenet.sh         #生成空白文件
sudo gedit test_lenet.sh    #编辑

加入如下内容

#!/usr/bin/env sh
./build/tools/caffe test  -model examples/mnist/lenet_train_test.prototxt  -weights examples/mnist/lenet_iter_10000.caffemodel  -iterations 100

运行测试

cd ~/caffe
sudo sh ./examples/mnist/test_lenet.sh 

即可看到结果
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第20张图片

九、安装py-faster-rcnn

GPU版本的FRCN主要参考该文
这个和cpu的还是有好些不同,请仔细看

1. 下载py-faster-rcnn源码

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

下载后也是备一下份,下面就用py-faster-rcnn代表FRCN的安装主目录

2. 将python2的语法转成python3

有一个很有用的工具叫做2to3,我当时不知道有这个工具,手动修改print语法感觉要疯掉了,这个一键就可以搞定

sudo apt install 2to3
2to3 -f all -f idioms ~/py-faster-rcnn/ -w

3. 编译lib文件夹

cd py-faster-rcnn/lib/

打开Makefile修改

gedit Makefile 

把python改成python3,代表用36来make,如果不改,就是用27来make,会报错的

all:
	python3 setup.py build_ext --inplace
	rm -rf build

编译

make

报点小warn,无伤大雅,看到最后他成功执行rm -rf build就成了
在这里插入图片描述

4. 编译FRCN里面的caffe

路径是:py-faster-rcnn/caffe-fast-rcnn/

尤其注意此caffe非上面的caffe,FRCN用的应该是旧版的caffe,当时我误以为FRCN自带caffe了那上面的caffe就可以偷懒不用装了吧,结果发现import caffe之后是没有东西的

第一步 似曾相识Makefile.config

把刚才我们在caffe修改的Makefile.config复制到py-faster-rcnn/caffe-fast-rcnn/这个目录下面,所以说如果你刚才直接用一条命令装caffe,那你就少了一次锻炼的机会,现在要还回来了

第二步 更新FRCN里面的cudnn相关库

第一处

(1)替换 py-faster-rcnn/caffe-fast-rcnn/include/caffe/util 里的 cudnn.hpp
为刚安装 caffe 对应位置caffe/include/caffe/util 的 cudnn.hpp

就一个文件,手工完成就可以

第二处

(2)替换 py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers 里以 cudnn 开头的文件
为刚安装 caffe 对应位置caffe/include/caffe/layers 里以 cudnn 开头的文件

FRCN的文件里面有8个cudnn开头的
在这里插入图片描述
而caffe的文件里面有9个cudnn开头的,复制完之后ls看到8个变成9个就代表成功了
在这里插入图片描述

# 删掉旧的
cd ~/py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers
ls cudnn*
rm -r cudnn*
#迁移新的
cd ~/caffe/include/caffe/layers
ls cudnn*
cp cudnn* ~/py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers/

第三处

(3)替换 py-faster-rcnn/caffe-fast-rcnn/src/caffe/layers 里以 cudnn 开头的文件
为刚安装 caffe 对应位置caffe/src/caffe/layers 里以 cudnn 开头的文件

FRCN的文件里面有16个cudnn开头的
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第21张图片
而caffe的文件里面有18个cudnn开头的,复制完之后ls看到16个变成18个就代表成功了
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第22张图片

# 删掉旧的
~/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layers
ls cudnn*
rm -r cudnn*
#迁移新的
cd ~/caffe/src/caffe/layers
ls cudnn*
cp cudnn* ~/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layers

第三步 又是激动人心的编译环节

cd py-faster-rcnn/caffe-fast-rcnn
make -j2 && make pycaffe

其实j2, j4, j8都可以,看心情,不过性能跟不上的话有时候编译太快虚拟机会卡死,小心驶得万年船
编译的时候出了点小warn,依然不影响大局

可能会出现的错误

(1)numpy/arrayobject.h: 没有那个文件或目录

在这里插入图片描述
解决方法

sudo apt-get install python-numpy

5. 跑一下例程

(1)下载官方demo训练模型

cd py-faster-rcnn/data/scripts/
./fetch_faster_rcnn_models.sh

然后肯定会报错,因为这个要文明上网才能下得了
可以在这个百度云里面下载
下载tgz后解压,放到 py-faster-rcnn/data/目录下
复制和解压要看是否复制好了,ubuntu坑爹的地方是有时候会没有复制完全
里面是两个训练好的model文件,解压后大小应该是785.5MB

文件比较大,在等待下载的时候不妨先做下面的步骤

(2)装一装必要的库

easydict和Matplotlib两个库不在requirement里面,我们还要自己装

pip3 install easydict
pip3 install Matplotlib

又要重装numpy,卸载时可以看到numpy又双叒叕被升级到了1.17+

pip3 uninstall numpy
pip3 install numpy==1.15.0

(3)终于到最后一步了

三二一,发射

cd py-faster-rcnn/tools
python3 demo.py

6. 可能出现的错误

(1)显存不足卡死

在这里插入图片描述
我自己就报这个错,我的1050m只有2G显存,但这个默认样例要求3G起步
那我这种穷人要怎么跑呢?感谢这篇文章给出详细解答
https://blog.csdn.net/hongbin_xu/article/details/76100132
他提到,我们下载下来的有两个模型
VGG16是大型模型,而ZF模型则是较小的模型。
所以我们换成使用ZF模型进行测试

因此可以输入下面指令,指定用zf网络模型来跑,
几乎是秒出结果,这就是GPU的力量啊

python3 demo.py --net zf    

输入下面指令,指定用CPU来跑zf网络模型,就要差不多一分钟才能出结果了

python3 demo.py --cpu --net zf

之前是小猫,这次就用小狗吧哈哈哈哈哈哈
[新手友好]双系统Ubuntu18.04+python3+cuda10.1+cudnn7.6.5装GPU版caffe和pyfasterrcnn_第23张图片

十、感谢

感谢所有写教程的前辈们,他们的文章我大多都看完了,我就列举一部分出来

PPA法装显驱参考:
https://blog.csdn.net/qq_40196164/article/details/84586273
安装cuda参考:
https://blog.csdn.net/qq_40196164/article/details/84586273
https://blog.csdn.net/qq_33200967/article/details/80689543#CUDA_71
安装cudnn参考:
https://blog.csdn.net/qq_40196164/article/details/84586273
装pyfasterrcnn参考:
https://blog.csdn.net/u011021773/article/details/81298666
跑caffe样例mnist参考:
https://blog.csdn.net/yuanliang861/article/details/80190054

你可能感兴趣的:(深度学习,深度学习,caffe,双系统,环境配置,GPU)