caffe:protobuf版本出错

时间:2016-04-17 15:11:01

标签: computer-vision neural-network deep-learning caffe protocol-buffers

我以前安装过caffe和Fast-RCNN,所以我应该拥有所有必需的库和依赖项。

我需要再次为使用Caffe的另一个存储库(https://github.com/ronghanghu/natural-language-object-retrieval)安装它。

当我跑步时

make all

它给了我以下错误:

CXX .build_release/src/caffe/proto/caffe.pb.cc
In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
#error This file was generated by a newer version of protoc which is
^
.build_release/src/caffe/proto/caffe.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
#error incompatible with your Protocol Buffer headers.  Please update
^
.build_release/src/caffe/proto/caffe.pb.h:14:2: error: #error your headers.
#error your headers.
^
In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:26:55: fatal error: google/protobuf/generated_enum_reflection.h: No such file or directory
#include <google/protobuf/generated_enum_reflection.h>

compilation terminated.
make: *** [.build_release/src/caffe/proto/caffe.pb.o] Error 1

我想也许protobuf已经更新,并尝试了

protoc --version

返回

libprotoc 2.5.0

似乎已经发布了更新版本的protobuf(2.6或更高版本)。

所以我的问题是:

1)有没有简单的方法来更新它?

2)如果我更新它,它会影响我之前安装的caffe和fast-rcnn,这取决于protobuf的旧版本吗?

4 个答案:

答案 0 :(得分:4)

我怀疑你的问题是你的include路径中有多个版本的protobuf。它可能是从旧版本而不是最新版本中获取标题。我可以确认最新的caffe(现在的git master)与ubuntu 14.04LTS中的libprotobuf-dev-2.5.0-9ubuntu1完全编译。

答案 1 :(得分:1)

我想在你遇到这个问题之前,你已经使用protoc来生成caffe.pb.h`。如果你这样做,我的解决方案可能对你有用。

首先,您应该知道您的操作系统中安装了多少protoc

例如,在我的操作系统中:

Prompt> whereis protoc
protoc: /usr/bin/protoc /home/xxx/.conda/envs/python27/bin/protoc/usr/share/man/man1/protoc.1.gz

因此,我的操作系统中有2个protoc。您可以使用which protocprotoc --version来查找默认使用的protoc版本。在我的操作系统中:

Prompt> which protoc
/home/xxx/.conda/envs/python27/bin/protoc

Prompt>protoc --version
libprotoc 3.5.1

最后,使用其他protoc再次创建caffe.pb.h。 让dir到caffe/src/caffe/proto,然后执行:

/usr/bin/protoc --cpp_out=. caffe.proto

答案 2 :(得分:0)

我在电脑上解决了这个问题,也许它可以帮到你。我的环境是Ubuntu16.04,在安装Caffe之前我安装了Anaconda(用于python2.7)。碰巧我使用conda来安装libprotobuf-dev,这导致与caffe的'sudo apt-get install libprotobuf-dev'命令发生冲突,'apt-get'和conda在我的计算机上安装不同,可以通过“找到protobuf”,所以我删除了Anaconda的libprotobuf版本,没有问题再次发生。

conda uninstall libprotobuf

在安装Caffe之前安装tensorflow时,由于libprotobuf冲突,也会发生此问题。

答案 3 :(得分:0)

我通过以下方式解决问题

conda uninstall libprotobuf

然后删除caffe文件夹并下载一个新文件夹

git clone https://github.com/BVLC/caffe.git

然后做

make all -j8