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官网上下载的是最新版本,安装起来可能会出现错误,于是我安装的cuda8.o版本
链接: https://developer.nvidia.com/cuda-80-ga2-download-archive
下载好之后,在下载的文件夹中打开终端,输入命令:
sudo sh cuda_8.0.61_375.26_linux.run
出现这个界面,然后一直按enter键,直到进度条为100%,然后根据提示,依次输入accept,n,y,y,y
安装结束后,设置变量环境,输入命令:
sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部:(别忘了改你安装的对应的版本)
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出,输入source ~/.bashrc
检查是否安装成功,输入命令nvcc --version
如果出现上图信息,说明cuda安装成功。
4.安装cudnn8.0
cudnn8.0下载连接:https://developer.nvidia.com/rdp/cudnn-archive
下载好之后,同样在文件中打开终端,输入命令
sudo tar -zxvf cudnn-8.0-linux-x64-v5.1.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.so libcudnn.so.5
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.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
在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
,如果出现如下图所示,则说明安装成功。
如果你看到这里的话,说明你前面安装的都很顺利,喝杯水冷静一下,因为后面还有更大的坑等着我们。
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文件内容:
- 应用 cudnn
#USE_CUDNN := 1
#修改成:
USE_CUDNN := 1
- 应用 opencv 版本
#OPENCV_VERSION := 3
#修改为:
OPENCV_VERSION := 3
- 使用 python 接口
#WITH_PYTHON_LAYER := 1
#修改为
WITH_PYTHON_LAYER := 1
- 修改 python 路径
在PYTHON_INCLUDE前面加一个#
#PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
将ANACONDA_HOME和PYTHON_INCLUDE前面的#去掉,anaconda修改为anaconda2
ANACONDA_HOME := $(HOME)/csm/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
如下图所示
5. 重要的一步
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
conda install protobuf
- 编译
make all -j8
,这时候你会发现各种各样的错,到这我都有点崩溃了,已经研究了好几天了。 - 可能的错误
(1)nvcc fatal : Unsupported gpu architecture ‘compute_20’
修改方法,在caffe-master/cmake文件夹下,双击打开Cuda.cmake文件,将第7行修改为第8行
1 if(CPU_ONLY)
2 return()
3 endif()
4
5 # Known NVIDIA GPU achitectures Caffe can be compiled for.
6 # This list will be used for CUDA_ARCH_NAME = All option
7 #set(Caffe_known_gpu_archs "20 21(20) 30 35 50 52 61")
8 set(Caffe_known_gpu_archs "30 35 50 52 61")
(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: 没有那个文件或目录
这是因为当前环境下没有安装的Python的开发库,使用yum安装一下即可,解决办法
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/
进入cuda/lib64文件夹中,打开终端命令
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-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && 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 apt-get install python-numpy
重启电脑,重新编译
make clean
make all -j8
sudo make pycaffe -j8
md。终于编译成功了,测试一下,输入
python
import caffe
在这花了一个星期的时间终于成功了,真的很心酸