Ubuntu16.04配置caffe步骤
参考博客: @H_404_4@ http://www.jb51.cc/article/p-djckocmf-bqg.html @H_404_4@ http://www.jb51.cc/article/p-djckocmf-bqg.html @H_404_4@ http://www.cnblogs.com/dreamyphone/p/4508090.html @H_404_4@ 由于Ubuntu在UEFI下无法安装NVIDIA显卡驱动,所以在安装Ubuntu系统的时候,在Bios中的启动项中选择不带UEFI的选项作为启动盘安装系统。 @H_404_4@ 安装过程
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
2.安装英伟达显卡驱动
(1)下载驱动
首先去官网(http://www.nvidia.com/Download/index.aspx?lang=en-us)查看适合自己显卡的驱动:记下版本号码,目前更新到375 @H_404_4@ @H_404_4@
(2)安装显卡驱动
卸载已经存在的版本驱动: @H_404_4@ sudo apt-get remove –purge nvidia* @H_404_4@ 安装英伟达显卡驱动要关闭X-server: @H_404_4@ sudo service lightdm stop @H_404_4@ 显卡驱动下载到电脑上执行离线安装未成功,故执行指令在线安装: @H_404_4@ sudo add-apt-repository ppa:xorg-edgers/ppa @H_404_4@ sudo apt-get update @H_404_4@ sudo apt-get install nvidia-375 #注意在这里指定自己的驱动版本!本次安装的是375 @H_404_4@ 安装完成后,输入指令查看是否安装完成: @H_404_4@ sudo nvidia-smi @H_404_4@ 若显示GPU信息则显示安装完成 @H_404_4@
3.安装CUDA
(1)下载CUDA
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA: @H_404_4@ 选择好版本,点击下载,大概1.4GB @H_404_4@
(2)安装CUDA
sudo sh cuda_8.0.27_linux.run @H_404_4@ 注意:刚开始会有一个进度条来阅读相关条例,所以一定要从0%按回车到100%,光等着进度条是不会动的;还会有三选一的选项,选择accept即可。选择执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia361驱动时,一定要选择否: @H_404_4@ Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62? @H_404_4@ 因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。安装过程未遇到GCC版本过高问题,如若遇到请到原博客中查找。
(3)环境变量配置
打开~/.bashrc文件: @H_404_4@ sudo vim ~/.bashrc @H_404_4@ 将以下内容写入到~/.bashrc尾部: @H_404_4@ export PATH=/usr/local/cuda-8.0/bin
(4)测试CUDA的sammple
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery @H_404_4@ make @H_404_4@ sudo ./deviceQuery @H_404_4@ 若显示GPU相关信息,则安装成功: @H_404_4@
4.配置cuDNN
首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,可能需要注册一个账号才能下载,选择的是V5.1版本,和博客中的相同。
@H_404_4@ 下载cuDNN5.1之后进行解压,cd进入cuDNN5.1解压之后的include目录,在命令行进行如下操作: @H_404_4@ sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件 @H_404_4@ 再将cd进入lib64目录下的动态文件进行复制和链接: @H_404_4@ sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库 @H_404_4@ cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件 @H_404_4@ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接 @H_404_4@ sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
5.安装opencv3.1
从github(https://github.com/opencv/opencv/releases)下载OpenCV Source Code,并将其解压到你要安装的位置,本机解压到了/home/opencv-3.1.0。(opencv3.2装过,不能完成编译,就没有继续修改错误,换回opencv3.1继续安装) @H_404_4@ 安装前准备,创建编译文件夹: @H_404_4@ cd ~/opencv-3.1.0 @H_404_4@ mkdir build @H_404_4@ cd build @H_404_4@ 配置:(没有安装cmake只需按照提示安装即可) @H_404_4@ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. @H_404_4@ 编译: @H_404_4@ make -j8 @H_404_4@ -j8表示并行计算8个线程,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。(编译时间会很长) @H_404_4@ 以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装: @H_404_4@ sudo make install @H_404_4@ 安装时间很长,要耐心等待 @H_404_4@ 出现的问题:本机编译出现了问题2,按照原博客顺利解决,附上博客中的图片。 @H_404_4@
6.配置caffe
(1)将终端cd到要安装caffe的位置。本机是放在/home下 @H_404_4@ (2)从github上获取caffe: @H_404_4@ git clone https://github.com/BVLC/caffe.git @H_404_4@ 若没有安装git直接按照提示安装即可: @H_404_4@ sudo apt-get install git @H_404_4@ (3)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config: @H_404_4@ sudo cp Makefile.config.example Makefile.config @H_404_4@ (4)打开并修改配置文件: @H_404_4@ sudo gedit Makefile.config #打开Makefile.config文件 @H_404_4@ a.若使用cudnn,则 @H_404_4@ 将#USE_CUDNN := 1 @H_404_4@ 修改成:USE_CUDNN := 1 @H_404_4@ b.若使用的opencv版本是3的,则将#OPENCV_VERSION := 3 @H_404_4@ 修改为: OPENCV_VERSION := 3 @H_404_4@ c.若要使用Python来编写layer,则 @H_404_4@ 将
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
d. 重要的一项 : @H_404_4@ 将
# Whatever else you find you need goes here.
下面的
@H_322_403@INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
@H_322_403@LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
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 /usr/lib/x86_64-linux-gnu/hdf5/serial
这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径. @H_404_4@ (5)修改makefile文件 @H_404_4@ 打开makefile文件,做如下修改 @H_404_4@ 将:(大概在409行)
@H_322_403@NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(6)编辑/usr/local/cuda/include/host_config.h @H_404_4@ 将其中的第115行注释掉: @H_404_4@ 将
#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!
(7)编译 @H_404_4@ make all -j8 #-j根据自己电脑配置决定 @H_404_4@ 编译错误 @H_404_4@ 在编译过程中遇到”fatal error: hdf5.h: 没有那个文件或目录”,解决方法参照博客如下: @H_404_4@ step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。 @H_404_4@ 将:
@H_322_403@INCLUDE_DIRS := $(@H_322_403@PYTHON_INCLUDE) /usr/local/include
替换为:
@H_322_403@INCLUDE_DIRS := $(@H_322_403@PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
stept2:在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。 @H_404_4@ 将:
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
(8)测试
sudo make runtest
@H_404_4@ 若完成运行,则caffe完成配置。 @H_404_4@ 遇到的问题: @H_404_4@ 执行sudo make runtest可能会遇到libcudnn.so.5(因为安装的是v5.1版本,安装v6.0那就是libcudnn.so.6)无法打开或者是不存在,这种情况是因为没有将/usr/local/cuda/lib64放入LD_LIBRARY_PATH中,输入export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${ LD_LIBRARY_PATH}即可解决问题。 @H_404_4@ ~/.bashrc文件末尾如下: @H_404_4@
MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下: @H_404_4@ 1.将终端定位到Caffe根目录 @H_404_4@ cd ~/caffe
2.下载MNIST数据库并解压缩 @H_404_4@ ./data/mnist/get_mnist.sh @H_404_4@ 3.将其转换成Lmdb数据库格式 @H_404_4@ ./examples/mnist/train_lenet.sh @H_404_4@ 训练的时候可以看到损失与精度数值,如下图: @H_404_4@ 从图中可以看出,训练精度为0.991.