admin 管理员组文章数量: 887032
caffe.net matlab,【caffe
前言
按照微软的官方地址配置可能会出现一个问题caffe_.mexw64找不到引用模块问题,或者在matlab里面压根找不到caffe_这个函数,下面会提到这两个问题。还是按照步骤来吧
【PS1】有GPU同样按照下述步骤,进行即可
【PS2】文章在matlab2013a、matlab2014a、matlab2015b、matlab2016a、matlab2018a中配置成功,但是在高版本或者更低版本情况下可能会出现问题
matlab2015b下载地址:链接: 密码:o1fu
【注】比较建议安装matlab2015b和VS2013,因为如果涉及到混合编程,MATLAB2012之类的可能无法选择VS2013的编译器。
第一步
修改配置文件,使之支持matlab接口,修改两个地方,第一个是matlabsupport,第二个是matlabdir也就是你的matlab安装目录(对matlab桌面图标右键属性查看):
【PS】最近Microsoft 的github貌似更新了matcaffe中的caffe_.cpp文件,第十六行添加了对gpu/mxGPUArray.h的引用,可以在此步骤的IncludePath中添加MatlabDir,如下所示:
C:\Program Files\MATLAB\R2013a
$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)
$(MatlabDir);$(MatlabDir)\extern\include;$(IncludePath)
然后修改matcaffe中的第十六行#include"gpu/mxGPUArray.h"中修改为
#include
第二步
编译caffe文件夹里面的Windows里面的caffe.sln工程里面的matcaffe一项
【注】此时先选择release选项吧,别用debug了
第三步
使用release编译以后,在\Build\x64\Release下会生成一个matcaffe文件夹,重点要有下面画框的文件。
第四步
【此步是按照微软官方配置方法】这一步不会安装成功,不想看到这种出错情况不要直接跳入第五步,先通读一下第四步,然后除了路径和环境变量不用加,其余的该拷贝还是得拷贝~~~
首先将上一步生成的matcaffe加入matlab的路径中,直接在setpath里面设置
然后将release(如果你的caffe.sln是在Debug下生成的,就把Release换成Debug)加入系统变量path【手动copy进去就行了,我这里没加,因为我测试了一下貌似没啥效果,你们可以试试可以成功不】,加环境变量后记得重启一下
【更新日志】在2016.10.18编译matlab2015b的接口,发现这一步还是必须的,详细看第五步。
最后运行这个demo
遇到的就是我说的找不到caffe_的问题了
接下来我把这个\Build\x64\Release\matcaffe\+caffe\private这个文件夹里面的东西全都拷贝到\matlab\+caffe\private覆盖,然后遇到下面问题
第五步
暴力解决它,把\Build\x64\Debug下的所有的链接文件也就是dll文件也拷贝到这个文件夹去,原文件在这里
拷贝到\matlab\+caffe\private以后是这样
【更新日志】在2016.10.18试了一下matlab 2015b,结果还是出现了
Invalid MEX-file 'E:\caffe-2015b\caffe-windows\matlab\+caffe\private\caffe_.mexw64': 找不到指
定的程序。
出错 caffe.set_mode_cpu (line 5)
caffe_('set_mode_cpu');
出错 classification_demo (line 70)
caffe.set_mode_cpu();
然后试了许久才发现,还是需要在第四步中加入对应的matcaffe根目录,比如我在编译matlab2015b的caffe接口的时候使用了Debug模式(即生成的matcaffe存在于Debug目录下),那么我在环境变量中还是得添加E:\caffe-2015b\caffe-windows\Build\x64\Debug;,然后才解决了这个问题,比较奇怪的是,竟然在matlab2013a和matlab2015b下都能使用matlab/demo/classification.m了。不过解决了就是好事嘛~~
【更新日志】在2016.12.26网友测试了matlab2016a,加上已知评论区的朋友,已知在matlab2016下配置成功了三台机器
按照matlab2015b的配置完毕以后,会出现
错误使用 CHECK (line 4)
invalid Net handle
出错 caffe.Net (line 38)
CHECK(is_valid_handle(hNet_net), 'invalid Net handle');
出错 caffe.get_net (line 28)
net = caffe.Net(hNet);
出错 caffe.Net (line 33)
self = caffe.get_net(varargin{:});
出错 classification_demo (line 84)
net = caffe.Net(net_model, net_weights, phase);
按照评论区网友@zhaocaoou1435的方法“这个问题可以通过在matlab里,把\caffe-master\matlab\+caffe\private文件夹点开,再重新运行就可以了”。
哈哈,感觉这种解决办法好奇怪,原理暂时未知。
第六步
下载一下model文件放到caffe-master\models\bvlc_reference_caffenet文件夹下
下载地址 链接: 密码:yp9p
标签文件如下
synset_words.txt地址:
链接: 密码:zzzg
测试一下效果,建立一个test.m测试文件,路径如下【忽视readlabel,我自己写的读文件,最后放到test.m里面了】
【最好在matlab里面加一下路径】
代码如下:
%参考
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
运行之,效果
本文同步分享在 博客“风翼冰舟”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
本文标签: caffenet matlab caffe
版权声明:本文标题:caffe.net matlab,【caffe 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688431716h219191.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论