Caffe的各个版本简介

Posted qwangxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Caffe的各个版本简介相关的知识,希望对你有一定的参考价值。

Tensorflow和Caffe是机器学习初学者常用的2种深度学习框架。相对于Tensorflow有简单的python pip一键安装包,Caffe的安装更考验开发者的计算机编译水平,需要自己下载源码编译。尽管caffe的配置教程网上很多,但是网上caffe的各个分支版本也很多,所以初学者在编译时总是会碰到各种奇怪的问题。本文会针对初学者常用的Windows* + Intel CPU的平台上安装配置Caffe做一个较为完整的总结。

Caffe的各个版本简介

官方版本:伯克利BVLC(Berkeley Vision And Learning Center) 版

https://github.com/BVLC/caffe
这个是Caffe的主版本,由伯克利大学维护。其他所有的Caffe版本都是由这个版本分支出去的。这个版本Caffe可以编译出Linux和Windows*版本,支持Nvidia的CUDA加速,但是对CPU的优化不好,而且有关安装和配置的文档很少。从这个版本编译Caffe,需要很强的自我学习和解决问题能力。

微软的Windows*版本

https://github.com/Microsoft/caffe 
微软自己维护的一个版本。这个版本简化了Caffe在Windows*下的步骤,自带了一个VS的Solution项目。这个版本同样支持基于CPU和CUDA的算法实现。

Intel Caffe优化版

https://github.com/intel/caffe 
Intel维护的版本,这个版本优化了Intel CPU的实现算法,同时提供对Intel Xeon CPU多核和多节点的支持。这个版本里有些算法库对Windows*支持不太好,所以这个分支编译出的Caffe主要还是运行在Linux的服务器平台上做训练工作。

Intel clCaffe 核显OpenCL优化版

https://github.com/01org/caffe 
Intel维护的另一个版本,相对于官网BVLC Caffe上的OpenCL分支,优化了基于Intel 核显GPU的OpenCL加速算法。这个版本同时支持Windows* 和Linux平台,适合在有Intel核显的CPU上做一些推理(Inference)场景的工作。

BVLC caffe的编译

安装编译所需要的软件

  • Visual Studio 2015
  • Anaconda + Python 64位版本 (Caffe官网推荐用Python 2.7或者3.5版本,如果用其他版本,编译时候会麻烦一些,我系统上用的是Python3.6版本) https://www.anaconda.com
  • cmake-3.9.3-win64-x64 https://cmake.org/
  • Git-2.14.2-64-bit https://git-scm.com/

配置Windows*的环境变量

为了避免等会CMAKE生成编译脚本的时候找不到一些依赖关系,有的没的路径都加一些,包括Cmake, Git, Ananconda以及Python的路径。

技术分享图片

Checkout 官网Caffe的代码

运行以下代码,用git从官网caffe上下载Windows*分支。

git clone https://github.com/BVLC/caffe.git
cd caffe
git checkout windows

修改caffe源码代码里的一些编译参数

  • 修改scriptsuild_win.cmd
    因为我们没有定义APPVEYOR,所以直接拉到else(大约69行)以后。
    先从APPVEYOR部分把这部分内容拷贝过来
if !PYTHON_VERSION! EQU 2 (
    set CONDA_ROOT=C:Miniconda-x64
)
:: Set python 3.5 with conda as the default python
if !PYTHON_VERSION! EQU 3 (
    set CONDA_ROOT=C:Miniconda35-x64
)
set PATH=!CONDA_ROOT!;!CONDA_ROOT!Scripts;!CONDA_ROOT!Libraryin;!PATH!

然后根据Windows*环境设置下图中红色方框的部分

1. 编译器是VS2015,设置MSVC_VERSION=14

2. 不需要NINJA来编译,设置WITH_NINJA=0

3. 没有NVDIA GPU,设置CPU_ONLY=1

4. Python版本为3.X,设置PYTHON_VERSION=3

5. 需要pyCaffe支持,设置BUILD_PYTHON=1

技术分享图片

  • 如果Python版本不是2.7或3.5,修改
    cmakeWindowsDownloadPrebuiltDependencies.cmake
    Caffe在编译时会自动从网上下载一个依赖库caffe-builder,这个cmake文件负责根据你系统里的VS版本和python版本自动下载预编译好的caffe-builder包。目前网上只有预编译好的VS2013/2015配python2.7/3.5的caffe-builder,如果是python3.6,编译时会报找不到VS2015配python3.6的caffe-builder包。解决方法有2个办法,要么用python3.5的包,要么自己编译caffe-builder。

    对于复用Python3.5的包,可以按照下图中所示,复制DEPENDENCIES_URL_1900_35和DEPENDENCIES_SHA_1900_35 2行,同时修改35为36。

技术分享图片

如果希望使用自己编译VS2015加python3.6的caffe-builder,除了要加入上段说到的2行修改外,还需要注释掉下图中WindowsDownloadPrebuiltDependencies.cmake的下图所示的绿色部分,这部分代码是负责从网上下载依赖包并且解压缩到本地目录的。同时要把caffe-builder编译出的libraries目录拷贝到C:Users[user name].caffedependencies这个目录下。(具体caffe-builder的编译,将在本文第3节详细介绍)

技术分享图片

开始编译

在caffe的目录下输入scriptsuild_win.cmd

技术分享图片

开始编译,一切顺利的话,大约10分钟后就编译好了

技术分享图片

验证一下编译的结果

接下来运行一下caffe项目自带的examples里的00-classification的代码来验证一下caffe是否能够正常运行

打开anaconda的命令行,进入caffe的examples目录,运行jupyter notebook

技术分享图片

在打开的notebook中打开caffe自带的例子 00-calssification.ipynb

技术分享图片

这是用一个训练好的Caffe模型来预测动物图片的例子,图片默认是使用Caffe项目里examplesimagecat.jpg。

一路Shift+Enter运行下去,看到第8步predicted输出

predicted class is: 281

第9步输出

output label: n02123045 tabby, tabby cat

预测结果是猫,说明caffe已经正确编译而且能运行了。 

技术分享图片

大功告成,开始你的Caffe学习之旅吧

Caffe依赖库Caffe Builder的编译

这一章主要介绍怎么编译Caffe-Builder项目

安装编译所需要的软件

编译软件的需求同2.1部分

  • Visual Studio 2015
  • Anaconda + Python 64位版本 https://www.leyou2.net/ www.anaconda.com
  • cmake-3.9.3-win64-x64 https://www.yongshiyule178.com cmake.org/
  • Git-2.14.2-64-bit https://www.baidu620.com git-scm.com/

配置Windows*的环境变量

环境变量的配置同2.2部分

下载Caffe-Builder源码

Caffe-Builder的开源项目位于 https://github.com/willyd/caffe-builder
目前最新的release为1.1版,可以从这里下载最新的release 1.1.0版的源码
https://github.com/willyd/caffe-builder/ www.leyouzaixian2.com releases

修改caffe-builder源码代码里的一些编译参数

修改主要基于2个方面:
首先在Windows*下Ninja编译系统不容易配置好,所以这里选择了Visual Studio 2015作为编译器。修改build_v140_x64.cmd,将红色部分的’Ninja’改为’Visual Studio 14 2015 Win64’

技术分享图片

其次是这个Release 1.1.0发布有点时间了,caffe-builder很多依赖的开源项目都搬家或者版本更新了,需要做相应的修改。

1) 修改packagesprotobuf www.huayiyul.com CmakeLists.txt
将图中所示部分protobuf包的Hash值从原来的
14a532a7538551d5def317bfca41dace
修改为
39d6a4fa549c0cce164aa3064b1492dc

技术分享图片

2) 修改packageshdf5CmakeLists.txt
将图中所示部分的URL从https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.16/src/CMkae-hdf5-1.8.16.zip 修改为 https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.16/src/CMkae-hdf5-1.8.16.zip

技术分享图片

编译

进到caffe-builder-1.1.0目录下,运行build_v140_x64.cmd开始编译

技术分享图片

屏幕输出

技术分享图片

最终编译生产的caffe依赖库文件放在buildlibraries目录下,你可以将这个libraries目录拷贝到caffe所需要的目录下。

小结

本篇文章主要介绍了官方BVLC Caffe在Windows*下的编译设置过程。BVLC Caffe提供CPU和Nvidia GPU版本的实现,但是在实际学习工作中,初级开发者的电脑平台通常不会装备昂贵的Nvidia显卡,而CPU版本的Caffe因为执行效率不高,只能用来做一些小型的”玩具”实验项目。



















以上是关于Caffe的各个版本简介的主要内容,如果未能解决你的问题,请参考以下文章

python Caffe片段

caffe 基本知识简介

Caffe简明教程1:Caffe简介

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

caffe依赖库简介

C程序存储结构