双系统Win10+Ubuntu16.04安装以及在Ubuntu上安装caffe的相关步骤
×××××××××××××××××××××××××××××××××××××××××××××××××××第一部分×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××88
安装环境:Win10 给Ubuntu安装空间:170G,此过程为在已有Win10的情况下安装Ubuntu16.04
一:制作启动项
1)下载rufus工具
2)下载Ubuntu镜像,我下载的是ubuntu16.04-destop-amd64.ios
3)在电脑插入要用于制作启动项的优盘(注意1:U盘不要小于8G;2:优盘若有重要文件,请提前备份因该过程会先格式化再安装),打开rufus工具,在设备选项选择自己刚插入的优盘,引导类型选择选项下面点击右边选择选择刚下载的镜像
4)保持电脑联网(因此过程需联网下载相关包),点击开始,过程中会提示,“这个镜像使用Syslinux***的安装文件”直接点“是”
5)完成后直接关闭
二:给Ubuntu划分空间
1)电脑左下角菜单右键磁盘管理
2)我是安装在机械盘,D盘右键压缩卷,在输入压缩空间量选项输入170000(其他选项系统会自动分配),170000差不多为170G,这个划分空间的大小可以按照自己机械硬盘大小和自己实际需要分配,个人建议不要低于100G
3)点击压缩
三:到这一步要安装的Ubuntu的系统空间已划分好了,以及优盘启动项也制作好了,下面开始进入安装
1)插入制作好的U盘,开机重启按esc+F9进入启动项菜单(不同品牌电脑进入的快捷键不一样,可百度查询),找到自己的优盘回车
2)一直回车会进入Ubuntu的安装桌面,点击install图标安装
3)
3.1出现语言选择界面直接选择英语(为避免以后安装软件出错做好选择Einglish(US));出现选择联网界面,不用管直接点击继续;
3.2出现Updates and other software界面选择正常安装,出现Install type选择第一项install ubuntu alongside boot manager然后继续;
3.3出现write the change to disks界面,点击继续;
4)至此等大概半小时,会提示安装完成,然后安装重启进入Bios,从Bios往右系统设置菜单,下到安全启动模式,回车选择禁用,然后按F10保存,然后按esc重启,选择Ubuntu启动
5)至此双系统才算完成,
注意:Ubuntu16.04系统有点怪,在第一次进入Ubuntu时,进入系统界面发现输入密码不显示,这个问题以下步骤解决:
1:重启电脑(不能重启就强制开关机),按快捷键进入启动菜单,选择Ubuntu启动,中间会出现一个见面,选第二个选项advanced**的高级模式,进入选择recovery model,过一会会出现一个菜单选择resume回车OK回车,这样就能进入系统;进入系统后你再试一下重启,然后不进入高级模式一直默认回车看一下能不能正常进入系统,要是还不行可以再按照刚才步骤resume一次,然后再看看要是还不行就重装一次,一般resume一次就好了
四:到这一步双系统才算真正的安装成功,以后要进入Ubuntu的时候直接重启进入启动菜单就可以进入了
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××第二部分×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××8
本部分大部分类容都是复制的这两篇链接的类容,以及一些自己的一些细微改动,建议大家第二个链接这个更为详细一点,参考链接:https://blog.csdn.net/yhaolpz/article/details/71375762 https://www.cnblogs.com/xuanxufeng/p/6150593.html
再进入此步骤前要提前下载好以下几个文件1:NVIDIA显卡驱动,根据自己显卡型号在官网下载 2根据自己实际需求下载cudn,我下载的文件为:cuda_10.0.130_410.48_linux.run cudnn-10.0-linux-x64-v7.5.0.56.tgz 3:根据自己需要下载opencv对应版本
本部分大概安装步骤,本部分参考链接:https://blog.csdn.net/yhaolpz/article/details/71375762 https://www.cnblogs.com/xuanxufeng/p/6150593.html
安装流程细分为如下10个步骤,细化步骤粒度更易避免出错:
1、安装依赖包
2、禁用 nouveau
4、下载 CUDA 8.0
5、安装 CUDA 8.0
6、验证 CUDA 8.0 是否安装成功
7、安装 cudnn
8、安装 opencv3.1
9、安装 caffe
一:在Ubuntu上安装显卡驱动
第一步:安装依赖包
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
一定要保证都安装完成,安装完后每行安装指令可再试一遍
有一定几率安装失败而导致后续步骤出现问题,所以要确保以上依赖包都已安装成功,验证方法就是重新运行安装命令,如验证 git cmake build-essential是否安装成功共则再次运行以下命令:
sudo apt-get install git cmake build-essential
出现下面信息即表示安装完成:
yhao@yhao-X550VB:~$ sudo apt-get install git cmake build-essential
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
build-essential 已经是最新版 (12.1ubuntu2)。
cmake 已经是最新版 (3.5.1-1ubuntu3)。
git 已经是最新版 (1:2.7.4-0ubuntu1.1)。
下列软件包是自动安装的并且现在不需要了:
lib32gcc1 libc6-i386
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 94 个软件包未被升级。
第二步:禁用 nouveau,并安装显卡驱动,同时将自己下载的那几个文件转移到 /home/用户名/ 文件夹下
1:安装好依赖包后需要禁用 nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
打开后发现该文件中没有任何内容,写入:
blacklist nouveau option nouveau modeset=0
保存时命令窗口可能会出现以下提示:
** (gedit:4243): WARNING **: Set document metadata failed: 不支持设置属性 metadata::gedit-position
无视此提示~,保存后关闭文件,注意此时还需执行以下命令使禁用 nouveau 真正生效:
sudo update-initramfs -u
然后好了以后重启电脑
百度nvidia 官网去下对应显卡版本的驱动举例(下面XXX是版本的意思) NVIDIA-Linux-x86_64-384.run (384或者390都可以版本里面的)下好的文件放在 主文件夹 或者说叫home 目录下
先按Ctrl + Alt + F1到控制台,关闭当前图形环境
sudo service lightdm stop
再安装驱动程序
cd /home/用户名
进入到驱动所在文件夹 (下好的驱动文件放在home 或者叫主文件夹下)
sudo chmod a+x NVIDIA-Linux-x86_64-xxx.run
sudo sh NVIDIA-Linux-x86_64-xxx.run -no-opengl-files
最后重新启动图形环境
sudo service lightdm start
然后进入终端输入:sudo nvidia-smi 出现下图就是安装成功了
3.安装CUDA,你要是下好了就忽略此步骤
![](https://img2020.cnblogs.com/blog/1988296/202102/1988296-20210205100751894-166347632.png)
(2) 下载完成后执行以下命令:
1 sudo chmod 777 cuda_8.0.44_linux.run 2 sudo ./cuda_8.0.44_linux.run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。
(3)环境变量配置
打开~/.bashrc文件: sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部
1 export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} 2 export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(4)测试CUDA的samples
1 cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery 2 make 3 sudo ./deviceQuery
如果显示一些关于GPU的信息,则说明安装成功。
![](https://img2020.cnblogs.com/blog/1988296/202102/1988296-20210205101423530-1990082921.png)
4.配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。
下载cuDNN5.1之后进行解压:
sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
cd cuda/include sudo cp cudnn.h /usr/local/cuda/include #复制头文件
再将进入lib64目录下的动态文件进行复制和链接:
cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
5.安装opencv3.1
从官网(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置,假设解压到了/home/opencv。
1 unzip opencv-3.1.0.zip 2 sudo cp ./opencv-3.1.0 /home 3 sudo mv opencv-3.1.0 opencv
安装前准备,创建编译文件夹:
cd ~/opencv mkdir build cd build
配置:
1 sudo apt install cmake 2 sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译:
sudo make -j8
-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。
可能出现问题:
这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:
其中, #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。
以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:
sudo make install
6.配置caffe
(1)使用Git直接下载Caffe非常简单,或者去https://github.com/BVLC/caffe下载。由于我习惯去github上找代码,所以就直接去下载的源码。
下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe.
(2)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config: sudo cp Makefile.config.example Makefile.config
(3) 打开并修改配置文件:
sudo gedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件:
a.若使用cudnn,则
将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.若使用的opencv版本是3的,则
将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
c.若要使用python来编写layer,则
将 #WITH_PYTHON_LAYER := 1
修改为 WITH_PYTHON_LAYER := 1
d.重要的一项 :
将 # Whatever else you find you need goes here. 下面的
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial 2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
(4)修改makefile文件
打开makefile文件,做如下修改:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(5)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉:
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported! 改为 //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
(6)编译
make all -j8 #-j根据自己电脑配置决定
编译过程中可能会出现如下错误:
错误内容1:
"fatal error: hdf5.h: 没有那个文件或目录"
解决办法:
step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
将:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替换为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
stept2:在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
错误内容2:
"libcudnn.so.5 cannot open shared object file: No such file or directory"
解决办法是将一些文件复制到/usr/local/lib文件夹下:
#注意自己CUDA的版本号!
1 sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig 2 sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig 3 sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig 4 sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
(8)测试
sudo make runtest
如果运行之后出现下图,说明caffe配置成功。
到此caffe配置完毕!
MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
1.将终端定位到Caffe根目录
cd ~/caffe
2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
4.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图:
可以看到最终训练精度是0.9914。