Caffe Windows
分享到:
Caffe Windows全称Convolutional Architecture for Fast Feature Embedding,Caffe的核心程序是用C++实现的,并提供了Python和Matlab的接口,也就是说你可以在python和matlab中调用caffe训练好的模型。目前搞深度学习的人大部分都是在gpu上跑程序的,一个ImageNet数据集有上千万张图片,加上深度学习使用的模型层数又比较多,跑一个程序所花费的时间都是以天为单位计算的,若在cpu上跑,可能需要一周的时间,但在gpu上可能只需两三天就好了。caffe就提供了一个便捷的方式,可以让你忽略cpu和gpu的差别,仅仅一个参数就可以让你的模型在cpu和gpu之间自由切换,大大提升了各位童鞋"发论文的速度。
1、表示:模型和优化以纯文本的模式定义,而不是以代码模式;
2、速度:运算速度对于最先进模型和海量数据是至关重要的;
3、模块化:新的任务和配置要求框架具有灵活性和扩展性;
4、开放性:科研和应用过程需要公共的代码、可参考的模型和可再现性;
5、社区:通过共同讨论和具体协议共同开发这个项目,学术研究、起步阶段的原型和工业应用可以共享各自的力量。
拥有以上诸多优势,经过两年多的版本迭代,Caffe框架已经在学术界和工业界得到了广泛的认可。
那么是什么原因促使caffe的运行速度比其它深度学习框架的运行速度快呢?
个人认为有以下几点:
1、数据存储:
Caffe生成的数据分为2种格式:
Lmdb和Leveldb
它们都是键/值对嵌入式数据库管理系统编程库。
虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集。
因此lmdb取代了leveldb成为Caffe默认的数据集生成格式。(这点得吐槽下了,没空的自行跳过此段。
之前用的是实验室服务器上安装的老版本的caffe,在运行MNIST和CIFAR-10的例子时,caffe官网教程上的还是生成*_leveldb格式的数据,但当我几天后跑ImageNet实例时,提示我找不到$CAFFE_ROOT/build/tools/目录下的caffe文件,后来还是通过和网友的tools目录下的文件对比才发现,编译后生成的老版本的caffe比新版的少了一堆东西,只好重新编译新版本,编译过程中发现缺少lmdb,查资料才发现,caffe已经用lmdb取代了leveldb,而返回去看之前的MNIST和CIFAR-10实例教程,发现教程上也已经将leveldb的部分改成lmdb了。还是提醒各位及时升级,有问题多看几遍官网教程)
2、数据传输:
当数据在前向后向传输时,caffe采用blobs的形式对数据进行传递或处理,它是该框架采用的标准的存储接口。
下面是百度百科上对blob的一段解释:
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库,caffe中的lmdb或leveldb)
在caffe中,blob是一个四位数组,不过在不同的场合,各维表示的意义不同
对于数据:Number*Channel*Height*Width
对于卷积权重:Output*Input*Height*Width
对于卷积偏置:Output*1*1*1
参数规格
CPU 架构x86_64
系统内存8-32GB
CPU1
GPU 型号NVIDIA TITAN X
GPU1-2
2、服务器
参数规格
CPU 架构x86_64
系统内存32 GB
每节点的 CPU 数目1-2
GPU 型号
Tesla M40
Tesla P100
每节点的 GPU 数目1-4
3、软件配置
参数版本
操作系统Ubuntu 14.04
GPU 驱动程序367.27 或更新版本
CUDA 工具包8.0
cuDNN 库v5.1
熟悉完CPU版本的配置以后,可以启用GPU的配置
本站提供的caffe无需配置第三方库的环境变量,直接就可以自动下载所需要的库,包含opencv和boost等。
注:VS2012的也有人写过,自行参考。此版严格只支持VS2013。此版本无需配置任何第三方环境哦,因为在项目属性里面都已经包含进去了,非常方便。
如果出现了一些文件打不开或者其它问题,第一可能是VS自身问题,第二可能你配置过其它caffe,修改过环境变量,导致找不到头文件之类的。
第一步、
下载caffe官网提供的工具包,复制Windows下CommonSettings.props.example,后缀改为CommonSettings.props,如下:
第二步、
由于我电脑无GPU,所以修改复制过来的CommonSettings.props配置文件:
第三步、
双击Windows下的caffe.sln,在VS2013中生成解决方案:
【注】里面的predict 是我自己写的测试项目,其它的才是官网自动生成的哈,官网自带的总共有16个项目,请注意核对
然后会弹出一个窗口,Nuget所需要的第三方库,可能会未响应,慢慢等吧。如果出现无法连接的那个问题,说明IP ping不过去,直接把问题复制到网上搜,有解决方法。
第四步、
当下载完毕第三方库,你的caffe-Windows并列文件夹下会有一个第三方库的文件夹
【注】caffe-windows和caffe-master对caffe.cpp编译以后下载的第三方库都是十六个文件夹。
最好核对一下文件,免得没下载完就被你关掉了。
这个时候,当下载完毕,VS仍在继续执行生成任务,最终可能失败,原因下面会提示说无法打开libcaffe.lib之类的error。解决方法是直接对libcaffe重新生成,或者直接生成一次
当这个文件生成成功以后,重复一下上一步,对所有文件再重新生成一下,这时候应该不会出现libcaffe.lib无法打开的错误了。
【PS】按照这个流程编译下来很少会出现无法解析外部符号问题,出现这种问题有很大可能是静态库没连接好,但是微软的所有库是自动下载的,除非没下载全。
还有关于一些.h 头文件未找到,请自行核对此头文件的位置,然后再配置文件中随便找个IncludePath(此includePath必须在编译时候被使用),将路径加进去即可,同时也必须注意是否需要相关的lib文件。
不过帮忙配置挺多电脑以后,基本没遇到太多问题。
第五步
设置一下运行项,解决方案'caffe'->属性
或者下面直接单启动项目是caffe也行,不过最好改一下,原因相信玩过VS的都清楚,如果是单启动项目,那么在你重新编译工程的时候,只会运行次单启动项目,其它项目不会运行,这就是为什么很多人编译以后发现Release或者Debug文件夹下只有caffe.exe而没有conver_imageset.exe等可执行文件的原因。
第六步
运行caffe.cpp,直接双击打开caffe.cpp,然后ctrl+f5直接编译,出现如下命令窗口说明编译成功
介绍
caffe支持cpu和gpu的无缝切换,这一点在现在的大数据时代显得尤为重要。但是对于我们这些正常人来说,如果让我们在gpu上进行编程,恐怕都要傻眼了,这时caffe就提供了一个便捷的方式,可以让你忽略cpu和gpu的差别,仅仅一个参数就可以让你的模型在cpu和gpu之间自由切换,大大提升了各位童鞋‘发论文’的速度。(还有一个python工具包也可以让你方便的在cpu和gpu之间进行切换,那就是Theano了,本人最初正是因为只有python工具包才有支持gpu编程的功能,所以才弃matlab从python的)特色
Caffe的设计考虑了以下几个方面:1、表示:模型和优化以纯文本的模式定义,而不是以代码模式;
2、速度:运算速度对于最先进模型和海量数据是至关重要的;
3、模块化:新的任务和配置要求框架具有灵活性和扩展性;
4、开放性:科研和应用过程需要公共的代码、可参考的模型和可再现性;
5、社区:通过共同讨论和具体协议共同开发这个项目,学术研究、起步阶段的原型和工业应用可以共享各自的力量。
拥有以上诸多优势,经过两年多的版本迭代,Caffe框架已经在学术界和工业界得到了广泛的认可。
那么是什么原因促使caffe的运行速度比其它深度学习框架的运行速度快呢?
个人认为有以下几点:
1、数据存储:
Caffe生成的数据分为2种格式:
Lmdb和Leveldb
它们都是键/值对嵌入式数据库管理系统编程库。
虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集。
因此lmdb取代了leveldb成为Caffe默认的数据集生成格式。(这点得吐槽下了,没空的自行跳过此段。
之前用的是实验室服务器上安装的老版本的caffe,在运行MNIST和CIFAR-10的例子时,caffe官网教程上的还是生成*_leveldb格式的数据,但当我几天后跑ImageNet实例时,提示我找不到$CAFFE_ROOT/build/tools/目录下的caffe文件,后来还是通过和网友的tools目录下的文件对比才发现,编译后生成的老版本的caffe比新版的少了一堆东西,只好重新编译新版本,编译过程中发现缺少lmdb,查资料才发现,caffe已经用lmdb取代了leveldb,而返回去看之前的MNIST和CIFAR-10实例教程,发现教程上也已经将leveldb的部分改成lmdb了。还是提醒各位及时升级,有问题多看几遍官网教程)
2、数据传输:
当数据在前向后向传输时,caffe采用blobs的形式对数据进行传递或处理,它是该框架采用的标准的存储接口。
下面是百度百科上对blob的一段解释:
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库,caffe中的lmdb或leveldb)
在caffe中,blob是一个四位数组,不过在不同的场合,各维表示的意义不同
对于数据:Number*Channel*Height*Width
对于卷积权重:Output*Input*Height*Width
对于卷积偏置:Output*1*1*1
Caffe系统配置
1、硬件配置参数规格
CPU 架构x86_64
系统内存8-32GB
CPU1
GPU 型号NVIDIA TITAN X
GPU1-2
2、服务器
参数规格
CPU 架构x86_64
系统内存32 GB
每节点的 CPU 数目1-2
GPU 型号
Tesla M40
Tesla P100
每节点的 GPU 数目1-4
3、软件配置
参数版本
操作系统Ubuntu 14.04
GPU 驱动程序367.27 或更新版本
CUDA 工具包8.0
cuDNN 库v5.1
使用说明
Windows系统下VS2013+caffe的安装熟悉完CPU版本的配置以后,可以启用GPU的配置
本站提供的caffe无需配置第三方库的环境变量,直接就可以自动下载所需要的库,包含opencv和boost等。
注:VS2012的也有人写过,自行参考。此版严格只支持VS2013。此版本无需配置任何第三方环境哦,因为在项目属性里面都已经包含进去了,非常方便。
如果出现了一些文件打不开或者其它问题,第一可能是VS自身问题,第二可能你配置过其它caffe,修改过环境变量,导致找不到头文件之类的。
第一步、
下载caffe官网提供的工具包,复制Windows下CommonSettings.props.example,后缀改为CommonSettings.props,如下:
第二步、
由于我电脑无GPU,所以修改复制过来的CommonSettings.props配置文件:
第三步、
双击Windows下的caffe.sln,在VS2013中生成解决方案:
【注】里面的predict 是我自己写的测试项目,其它的才是官网自动生成的哈,官网自带的总共有16个项目,请注意核对
然后会弹出一个窗口,Nuget所需要的第三方库,可能会未响应,慢慢等吧。如果出现无法连接的那个问题,说明IP ping不过去,直接把问题复制到网上搜,有解决方法。
第四步、
当下载完毕第三方库,你的caffe-Windows并列文件夹下会有一个第三方库的文件夹
【注】caffe-windows和caffe-master对caffe.cpp编译以后下载的第三方库都是十六个文件夹。
最好核对一下文件,免得没下载完就被你关掉了。
这个时候,当下载完毕,VS仍在继续执行生成任务,最终可能失败,原因下面会提示说无法打开libcaffe.lib之类的error。解决方法是直接对libcaffe重新生成,或者直接生成一次
当这个文件生成成功以后,重复一下上一步,对所有文件再重新生成一下,这时候应该不会出现libcaffe.lib无法打开的错误了。
【PS】按照这个流程编译下来很少会出现无法解析外部符号问题,出现这种问题有很大可能是静态库没连接好,但是微软的所有库是自动下载的,除非没下载全。
还有关于一些.h 头文件未找到,请自行核对此头文件的位置,然后再配置文件中随便找个IncludePath(此includePath必须在编译时候被使用),将路径加进去即可,同时也必须注意是否需要相关的lib文件。
不过帮忙配置挺多电脑以后,基本没遇到太多问题。
第五步
设置一下运行项,解决方案'caffe'->属性
或者下面直接单启动项目是caffe也行,不过最好改一下,原因相信玩过VS的都清楚,如果是单启动项目,那么在你重新编译工程的时候,只会运行次单启动项目,其它项目不会运行,这就是为什么很多人编译以后发现Release或者Debug文件夹下只有caffe.exe而没有conver_imageset.exe等可执行文件的原因。
第六步
运行caffe.cpp,直接双击打开caffe.cpp,然后ctrl+f5直接编译,出现如下命令窗口说明编译成功
展开更多
Caffe Windows下载地址
- 需先下载高速下载器:
- 专用下载:
- 其它下载: