在caffe框架中,使用的数据格式是google的 protocol buffer。对这个不了解,所以,想简单学习一下。简单来说,Protocol Buffer 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化和反序列化。一提到序列化就想到了JSON,不错,两者很相似。如果对JSON不熟悉,那么XML应该知道吧。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
protocol buffer 的编译需要安装cmake,可到https://cmake.org/下载并安装。
下载protocol buffer包,可直接到google官网下载,http://code.google.com/p/protobuf/,但是我上不了google,所以我在https://github.com/google/protobuf这儿下载。
下载解压后,如我的目录:D:caffeprotoBuf下,会有一个cmake文件夹,编译的文件都放在这儿了。打开VS的命令提示行,如
C:Program Files (x86)Microsoft Visual Studio 11.0>
进入编译目录
C:Program Files (x86)Microsoft Visual Studio 11.0>cd d:caffeprotoBufcmake
新建目录build,用于存放makefile文件。注意,可编译为DEBUG版本和release版本,但是分别编译。
d:caffeprotobufcmake>mkdir build & cd build
如果编译debug版本
d:caffeprotobufcmakeuild>mkdir debug & cd debug d:caffeprotobufcmakeuilddebug>cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../../install ../..
如果编译release版本
d:caffeprotobufcmakeuild>mkdir release & cd release d:caffeprotobufcmakeuild elease>cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../../install ../..
仔细一比较两种模式,就能看出区别在哪了。后面我就只以debug为例了,基本上是一样的操作
接下来最重要的一步,编译
d:caffeprotobufcmakeuilddebug>nmake
很简单,直接输入nmake回车就可以了,然后慢慢等待。
编译完成后,进行安装
d:caffeprotobufcmakeuilddebug>nmake install
会在最上层根目录(d:caffeprotobuf)下生成一个install的文件夹,里面有三个文件夹,bin,include和lib。如果对vs比较熟悉的话,就知道这三个文件夹代表着什么了。bin文件里面protoc.exe, include里面是包含头文件,lib里面是三个静态链接库文件。至此,编译就结束了。在你的项目里面设置好包含目录和库目录就可以使用了。