ubuntu编译caffe可能遇到的坑

ubuntu编译caffe可能遇到的坑

caffe作为深度学习最早的框架之一,对于现在DL的发展起到了很大的贡献。然而相比于现在更加主流的tensorflow、pytorch等,其编译过程常常让人很痛苦。

这篇博客记录一下caffe编译配置过程中常见的问题,能够解决的问题会给出解决方案。

首先caffe不一定非要手动编译,以ubuntu为例,在20.04之前的版本,可以通过apt安装caffe-cuda和caffe-cpu(cpu版本)。然而Ubuntu20.04只有caffe-cpu,可能过段时间会加上吧。

1. g++版本

g++版本要求7或更低,如果更新了Ubuntu20.04,g++版本一般是9,可以通过sudo权限重置软连接更改版本。

2. 依赖库

众所周知,caffe依赖库较多,需要手动解决。主要包括 opencv、boost、gflags、glog、hdf5、protobuf等。当然 Ubuntu下都可以用apt安装,也算不那么麻烦了。

sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev libleveldb-dev libatlas-base-dev
sudo apt install --no-install-recommends libboost-all-dev 

实际上不在一开始装完也没关系,中途报错再看(编译caffe就要做好报好多错的准备呀)。一般错误提示确实某个库,如xxx,可以apt search xxx搜索名字,一般对应的库名都是libxxx-dev这种的,遇到确实再单独安装即可。

3. Makefile.config

安装编译的流程,我们需要复制 Makefile.config.example 到 Makefile.config,然后根据自己机器的情况修改。这里说几个常见要改的地方吧:

1). CUDA路径

在这里插入图片描述
上图所示是一般自己编译cuda时,最后一步系统默认放在/usr/local/cuda-version, 并建立软连接/usr/local/cuda指向它。但是直接apt安装cuda-toolkit路径并不默认此处。(apt安装多在/usr/lib/x86_64-linux-gnu)这里要注意。

2). OpenCV

早起版本的caffe默认使用opencv2(实际兼容opencv3或4,但可能遇到其他问题要修改代码),config文件中可能有相关的设置,根据自身opencv版本进行设置。

另外make时可能找不到一些库(最常见的是找不到opencv,会报一些诸如"cv::imread"连接错误这些的,此时启用pkg-config,如下图所示,可解决
在这里插入图片描述

3). 包含路径与链接库路径

在这里插入图片描述
如上图所示,一般使用apt安装依赖的话,上述这些应该涵盖了搜索的范围。找不到就自己find一下,确认在那个路径。
比较有趣的是hdf5,是放在xx/hdf5/serial,无论是头文件还是.so库文件都放在自身名字下2级目录内,只包含了/usr/include或/usr/lib是不够的。

还有snappy这个库,如果缺失,在编译时不会报错,但在链接时会报错连接错误,找不到 -lsnappy,一般都是没装,但是前面的步骤不报错。

4). cuda架构

在这里插入图片描述
上图是我在cuda 10.1版本下编译时的设置,删掉了原来最前面的*20/*21,这些是cuda 9
以前需要的。config example里关于这部分在不同cuda版本怎么设置说的比较清楚了,主要是容易忘。

3. 其他

1)

./include/caffe/util/cudnn.hpp:8:34: fatal error: caffe/proto/caffe.pb.h

虽然装了protobuf,但还是可能出现上面的报错。原因可能是protobuf的版本不匹配。这个问题可以自己手动去protoc:

cd CAFFE_ROOT/src/caffe/proto/
protoc --cpp_out=CAFFE_ROOT/include/caffe/ caffe.proto

然后在CAFFE_ROOT/include/caffe/就会生成对应的.h文件。

2)

undefined reference to `cv::imread(std::string const&, int)'

安装了opencv出现上述错误,一般是没找到opencv库文件。
在config文件中启用启用pkg-config即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值