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


 
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号