微软官方caffe之 matlab接口配置

使用环境

VS2013、Matlab2013a、Win10 64位


第一步

修改配置文件,使之支持matlab接口,修改两个地方,第一个是matlabsupport,第二个是matlabdir也就是你的matlab安装目录(对matlab桌面图标右键属性查看):




【PS】最近Microsoft 的github貌似更新了matcaffe中的caffe_.cpp文件,第十六行添加了对gpu/mxGPUArray.h的引用,可以在此步骤的IncludePath中添加MatlabDir,如下所示:

[cpp]  view plain  copy
 print ?
  1. <PropertyGroup Condition="'$(MatlabSupport)'=='true'">  
  2.     <MatlabDir>C:\Program Files\MATLAB\R2013a</MatlabDir>  
  3.     <LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)</LibraryPath>  
  4.     <IncludePath>$(MatlabDir)\extern\include;$(IncludePath)</IncludePath>  
  5. </PropertyGroup>  

然后修改matcaffe中的第十六行#include"gpu/mxGPUArray.h"中修改为

[cpp]  view plain  copy
 print ?
  1. #include<toolbox\distcomp\gpu\extern\include\gpu\mxGPUArray.h>  

第二步

编译caffe文件夹里面的Windows里面的caffe.sln工程里面的matcaffe一项

【注】此时先选择release选项吧,别用debug了



第三步

使用release编译以后,在\Build\x64\Release下会生成一个matcaffe文件夹,重点要有下面画框的文件。


第四步

【此步是按照微软官方配置方法】这一步不会安装成功,不想看到这种出错情况不要直接跳入第五步,先通读一下第四步,然后除了路径和环境变量不用加,其余的该拷贝还是得拷贝~~~

首先将上一步生成的matcaffe加入matlab的路径中,直接在setpath里面设置


然后将release加入系统变量path。并将第三步生成的caffe_mexw64文件拷贝到matlab\+caffe\private,如下图所示:


 再次运行test.m文件,会出现如下错误:


这是缺少model文件所致,下载一个即可。

下载一下model文件放到caffe-master\models\bvlc_reference_caffenet文件夹下

下载地址  链接:http://pan.baidu.com/s/1geUv01l 密码:yp9p


第五步

再次运行test.m,会报如下错误:

[plain]  view plain  copy
  print ?
  1. 错误使用 CHECK (line 4)  
  2. invalid Net handle  
  3.   
  4. 出错 caffe.Net (line 38)  
  5. CHECK(is_valid_handle(hNet_net), 'invalid Net handle');  
  6.   
  7. 出错 caffe.get_net (line 28)  
  8. net = caffe.Net(hNet);  
  9.   
  10. 出错 caffe.Net (line 33)  
  11. self = caffe.get_net(varargin{:});  
  12.   
  13. 出错 classification_demo (line 84)  
  14. net = caffe.Net(net_model, net_weights, phase);  

这个问题可以通过在matlab里,把\caffe-master\matlab\+caffe\private文件夹点开,再重新运行就可以了。还真的就好了。

第六步

标签文件如下

synset_words.txt地址:

链接:http://pan.baidu.com/s/1c24ty6W 密码:3z7y

测试一下效果,建立一个test.m测试文件,路径:跟classification_demo.m放在同一目录下。


test.m源码如下:

%参考http://www.aichengxu.com/view/2422137
clear
clc

im = imread('../../examples/images/cat.jpg');%读取图片
figure;imshow(im);%显示图片
[scores, maxlabel] = classification_demo(im, 0);%获取得分第二个参数0为CPU,1为GPU
maxlabel %查看最大标签是谁
figure;plot(scores);%画出得分情况
axis([0, 999, -0.1, 0.5]);%坐标轴范围
grid on %有网格


fid = fopen('synset_words.txt', 'r');
i=0;
while ~feof(fid)
    i=i+1;
    lin = fgetl(fid);
    lin = strtrim(lin);
    if(i==maxlabel)
        fprintf('the label of %d is %s\n',i,lin)
        break
    end
end


运行之,效果


到此,所有的坑都填了。搞定!


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值