caffe安装教程

caffe安装教程

本文所使用的底层环境配置:cuda8、cudnn6、OpenCV2.4.5、anaconda2(Python2.7)。如使用其他版本的环境,如cuda,可安装自己的版本,但须在相应部分作出修改。
查看cuda版本cat /usr/local/cuda/version.txt
查看cudnn版本cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

1.底层以及依赖环境搭建

本文所用的底层环境事先已经搭建好,主要包括有Python2.7(anaconda版)cuda、cudnn(支持GPU)以及opencv,这些环境的安装不是本文的重点,读者可参考本文的链接或自寻他法,下文是建立在以上环境都成功搭建的前提下进行的。大家在选择底层依赖环境的时候可参考caffe官网指导内容

2.下载caffe源代码

caffe可使用git clone https://github.com/BVLC/caffe/指令直接下载,或者去GitHub上https://github.com/BVLC/caffe下载,将下载下来的文件解压缩即可。使用上述两种方法之一成功后便会得到一个名为caffe的文件夹。

3. 修改配置文件

使用cd caffe指令进入caffe目录后,会看到这样的内容caffe目录
从目录中可以看到有一个Makefile.config.example文件,将其内容复制到Makefile.config文件中或者直接将前者的.example后缀去掉即可。打开Makefile.config文件,并对其依据个人情况进行修改。下面从前往后依次说明本人的改动。

## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!

# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0
# This code is taken from https://github.com/sh1r0/caffe-android-lib
# USE_HDF5 := 0

# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
#	You should not set this flag if you will be reading LMDBs with any
#	possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1

# Uncomment if you're using OpenCV 3
# OPENCV_VERSION := 3

这段内容中将USE_CUDNN := 1这一行原本的注释去掉了,表明支持GPU版本,若只想使用CPU版本则将# CPU_ONLY := 1这一行的注释去掉。由于本人使用的是OpenCV2.4,所以关于OpenCV3的部分也不用改动。

# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++

# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := /usr/local/cuda
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
		-gencode arch=compute_20,code=sm_21 \
		-gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
		-gencode arch=compute_50,code=sm_50 \
		-gencode arch=compute_52,code=sm_52 \
		-gencode arch=compute_60,code=sm_60 \
		-gencode arch=compute_61,code=sm_61 \
		-gencode arch=compute_61,code=compute_61

这一部分将CUDA_DIR := /usr/local/cuda改为自己的cuda路径,由于cuda允许多版本同时存在,为了方便起见,可在本人机器上安装多个cuda,然后在/usr/local/建立cuda软连接指定到当前实际使用的cuda目录即可。建立软连接代码ln -s /usr/local/cuda /path/to/your/cuda又由于本人使用的是cuda8,所以后面关于cuda的部分也不用修改,大家可参照注释根据自己的cuda版本进行修改。

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app

这一部分没有修改。

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
# PYTHON_INCLUDE := /usr/include/python2.7 \
# 		/usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		$(ANACONDA_HOME)/include/python2.7 \
		$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
#                 /usr/lib/python3.5/dist-packages/numpy/core/include

# We need to be able to find libpythonX.X.so or .dylib.
# PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib

# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1

这一部分如果使用Python接口的话就需要修改,本文编译了Python接口,所以着重对这一部分进行修改。首先,由于使用的是anaconda中的Python,所以得将原Python相关行给注释掉,然后将ANACONDA_HOME相关行解注释并且换成自己使用的anaconda路径。再下来同样要将PYTHON_LIB换成anaconda的,最后若要使用Python来写caffe的网络层(Python Layer),得将WITH_PYTHON_LAYER := 1这一行注释去掉。

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib

# NCCL acceleration switch (uncomment to build with NCCL)
# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
# USE_NCCL := 1

# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG := 1

# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute

# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1

# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0

# enable pretty build (comment to see full commands)
Q ?= @

在后面直至文档末的内容都没有改动。

编译caffe

修改完配置文件Makefile.config之后,在caffe目录下依次执行make all -j8make test -j8make runtest -j8make pycaffe,如果都编译通过,则caffe编译完成。期间,可能会出现以下l类似错误
1.编译runtest的时候可能会出现

error while loading shared libraries: libhdf5_hl.so.10: cannot open shared object file: No such file

此问题解决方法为在本人home目录下修改.bashrc配置文件,添加anaconda的lib库文件,具体操作为vi ~/.bashrc进入文件,然后在文末加上export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/cz/anaconda2/lib。这样我们的编译就能全部通过了,在Python中使用caffe的时候有可能会出现下面错误。
2.直接使用import caffe指令的时候报错

ImportError: No module named caffe

解决方法,将caffe中的python路径添加到系统路径中,指令如下:

import sys
    import os
    caffe_root = '/home/cz/enviroment/caffe/'
    caffe_path = os.path.join(caffe_root,'python')
    if caffe_path not in sys.path:
        sys.path.insert(0,caffe_path)
    import caffe

这里的caffe_root为你自己的caffe路径,或者更简单的

import sys
sys.path.insert(0,'/home/cz/enviroment/caffe/python')
import caffe

3.解决完2之后还报错

ImportError: No module named _caffe

此问题解决方法,重新编译一下pycaffe,指令make pycaffe
4.解决完3之后import caffe还是报错

No module named google.protobuf.internal

解决方法,我装的是Anaconda2, 解决方法是在其中安装protobuf最新版本,我用的pip指令,pip install protobuf。在这里强调一下,由于本人机器上有多个版本的python,为了避免混淆,大家拥有多个python的时候可以使用python2 -m pip install protobuf来避免使用pip下载包的时候出现混淆。这里的python2是你实际使用的python。
至此,我就可以在python中正常import caffe啦!

总结

安装caffe的过程实属不易,期间可能会出现各种奇怪的错误,我这里给出的只是我成功安装的经历,由于大部分环境已经提前部署好,所以在安装caffe的时候还算比较顺利,大家在安装自己的caffe的时候很有可能还会出现其他错误,此时就要耐心看看错误提示是啥,结合网上资料,慢慢修正,最后,总会成功的!

============================================ 补充 ==============================================

第二次安装caffe时出现的错误(caffe可真是个神奇的东西呢)

1.最先出现的和hdf5有关的报错,编译CPU版本的也不行

make: *** [.build_release/src/caffe/net.o] Error 1
make: *** [.build_release/src/caffe/layers/data_layer.o] Error 1

解决方法:注释掉USE_HDF5 := 0(尝试过各种方法,还是这个见效)PS:也试了Ubuntu14.04+caffe配置过程中出现的问题中提到的方法,可能有用吧。(还是别用了吧,后面又出错了,如果用了,请见第3点!)

2.随后出现的和c++编译有关的错(网上很多说是和gcc版本有关,不要轻易相信!!!!!!!!)

make: *** [.build_release/cuda/src/caffe/layers/split_layer.o] Error 1(类似这种)

这里在Makefile.config中添加了两句话,可能第二句更有用一点吧。

CXXFLAGS+=-std=c++11
CUSTOM_CXX := g++ -std=c++11

3.由于1中使用了不当方法,导致编译的hdf5库和链接的库不一致了,如果在make runtest时出现以下错误

HDF5 library version mismatched error

则使用以下指令或相关指令强行安装hdf5 1.8.17版本。
conda install -c anaconda hdf5=1.8.17

4.gflags错误

error: ‘gflags’ has not been declared

参见issues

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值