ubuntu16.04安装caffe(详细教程)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35379989/article/details/80160351
cd ~
git clone https://github.com/BVLC/caffe.git

下载好后,进入到home下提取即可

注意:安装顺序为:nvidia显卡驱动--cuda--opencv--caffe,我的博客里有其他三个的安装方法,安装时间较长,可分开按顺序安装

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :

cd caffe
sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。

然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config

修改 Makefile.config 文件内容:

1.应用 cudnn

将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

2.应用 opencv 版本

将
#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3

3.使用 python 接口

将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1

4.修改 python 路径

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       

然后修改 caffe 目录下的 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

   然后修改 /usr/local/cuda/include/host_config.h 文件 :

将
#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!

注意如果使用的是CUDA版本是8.0,从CUDA 8.0开始compute capability 2.0和2.1被弃用了,所以可以将-gencode arch=compute_20,code=sm_20 和-gencode arch=compute_20,code=sm_21这两行删除。如下

# For CUDA < 6.0, comment the *_50 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_50,code=compute_50

OK ,可以开始编译了,在 caffe 目录下执行 :

make all -j8

编译成功后可运行测试:

make runtest -j8

接下来再安装一下pycaffe

sudo apt-get install python-numpy
cd caffe
sudo make pycaffe -j8
sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc
source ~/.bashr

再安装几个包

sudo pip install -U scikit-image
sudo pip install  easydict
sudo pip install protobuf

如果没有安装则pip,sudo apt install python-pip,如果报错:ImportError: cannot import name main,这是因为通过apt-get安装的pip版本太老了,老的pip版本依赖requests.compat.IncompleteRead,而在2.4.0版本的requests中已经移除了

解决方法是卸载pip后再下载安装

sudo apt-get remove python-pip
wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py
sudo pip install pyopenssl ndg-httpsclient pyasn1
sudo apt-get install libffi-dev libssl-dev

编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:

python
import caffe

若不报错则表示 caffe 的 python 接口已正确编译

猜你喜欢

转载自blog.csdn.net/qq_35379989/article/details/80160351