如何快糙好猛地在Windows下编译CAFFE并使用其matlab和python接口

一、准备

  需要用到的东西我已经帮大家全部准备好了,有3月31日刚刚从caffe官方dev分支fork过来的源代码:https://www.github.com/happynear/caffe-windows。有我自己亲手制作的第三方库http://pan.baidu.com/s/1sjr37tj ,在源码的根目录下建立个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文件。

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

主题推荐
windows matlab python visual studio 2012 批处理文件
猜你在找
Deep Learning 开发工具Theano安装配置
迁移学习&自我学习
思想有多远就能走多远
pwnstep1-2 writeup
Cocos2d-x学习一HelloWorld
随便写写
采集baidu搜索信息的java源代码实现使用了htmlunit和Jsoup
中国科学院的樊彬老师图像特征描述符方面的综述
2014年传智Itcast C++培训3期视频全套
bus device driver 三者之间的关系
【精品课程】Spark+Scala套餐值不值,看你敢不敢学!
【精品课程】高安定PMP认证网络套餐5折优惠
【精品课程】C语言及程序设计学习套餐
【精品课程】学项目管理系列视频教程之基础篇(上)
【精品课程】Java Web高级技术
准备好了么? 跳吧             ! 更多职位尽在 CSDN JOB
C#
广州十五分钟电子商务有限公司
|
6-8K/月
我要跳槽
.net/c#软件开发主管(双休,6.5h/天)
广州萌元信息科技有限公司
|
8-10K/月
我要跳槽
C#软件开发工程师
广州堂会餐饮娱乐有限公司
|
4-8K/月
我要跳槽
Python
广州图普网络科技有限公司
|
6-8K/月
我要跳槽
查看评论
2楼  pds2008 昨天 23:54发表 [回复]
我也遇到了Invalid MEX-file 'D:\caffe-windows\matlab\caffe\caffe.mexw64': 找不到指定的模块。这样的错误,是不是代码有问题?
Re:  happynear 4小时前发表 [回复]
回复pds2008:先确定exe能否运行,很多人的bin目录没有加到环境变量中,而matlab又不会给出缺少dll的错误信息。
1楼  noraiein 昨天 09:15发表 [回复]
生成的mexw64文件,在matlab中运行代码,会显示Invalid MEX-file E:\caffe.mexw64找不到指定的模块,求问该如何解决。是因为我编译出的文件有问题吗,但是我按照说的改了cuda的版本和matlab的路径。还是因为我的代码有问题?
Re:  happynear 昨天 09:54发表 [回复]
回复noraiein:你确定有E:\caffe.mexw64这个文件?
如果正确生成了,请把matlab路径切换到./matlab/caffe再运行。
Re:  mzmssg 昨天 13:05发表 [回复]
回复happynear:我也碰到这样的问题,编译成功但这个mexw64文件matlab找不到模块,请问层主解决了吗,我是Vs2013
Re:  happynear 4小时前发表 [回复]
回复mzmssg:先确定exe能否运行,很多人的bin目录没有加到环境变量中,而matlab又不会给出缺少dll的错误信息。




1.系统环境:

Windows 64bit

VS2012

MATLAB2013A

CUDA6.5


2.安装CUDA:

官网的CUDA已经是7.0了,为了尽可能减少出现的问题,我们就跟作者大大同步,用cuda6.5.

资源我已经分享在我的百度网盘http://pan.baidu.com/s/1ntsXl3N,下载安装即可


3.进行配置:

我们的目的很清楚:快速,少出问题。基于这个目的,我这里提供最傻瓜式的过程1.去http://download.csdn.net/detail/yangkequn/8108035下载,这个Caffe里面有很多的lib,是已经编译好了的Caffe2.去https://github.com/niuzhiheng/caffe下载原作者的Caffe为什么要下载两个Caffe工程呢?因为1中的Caffe虽然是编号的,有各种lib和include的,但是没有%caffe_path/caffe/build/MSVCmex这个工程,这个工程用来编译Matlab接口的。所以,下载2的caffe就是要这个工程文件。3.将MSVCmex这个工程复制到1中的caffe/build里面,用VS2012打开工程,直接运行发现不能编译。修改如下用editplus打开matcaffe.vcxproj中,把里面所有的cuda6.0改成cuda6.5,之后把其中所有的C:/programme/matlab改为你自己的matlab地址。保存。

4.操作:

编译好之后得到mex文件,这是类似于C++工程的dll文件,是matlab的 动态链接库(姑且这么理解),进入matlab2013a,cd到caffe/matlab/caffe,输入im = imread('peppers.png');
[scores, maxlabel] = matcaffe_demo(im,1);
如果提示错误,可能是在examples/imagent没有训练集文件caffe_reference_imagenet_model,网上有相关文件,不再多说。至于 python接口编译我认为与此原理类似,使用这个工程改路径,可能最终生成 dll改为pyd然后import caffe。还没有试,仅提供这种思路。

你可能感兴趣的:(如何快糙好猛地在Windows下编译CAFFE并使用其matlab和python接口)