Windows下编译Caffe并编译Matlab接口
介绍:
Caffe是一个深度学习的框架,在windows下编译Caffe。
实际上Linux下会更舒服,由于我的Linux下安装不了CUDA,只能用CPU跑,很慢,于是决定在windows环境下配置caffe及其matlab接口
系统环境:
Windows 64bit
VS2012
MATLAB2013A
CUDA6.5
安装CUDA:
官网的CUDA已经是7.0了,为了尽可能减少出现的问题,我们就跟作者大大同步,用cuda6.5.
资源我已经分享在我的百度网盘,下载安装即可
进行配置:
我们的目的很清楚:快速,少出问题。基于这个目的,我这里提供最傻瓜式的过程
去这个csdn资源下载,这个Caffe里面有很多的lib,是已经编译好了的Caffe
去原作者git下载原作者的Caffe
为什么要下载两个Caffe工程呢?因为1中的Caffe虽然是编号的,有各种lib和include的,但是没有%caffe_pathcaffebuildMSVCmex这个工程,这个工程用来编译Matlab接口的。所以,下载2的caffe就是要这个工程文件。将MSVCmex这个工程复制到1中的caffebuild里面,用VS2012打开工程,直接运行发现不能编译。修改如下
用editplus打开matcaffe.vcxproj中,把里面所有的cuda6.0改成cuda6.5,之后把其中所有的C:programmematlab改为你自己的matlab地址。保存。
操作:
编译好之后得到mex文件,这是类似于C++工程的dll文件,是matlab的动态链接库(姑且这么理解),进入matlab2013a,cd到caffematlabcaffe,输入
im = imread('peppers.png'); [scores, maxlabel] = matcaffe_demo(im,1);
如果提示错误,可能是在examplesimagent没有训练集文件caffe_reference_imagenet_model,网上有相关文件,不再多说。
至于python接口编译我认为与此原理类似,使用这个工程改路径,可能最终生成dll改为pyd然后import caffe。还没有试,仅提供这种思路。
原csdn上面评论和一些答复:
QA1:
qq1005896486 2015-04-24 16:55发表:
博主,你说编译MSVCmex生成mex文件,可是据我观察,在此文件夹的/bin文件下已经存在一个caffe.mex文件了呢,怎么还需要生成呢?生成的mex的文件名称是什么?谢谢
Re: Jungieve 2015-04-24 19:01发表
回复qq1005896486:/bin确实有一个mex,我试过,用不了。
我个人揣测,是原作者自己配置成功好的mex文件,但是它的CUDA版本和matlab路径跟我们不一样,所以直接拿来肯定是用不了的。所以需要自己编译一个适用于自己cuda版本的mex。
mex就是dll文件,即使mex路径配置不对也可能编译出来mex文件,即caffe.mex,但是最后调用时候肯定会出现“mexw64找不到指定的模块".谢谢
QA2:
chriszdm 2015-05-11 20:53发表:
你好,改了cuda和matlab设置,编译成功后,调用时找不到指定模块,我想问一下编译的时候,项目属性有哪些设置的。
Re: Jungieve 2015-05-12 20:03发表:
回复chriszdm:你好,首先在编译caffemat之前,最好是将CaffeRoot/bin下面的所有dll全部复制到CaffeRoot/matlab/caffe里面
Re: chriszdm 2015-05-12 21:13发表:
回复Jungieve:OK了,非常感谢。
QA3:
queen_wangner 2015-07-23 19:31发表:
你好,我编译运行的时候,生成出错了,提示
....matlabcaffematcaffe.cpp(275): error C3861: “random”: 找不到标识符
‘init_key = random(); ‘
这个地方出错了,怎么办呀
Re: Jungieve 2015-07-26 18:10发表:
回复queen_wangner:你好,可能是你的cuda版本与VS版本对应不上。random()找不到一般为cuda正确加载。