网络上有很多的caffe相关教程,不过博客的质量大小不一,也导致博主走了很多的弯路,不过总算是配置出来,接下来我就将自己的详细配置过程总结如下:
首先,必须强调一下,在安装caffe之前一定要明确自己的电脑配置,明确自己caffe代码所对应的各文件相关版本,这里最常用的就是**【ubuntu16.04+caffe+GPU+cuda8.0+cudnn5】**。
接下来,列举一下我的电脑配置:
- 系统:Ubuntu16.04
- 显卡:GTX 1080 8G
- 内存:16G
- 环境:NVIDIA390.48驱动,CUDA8.0,cudnn5.1,opencv3.1.0
** 文件打包下载链接:链接:https://pan.baidu.com/s/1ByKYP3-CaC1BJWM8z2gu6w 提取码:spmt
【如果配置和我的一样可直接,百度云下载所有文件包】** ,百度链接如果无效,可以查看github网址:。如果还不行可以直接留言给我,我会及时回复。
# 删除原有的NVIDIA驱动程序,如果没有安装过,可以忽略
sudo apt-get remove –purge nvidia*
sudo gedit /etc/modprobe.d/blacklist.conf
在最下方按下回车,另起一行加入两行代码:
blacklist nouveau
options nouveau modeset=0
保存save,在Terminal终端更新内核命令
sudo update-initramfs -u
好了以后,重启电脑。重启之后,可以查看nouveau有没有运行。没输出则代表禁用生效
lsmod | grep nouveau
因为需要使用GPU,所以要先查看自己的显卡驱动,NIVIDIA官网:http://www.nvidia.com/Download/index.aspx?lang=en-us ,选择电脑匹配的显卡驱动,然后下载,附上下载教程【注意是对应linux版本】:https://jingyan.baidu.com/article/6b182309f99e6dba58e159bb.html 。
下载好后,将其放在主文件下(或者说是 /home下):
sudo service lightdm stop
sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run #这里的390.48换成你对应的版本
sudo ./NVIDIA-Linux-x86_64-390.48.run –no-opengl-files -no-x-check -no-nouveau-check
sudo service lightdm start
nvidia-smi
,如果出现此界面,则说明安装成功。cuda官方下载地址为: https://developer.nvidia.com/cuda-downloads ,如图:
下载完成后,解压到你指定的目录,然后,cd切换到你指定的目录输入:
sh cuda_8.0.44_linux.run --override
安装过程中,输入 f 进行翻页,会出现许多的可选项,这时需要看清每一步,根据提示输入,分别如下:
1 输入accept接受条款
2 输入n不安装nvidia图像驱动,之前已经安装过了//此处一定要选择n
3 输入y安装cuda 8.0工具
4 回车确认cuda默认安装路径:/usr/local/cuda-8.0
5 输入y用sudo权限运行安装,输入密码
6 输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
7 输入y安装CUDA 8.0 Samples,以便后面测试
8 回车确认CUDA 8.0 Samples默认安装路径:
然后,添加环境路径:
sudo gedit ~/.bashrc //然后,末尾添加以下三行
export CUDA_HOME=/usr/local/cuda-8.0
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-8.0/bin:$PATH
添加完成后,使用source让其生效。
source ~/.bashrc
使用cuda的例子来测试是否安装成功,若得到如下的输出,则为安装成功:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make -j4
sudo ./deviceQuery
首先,从官网下载工具包(不过好像下架了):https://developer.nvidia.com/rdp/cudnn-download ,也可以从文章开始部分楼主分享的百度云盘中下载。
这里将下载的tgz文件放到 /home/Documents目录下,进入该目录并解压,建立软链接,如下所示:
cd ./Download/
tar -xvzf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp ./cuda/include/cudnn.h /usr/local/cuda/include
sudo cp ./cuda/lib64/lib* /usr/local/cuda/lib64
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -sf libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig
这里,本人使用的matlab版本是:R2014b_glnxa64_withcrack.iso,提供一个matlab下载地址 http://pan.baidu.com/s/1qYJ9tNm ,也可以自行百度。
mkdir matlab_iso //主目录
// 然后cd到,matlab.iso所在文件下
sudo mount -o loop R2014b_glnxa64_withcrack.iso ~/matlab_iso
cd ~/matlab_iso
sudo ./install
sudo cp libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64/libmwservices.so
opencv3.1版本的下载链接,http://opencv.org/downloads.html
安装必需的依赖:
sudo apt-get update
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-pip
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
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文件并进入该目录。
cd opencv-3.1.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
** 期间可能会卡在ippcv的下载中,Ctrl + c中断后,可以 ippicv_linux_20151201.tgz https://pan.baidu.com/s/19KeSKnGRBFtUCLnUYRKPxw 下载。将下载的文件替换掉 OpenCV-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件。 **
make -j4
sudo make install
make过程中,可能会出现了graphcuts.cpp的错误,进行如下修改
sudo vim ../modules/cudalegacy/src/graphcuts.cpp
将45行的#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)修改为:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
然后再次运行,sudo make install
执行安装。
cd ~
git clone https://github.com/BVLC/caffe.git //从github上git caffe,也可以安装自己需要的caffe源代码
如果没有安装git,可以使用sudo apt-get install git
执行安装。
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo gedit Makefile.config
此时会修改caffe的编译配置,需要修改如下地方:
1 # USE_CUDNN := 1 修改成: USE_CUDNN := 1
2 # OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
3 # WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER:=1
4 #USE_OPENCV := 0 修改成 USE_OPENCV :=1
5 #USE_LEVELDB := 0 修改为 USE_LEVELDB:=1
6 #USE_LMDB := 0 修改位 USE_LMDB :=1
7 //修改matlab目录
8 将MATLAB_DIR := /usr/local/MATLAB/R2014b
9 //最终要的修改 # Whatever else you find you need goes here.下面的
10 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
11 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
12 修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
13 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的位置,所以需要更改这一路径
然后,修改Makefile文件:
sudo gedit Makefile
将 NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC ( C O M M O N F L A G S ) , 替 换 为 ‘ N V C C F L A G S + = − D F O R C E I N L I N E S − c c b i n = (COMMON_FLAGS),替换为 `NVCCFLAGS += -D_FORCE_INLINES -ccbin= (COMMONFLAGS),替换为‘NVCCFLAGS+=−DFORCEINLINES−ccbin=(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)`
然后编辑 /usr/local/cuda/include/host_config.h 将
#error – unsupported GNU version! gcc versions later than 5 are not supported!
在前头添加注释‘ // ’,即修改为
//#error -- unsupported GNU version! gcc versions later than 5 are not supported!
进行编译:
sudo make all -j8
sudo make runtest -j8
在这里楼主在编译sudo make runtest -j8时没有通过,可以尝试直接使用
make runtest -j8
若编译出现libcudart.so.8.0错误,则执行如下命令。
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0
sudo ldconfig
make matcaffe -j4
make mattest -j4
即运行matcaffe的测试程序,结果如图:sudo make pycaffe -j4
这里当时出现了错误 (make: Nothing to be done for ‘pycaffe’.)
sudo make clean
sudo make pycaffe -j4
然后,make pycaffe之后,执行
sudo make distribute -j4
cd ~/Documents/caffe/python
for req in $(cat requirements.txt); do sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
cd ../
make pytest -j4 #进行测试
pycaffe编译成功后,使python的caffe接口永久生效,这样你就可以直接在python中,import caffe
sudo gedit /etc/profile #profile最后添加:
export PYTHONPATH=/root/$CAFFE_ROOT/python:$PYTHONPATH #save保存
source /etc/profile
注意:
有一些python库没有安装,在import caffe测试时会出错,常见的库缺失错误:
ImportError: No module named skimage.io
ImportError: No module named scipy
ImportError: No module named google.protobuf.internal
yum install python-matplotlib.x86_64
pip install -U scikit-image
pip install scipy
easy_install protobuf
sudo sh data/mnist/get_mnist.sh
运行成功后,在 data/mnist/目录下有四个文件:
train-images-idx3-ubyte: 训练集样本 (9912422 bytes)
train-labels-idx1-ubyte: 训练集对应标注 (28881 bytes)
t10k-images-idx3-ubyte: 测试集图片 (1648877 bytes)
t10k-labels-idx1-ubyte: 测试集对应标注 (4542 bytes
sudo sh examples/mnist/create_mnist.sh
sudo gedit examples/mnist/lenet_solver.prototxt
来设置训练的相关参数sudo time sh examples/mnist/train_lenet.sh
参考文章:
[1] https://blog.csdn.net/wf19930209/article/details/81877822
[2] https://www.cnblogs.com/LaplaceAkuir/p/6262632.html?utm_source=itdadao&utm_medium=referral