在Windows下编译CAFFE并使用其matlab和python接口

转自:http://blog.csdn.net/happynear/article/details/45372231

零、最近更新

2015/05/29 发现上个版本的lmdb.lib使用了别人在vs2013下编译的版本,现改为vs2012版; 
2015/05/29 添加了提取任意层特征的matlab接口,使用方法:

<code class="language-matlab hljs  has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">OUTPUT = caffe(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'get_features'</span>, INPUT, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'layername1,layername2...'</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

例如:f = caffe('get_features', H, 'conv51,pool5'); 返回的f为2*1的cell类型,里面记录了层的名称和该层的特征。

一、准备

  需要用到的东西我已经帮大家全部准备好了,有3月31日刚刚从caffe官方dev分支fork过来的源代码:https://www.github.com/happynear/caffe-windows。有我自己亲手制作的第三方库http://pan.baidu.com/s/1gdAfUPt ,在源码的根目录下建立个3rdparty文件夹,把文件解压进去就可以了。 
  解压好之后,要将3rdparty/bin文件夹添加到系统目录,这样才能让程序找到这些第三方库的dll。 
  然后是Visual Studio 2012,因为我的第三方库都是VS2012环境下编译的,所以用其他版本VS的请自行编译。
  最后是CUDA和MKL了,MKL是可选的,大家可以去Intel官方申请,如果不用cpu模式的话其实也无所谓,在第三方库包中我还提供了openblas的库文件。

二、编译

  编译非常简单,分为以下几步: 
  1、双击./src/caffe/proto/extract_proto.bat批处理文件来生成caffe.pb.h 和caffe.pb.cc两个c++文件,和caffe_pb2.py这个python使用的文件。 
  2、打开./build/MSVC/MainBuilder.sln,打开之后切换编译模式至Release X64模式。如果打开之后显示加载失败,可能你的CUDA版本和我的不一致,我的是CUDA 6.5版,这时就要用记事本打开./build/MSVC/MainBuilder.vcxproj,搜索CUDA 6.5,把这个6.5换成你自己的CUDA版本,就可以正常打开了。 
  3、右键点击左边的MainCaller项目,选择属性,在C/C++选项卡中,把附加包含目录中的cuda include目录改成你自己的;在链接器选项卡中,把附加库目录中的cuda library目录也改成你自己的。 
  4、点上边工具栏中的绿色三角编译吧。 
   
  如果要用matlab wrapper来提取特征、观察训练好的权重的话呢,只需要把matcaffe项目里面的cuda、matlab目录修改成你自己的,然后编译,你就能从matlab/caffe文件夹里面找到一个叫caffe.mexw64的文件啦。 
  python的wrapper类似,把pycaffe项目里的目录改成你自己的,就能在python/caffe文件夹中生成_caffe.pyd的python dll文件。

三、测试

  到 http://pan.baidu.com/s/1mgl9ndu 下载已经转换好的MNIST的leveldb数据文件,解压至./examples/mnist文件夹中,然后运行根目录下的run_mnist.bat即可开始训练,训练日志会保存在./log文件夹中,以INFO开头,txt格式的日志文件中。

ps:如果你编译成功的话,不要忘了给我的github工程点个star! 
star

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章