Caffe学习中的一些错误记录
ProtoBuffer
ProtoBuffer是由Google开发的一种可以实现内存与非易失存储介质(如硬盘文件)交换的协议接口。Caffe源码中大量使用ProtoBuffer作为权值和模型参数的载体。
在这里我使用的是2.5.0的版本。并且没有安装在系统默认目录/usr/或/usr/local/下,而是安装在了/home/proto_buffer/local_install下。
接着我们修改了caffe根目录中的Makefile.config文件
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
在其后添加如下字段
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/ /home/proto_buffer/local_install/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /home/proto_buffer/local_install/li
当使用g++命令编译get_param_from_proto.cpp文件,并调用caffe目录中的caffe.pb.cc以及ProtoBuffer时:
$ g++ -o test get_param_from_proto.cpp
/[caffe根目录]/build/src/caffe/proto/caffe.pb.cc -I/[caffe根目录]/build/src/caffe/proto/ -I/[ProtoBuffer安装目录]/include –L/[ProtoBuffer安装目录]/lib –lprotobuf
可能会出现如下一系列错误:
error: ‘kEmptyString’ is not a member of ‘google::protobuf::internal’ if (meanfile_ != &::google::protobuf::internal::kEmptyString) {
解决方法如下:
1、使用
$ protoc --version
查看ProtoBuffer版本,发现是
并不是之前安装的2.5.0版本
需要将安装目录使用如下命令加入PATH中:
$ PATH=/home/proto_buffer/local_install/bin:$PATH
2、若仍然报错,可能是因为caffe在修改Makefile.config没有重新编译。使用命令重新编译后应该就能解决问题了。
$ make clean
$ make
3、若在第一步后出现如下错误
protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared object file: No such file or directory
参考https://www.cnblogs.com/Anker/p/3209876.html
opencv
opencv大致安装步骤如下(以opencv-3.0.0为例):
下载opencv-3.0.0.tar.gz
>> tar zxvf opencv-3.0.0.tar.gz >> cd opencv-3.0.0 >> mkdir build >> cd build
利用下面的cmake命令进行编译设置
>> cmake .. –DCMAKE_BUILD_TYPE=Release –DCMAKE_INSTALL_PREFIX=[自定义安装目录] >> make >> make install
这一步往往会卡在ICV: Downloading ippicv_linux_20141027.tgz这一步骤
解决方法如下:
不知道是因为cmake下载的问题还是Hash值的问题,我们可以下载 ippicv_linux_20141027.tgz文件,并对应目录
/home/proto_buffer/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b中的 ippicv_linux_20141027.tgz文件。
再次执行
>> cmake .. –DCMAKE_BUILD_TYPE=Release –DCMAKE_INSTALL_PREFIX=[自定义安装目录] >> make >> make install
问题解决!
依然是关于opencv的一个问题,具体提示如下:
make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1
解决方法如下:
打开Makefile.config
可以看到有关opencv的一行:
# Uncomment if you're using OpenCV 3
取消OPENCV_VERSION := 3这一行的标注
问题解决!