1. 安装显卡驱动
个人觉得安装显卡驱动是最烦的,所以单独写了博客,参考 Ubuntu16.04系统下装显卡驱动 ,在这就不再叙述。
2.安装相关依赖
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
3. 安装cuda
如果在cuda官网上下载的是最新版本,安装起来可能会出现错误,于是我安装的cuda9.0版本
链接: https://developer.nvidia.com/cuda-90-download-archive
下载好之后,在下载的文件夹中打开终端,输入命令:
sudo sh cuda_9.0.176_384.81_linux.run
出现这个界面,然后一直按enter键,直到进度条为100%,然后根据提示,依次输入accept,n,y,y,y
安装结束后,设置变量环境,输入命令:
sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部:(别忘了改你安装的对应的版本)
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出,输入source ~/.bashrc
检查是否安装成功,输入命令nvcc --version
如果出现上图信息,说明cuda安装成功。
4.安装cudnn v7.05
cudnn下载连接:https://developer.nvidia.com/rdp/cudnn-archive
下载好之后,同样在文件中打开终端,输入命令
sudo tar -zxvf cudnn-9.0-linux-x64-v7.tgz
解压后,接着输入命令
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include
cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.solibcudnn.so.7 #删除原有动态文件
sudo ln -s libcudnn.so.7.0.5libcudnn.so.7 #生成软衔接
sudo ln -s libcudnn.so.7libcudnn.so #生成软链接
测试一下是否安装成功,输入命令
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果出现上图信息,说明配置成功。
5.安装opencv
ubuntu安装caffe之前,必定要安装opencv,网上很多教程都是说安装opencv3.1版本,不知道什么原因,可能是因为版本旧的原因,怎么都安装不上,于是我选择了opencv3.4.6版本,直接在opencv官网上就能下载。
同样在下载的文件下打开终端,输入命令
unzip opencv-3.4.6.zip
sudo mv opencv-3.4.6 opencv
cd ~/opencv
mkdir build
cd build
开始配置
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译
sudo make -j8
以上只是编译,下面开始安装,输入命令
sudo make install
检测是否安装成功
pkg-config opencv --modversion
如果显示对应的安装版本号,则说明安装成功。
6. 安装anaconda2(直接跳到第7步,caffe装成功后,在看这一步)
通常在这一步要安装anaconda2,但是在这我极力不推荐,以后在编译caffe的时候很难编译成功,就是anaconda2路径的问题,所以在这有一个小技巧,先不安装anaconda2,先编译caffe,后安装,所以这一步放在最后面。
在anaconda官网上下载anaconda2,下载完后,在该文件中右击,打开终端,输入命令:
bash Anaconda2-2019.03-Linux-x86_64.sh
一直按enter键,在安装过程中,会问安装路径,按回车即可。询问是否添加到~/.bashrc中,回复yes即可。
安装完成后,执行命令如下:
echo 'export PATH="/home/csm/anaconda2/bin:$PATH"' >> ~/.bashrc
其中csm是我电脑用户名,你得根据你电脑用户名修改,接着输入命令
source ~/.bashrc
测试一下是否安装成功,输入命令conda --version
,如果出现如下图所示,则说明安装成功。
然后开始导入caffe包:
python
import caffe
如果出现protobuf报错的话,运行
conda install protobuf
然后添加caffe环境变量:
sudo gedit ~/.bashrc
#添加如下代码
export PYTHONPATH=/home/csm/caffe-master/python:$PYTHONPATH #注意你的路径
#保存退出
source ~/.bashrc
然后再import caffe,如果不报错就表示成功了。
7.安装caffe
(1)首先最下载安装包:https://github.com/BVLC/caffe
然后进行解压unzip caffe-master.zip
(2)然后进入caffe-master文件夹,打开终端,输入命令,复制Makefile.config文件
sudo cp Makefile.config.example Makefile.config
(3)打开Makefile.config文件sudo gedit Makefile.config
(4)修改Makefile.config文件内容:
#USE_CUDNN := 1
#修改成:
USE_CUDNN := 1
#OPENCV_VERSION := 3
#修改为:
OPENCV_VERSION := 3
#WITH_PYTHON_LAYER := 1
#修改为
WITH_PYTHON_LAYER := 1
在PYTHON_INCLUDE下面路径加一个local
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/local/lib/python2.7/dist-packages/numpy/core/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
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
保存退出。
6. 在caffe-master文件夹下打双击打开Makefile文件
#将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
#替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
#将:
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
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 libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
make all -j8
,这时候你会发现各种各样的错,到这我都有点崩溃了,已经研究了好几天了。sudo gedit Makefile.config
删除
-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
如下图所示
后面的所示都是因为先装了anaconda2的原因,如果你按照我之前说的做,先不安装anaconda2,后面的错误可能不会出现
(2)In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,
from /usr/include/boost/python/args.hpp:8,
from /usr/include/boost/python.hpp:11,
from tools/caffe.cpp:2:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: 没有那个文件或目录
解决办法
conda install python-devel
(3)make: *** [.build_release/src/caffe/layer_factory.o] Error 1
解决方案
make clean
export CPLUS_INCLUDE_PATH=/usr/include/python2.7
make all -j8
(4)make: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1
解决方案
进入cuda/include文件夹中,打开终端命令
sudo cp cudnn.h /usr/local/cuda/include/
sudo cp {libcudnn.so,libcudnn.so.5,libcudnn.so.5.1.10,libcudnn_static.a} /usr/local/cuda/lib64
虽然说无法通过符号链接,但是不影响编译
(5)find /usr/include -name pyconfig.h
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory
解决方案:
注意你的anaconda2的路径
make clean
export CPLUS_INCLUDE_PATH=/usr/include/python2.7
make all -j8
(6).build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
Makefile:542: recipe for target ‘runtest’ failed
解决方案:
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 && sudo ldconfig
到这我真的无力吐槽了,就算前面出现这些个错误,按照百度的一一去解决,但是发现根本不管用,就在我快放弃的时候,第二天我又重新试了一遍,结果莫名其妙的就成功了,装caffe真的需要靠运气。
10 . 编译成功后,即使没报错,也别高兴的太早,在测试一下
sudo make runtest
如果运行出现下图所示,表面安装成功
11. 安装 pycaffe
我以为到这总能成功了吧,但是依然想多了,心里是一万cnm在崩腾。
输入命令
sudo make pycaffe -j8
结果又报错:
Makefile:517: recipe for target ‘python/caffe/_cmakaffe.so’ failed
解决方案:
首先确保Makefile.config中你的anaconda2的路径是正确的,就是ANACONDA_HOME后面的路径
然后输入命令
sudo gedit ~/.bashrc
#添加如下代码
export CPLUS_INCLUDE_PATH=/home/csm/anaconda2/include/python2.7/:$CPLUS_INCLUDE_PATH
#保存退出
source ~/.bashrc
重启电脑,重新编译
make clean
make all -j8
sudo make pycaffe -j8
md。终于编译成功了,测试一下,输入
python
import caffe