转载

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.

资源我已经分享在 我的百度网盘 ,下载安装即可

进行配置:

我们的目的很清楚:快速,少出问题。基于这个目的,我这里提供最傻瓜式的过程

  1. 去 这个csdn资源 下载,这个Caffe里面有很多的lib,是已经编译好了的Caffe

  2. 去 原作者git 下载原作者的Caffe

    为什么要下载两个Caffe工程呢?因为1中的Caffe虽然是编号的,有各种lib和include的,但是没有%caffe_pathcaffebuildMSVCmex这个工程,这个工程用来编译Matlab接口的。所以,下载2的caffe就是要这个工程文件。

  3. 将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正确加载。

原文  https://segmentfault.com/a/1190000008398275
正文到此结束
Loading...