安装caffe的记录

安装结果:

caffe安装后测试通过。安装后的caffe使用了cuda,没有使用cudnn。尝试使用cudnn,但是可能因为版本问题一直出错,所以最后决定不用cudnn.

环境:

ubuntu16.04(uname -a查看)

cuda9.0(cat /usr/local/cuda/version.txt

cudnn7.4(cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2)

python3.6(使用的是通过anaconda安装的python,其中anaconda安装在/home/mlxuan/anaconda3中)

opencv3.4(查看版本号pkg-config opencv --modversion; 查看安装路径sudo find / -iname "*opencv*")

安装过程

1.首先,参考官方网站的教程(http://caffe.berkeleyvision.org/installation.html),去官方网站下载源码(https://github.com/BVLC/caffe),然后安装所需的各种依赖

2.

cp Makefile.config.example Makefile.config
# Adjust Makefile.config (for example, if using Anaconda Python, or if cuDNN is desired)

修改Makefile.config和Makefile,这是最重要的一个步骤,且电脑配置不同,修改不同

 

Makefile.config修改部分:

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

 

2.# 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 \

3.python的设置(很重要,根据自己python的配置而设置)

ANACONDA_HOME := /home/mlxuan/anaconda3

PYTHON_LIBRARIES := boost_python-py35 python3.6m#注意,boost_python-py35要去/usr/lib/x86_64-linux-gnu查看是否有,有哪个版本,然后写上对应的版本;python3.6m位于/home/mlxuan/anaconda3/lib中,所以要设置PYTHON_LIB := /home/mlxuan/anaconda3/lib。因为要保证编译和运行时都能找到这两个库文件,所以需要在~/.bashrc中设置export LD_LIBRARY_PATH=/home/mlxuan/anaconda3/lib:$LD_LIBRARY_PATH

PYTHON_INCLUDE := /home/mlxuan/anaconda3/include \
                  /home/mlxuan/anaconda3/include/python3.6m \
                 /home/mlxuan/anaconda3/lib/python3.6/site-packages/numpy/core/include

PYTHON_LIB := /home/mlxuan/anaconda3/lib

WITH_PYTHON_LAYER := 1

4.设置hdf5所在的头文件和库文件的路径

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include /usr/local/cuda/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/cuda/lib64

或者

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

这两个写法都测试过,都可以

注意:

一开始运行时(执行make runtest)提示我hdf5的头文件版本和库的版本不一致,检查发现在/home/mlxuan/anaconda3/include包含hdf5.h,在/usr/include/hdf5/serial也包含hdf5.h,且/home/mlxuan/anaconda3/include和/usr/include/hdf5/serial都是我们的头文件目录。因为我们想要使用的是usr/include/hdf5/serial下的hdf5.h,所以将/home/mlxuan/anaconda3/include下的hdf5.h修改为了hdf5_1.h,这样执行make runtest没有报错。注意,这个更改可能导致python导入包时出错,所以使用python时可能需要在改回来。

如果不想修改,改变INCLUDE_DIRS中路径的顺序也可以,改为

INCLUDE_DIRS := /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include /usr/local/cuda/include $(PYTHON_INCLUDE)

 

注意2:

我们没有使用cudnn,所以# USE_CUDNN := 1

 

5.安装caffe需要先安装opencv,如何安装opencv请查看https://blog.csdn.net/u013066730/article/details/79411730

注意:要设置-DBUILD_TIFF=ON

我的安装命令:

 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=OFF -D PYTHON_EXCUTABLE=/home/mlxuan/anaconda3/bin/python -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON -D BUILD_EXAMPLES=ON -D WITH_IPP=OFF -DBUILD_TIFF=ON ..

 

 

Makefile修改部分:

注意:这里不要使用 gedit makefile 命令,而是找到 makefile 直接打开

            将 NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) (第425行)替换为

               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!
这一步修改我没有去做。

 

 

 

测试:

make runtest没有问题后则使用minist数据测试(参考:https://blog.csdn.net/yggaoeecs/article/details/79163789):

1.将终端定位到Caffe根目录

cd ~/caffe

2.下载MNIST数据库并解压缩

./data/mnist/get_mnist.sh

3.将其转换成Lmdb数据库格式

./examples/mnist/create_mnist.sh

4.训练网络

./examples/mnist/train_lenet.sh
 

 

 

caffe+python的测试:

首先,保证make pycaffe没有错误,然后在python中import caffe不出错

查看caffe的路径:help(caffe)

导入caffe前需要指定python所在的路径:

caffe_root='/media/mlxuan/LinuxH/project/SegNet/caffe-master/'
sys.path.insert(0, caffe_root+'python')
import caffe

设置python的导包路径可以在~/.bashrc中设置:export PYTHONPATH=xxx

在python下使用caffe的教程:https://blog.csdn.net/jnulzl/article/details/52077915

在import caffe时如果出现undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE的错误,是因为没有设置PYTHON_LIBRARIES := boost_python-py35 python3.6m

 

注意:

安装好后的caffe只是安装在了当前的路径下,需要设置全局变量等才能把当前编译好的caffe给其他程序使用

                gedit ~/.bashrc(打开.bashrc)

                export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH(注意:path/to是自己caffe的路径)

       保存, 生效 source ~/.bashrc

 

 

参考博客:

https://blog.csdn.net/zhuzizhong/article/details/84426982

https://blog.csdn.net/yhaolpz/article/details/71375762

其他问题:

出现libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用

重新安装zlib
1 git clone https://github.com/madler/zlib
2 cd path/to/zlib    #这里黄色标注的换成自己的路径即可
3 ./configure
4 make
5 make install # you may add 'sudo'

 

 

总结:

关键:根据自己的python路径设置所用的python

出现问题谷歌搜索并且要思考可能的原因和解决方式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值