caffe源码分析之依赖库

本文详细介绍了Caffe编译过程中的主要依赖库及其安装方法,包括protobuf、boost、GFLAGS、GLOG、BLAS、HDF5、LMDB、LEVELDB、Snappy等,适合对Linux系统有一定了解的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为caffe设计开发的时候遵循的是尽量复用的思路,所以使用了很多开源的库,所以在编译安装的时候需要解决一系列的依赖,本文来介绍一下主要几个依赖库以及安装方法。这里主要介绍的是源码的安装方法,适合对linux系统比较熟悉的同学,这样编译安装一遍利于对这些依赖库有一定的了解,当然也可以使用apt-get命令来安装,比较方便,缺点是版本一般会低一些。
另外,这里首先说一下caffe编译之后的形式,caffe将源码编译为一个库 : libcaffe.so和libcaffe.a库,放置于caffe/build/lib目录下。头文件在caffe/include目录下。另外利用libcaffe库写了几个常用的工具,在caffe/build/tools目录下,包括最常用的caffe.bin。
主要的依赖库有:

  1. protobuf: protobuf是谷歌开发的一种可以实现内存与硬盘交换的协议接口,caffe源码中大量使用了protobuf来作为权值和模型参数的载体。protobuf可以跨平台,跨语言来实现信息的传递,并且数据是经过编码压缩过的,占用空间小。caffe的模型就是用protobuf描述语言来编写的。
    使用protobuf的一个简单例子:
    https://www.cnblogs.com/DswCnblog/p/6700660.html
    下面开始编译protobuf库:
    1.从github上下载protobuf源码:
    因为我们只需要c++版本的,所以只需要下载cpp版本就可以。
    https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0 下载到了tar.gz包
    安装guide:
    https://github.com/protocolbuffers/protobuf/blob/3.9.x/src/README.md
    安装步骤:
    tar -xvz -f protobuf-cpp-3.8.0.tar.gz
    cd protobuf-3.8.0/
    ./autogen.sh
    ./configure
    make
    make check
    sudo make install
    sudo ldconfig
    基本上按照安装guide里面的步骤。

  2. boost库
    熟悉c++的同学应该知道boost库,boost库是为了提高c++的开发效率而开发的一个开源库,使用很多c++ 的新技术,一般是 等到boost库中很多技术比较成熟了,就会被c++标准库来收录,像智能指针,并发编程等。c++11之后的modern c++就将智能指针等收录到标准库中。因为caffe开发比较早,没有使用modern c++标准库的一些新feature,而是用到了boost库的智能指针等,所以需要安装boost库
    a. 从github来下载源码
    b. ./bootstrap.sh --with-libraries=system,thread,python,filesystem 后面的是要编译的模块
    c. ./b2
    d. sudo cp -r boost/ /usr/local/include/ 没有提供install脚本,所以需要手动将头文件copy到/usr/local/include文件中
    e. sudo cp stage/lib/* /usr/local/lib/ 将编译好的库copy到/usr/local/lib文件夹下

也可以利用apt-get工具来安装,更简单,不过版本一般比较低, 命令为:
sudo apt-get install libboost-all-dev

  1. GFLAGS
    主要用于命令行参数的解析。
  a.从github来下载源码
  b.mkdir build && cd build
  c.cmake ../
  d. ccmake ..来配置,将BUILD_SHARED_LIBS 打开,修改安装目录
  e. make && sudo make install 
  1. GLOG
    用于记录应用程序的日志。
    a.从github来获取源码
    b. ./autogen.sh
    c. ./configure --prefix=/usr/local
    d. make && sudo make install

  2. BLAS
    blas是基本线性代数库,我们这里使用开源的openBLAS, 这是在cpu端的计算库,如果在gpu计算,则需要cuBLAS。
    a. 从github来获取源码
    b. make
    c. sudo make PREFIX=/usr/local install

  3. HDF5
    hdf5是美国国家高级计算应用中心研制的一种能高效存储和分发科学数据的新型数据格式。可以存储不同类型的图像和数码数据文件,caffe训练模型可以选择保存为hdf5格式或者protobuf格式,默认为protobuf格式。
    a. 从github来获取源码
    b. ./configure
    c. make -j8 && sudo make install

  4. LMDB和LEVELDB
    这两个是数据管理库,在caffe中将形形色色的原始数据(jpeg,二进制数据)转换为统一的key-value存储,便于caffe的data layer获取这些数据。主要使用lmdb,为了前向兼容,leveldb也需要安装。
    lmdb从github下载源码,解压后直接make,然后将lmdb.h和liblmdb.so拷贝到/usr/local/include 和/usr/local/lib目录下就可以了
    leveldb:需要用cmake来安装
    a.github获取源码
    b. mkdir build && cd build
    c. cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release …/ && cmake --build .
    d. sudo make install

  5. Snappy
    snappy是一个用来压缩和解压的c++库,比zlib快,但压缩出来的文件比zlib的大一些
    a. github获取源码
    b. mkdir build && cd build 也是用cmake安装
    c. vim …/CMakeLists.txt将build_shared_libs 设置为on
    d. cmake …/
    e. make && sudo make install

最后就可以编译caffe了,
从github下载caffe源码,
a. cd caffe/
b. cp Makefile.config.example Makefile.config
c. vim Makefile.config, 打开CPU_ONLY :=1,如果使用的是opencv3, 还需要打开opencv3选项
d. make -j8就可以编译完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值