deeplab v2编译caffe

一、编译步骤:

1.cd deeplab

2.git clone https://bitbucket.org/aquariusjay/deeplab-public-ver2.git

3.cd deeplab-public-ver2

4.##因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config:

sudo cp Makefile.config.example Makefile.config  

##打开并修改配置文件:
 sudo gedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件:(我修改的地方)

a.若使用的opencv版本是3的,则

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

b.重要的一项 :
将 # Whatever else you find you need goes here. 下面的

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 

修改为:

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
2 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的位置,所以需要更改这一路径.

5.make all  或者 make -j8

6.make pycaffe

7.make test # NOT mandatory(非必须,即要不要都可以,我没有要)

8.make runtest # NOT mandatory(非必须,即要不要都可以,我没有要)

二、编译过程中出现的错误

1、fatal error: hdf5.h: 没有那个文件或目录

解决办法:

在Makefile.config文件中添加安装的hdf5的路径(以下是我的路径):

# Whatever else you find you need goes here.
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

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /home/xjj/matio-1.5.2/src /home/xjj/hdf5/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /home/xjj/matio-1.5.2/src/.libs /home/xjj/hdf5/lib 

我之前电脑其实是安装过hdf5的,但是一直报错说没有安装,果断又重新安装了一遍(具体安装不在这里详细说明)。因为我之前还安装了matio,所以会出现matio的路径。

2、编译时会出现如下错误提示:

           ./include/caffe/common.cuh(9): error: function "atomicAdd(double *, double)" has already been defined

原因是CUDA 8.0 提供了对atomicAdd函数的定义,但atomicAdd在之前的CUDA toolkit中并未出现,因此一些程序自定义了atomicAdd函数。

解决方法:打开./include/caffe/common.cuh文件,在atomicAdd前添加宏判断即可。

如下:

#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600

#else

    static __inline__ __device__ double atomicAdd(double* address, double val)

    { ...

    }

#endif

再次编译程序即可。

3、编译caffe时在bashrc中添加的内容,贴上我的:

export LD_LIBRARY_PATH=/home/xjj/matio-1.5.2/src/.libs:/home/xjj/hdf5/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

export PYTHONPATH=/home/xjj/caffe/python:/home/xjj/deeplab/deeplab-public-ver2/python:$PYTHONPATH

第一行是安装的matio和hdf5的路径;第二行是caffe中Python的路径。

第一个Python是系统原来的,第二个Python是编译deeplab v2中caffe的Python,如果运行deeplab v2的代码,可以先把第一个Python暂时去掉,如果不去掉,默认运行第一个的python。

附图:

参考的网址:

http://blog.csdn.net/tianrolin/article/details/71246472#reply

http://blog.csdn.net/Xmo_jiao/article/details/77897109

http://blog.csdn.net/jyl1999xxxx/article/details/70196876

posted on 2017-10-22 14:38  `早茶月光  阅读(1219)  评论(0)    收藏  举报

导航