matlab下的caffe接口配置(Windows)

本文基于大部分网上方法 http://blog.****.net/d5224/article/details/51916178,外加一点自己的个人实际配置经历,环境变量在配置后尽管显示正确并且重启多次仍然无法生效,需要手动激活,具体如下。

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

matlab下的caffe接口配置(Windows) 

 matlab下的caffe接口配置(Windows) 

matlab下的caffe接口配置(Windows)

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

matlab下的caffe接口配置(Windows) 

(3)使用release编译以后,在Buildx64Release下会生成一个matcaffe文件夹,重点要有下面画框的文件。

matlab下的caffe接口配置(Windows)

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

matlab下的caffe接口配置(Windows) 

然后将release加入系统变量,

matlab下的caffe接口配置(Windows) 

“”重启计算机“”使环境变量生效。

matlab下的caffe接口配置(Windows)

若遇到找不到caffe_的问题,则可以采取作者的暴力解决方法。

matlab下的caffe接口配置(Windows)

把这Buildx64Releasematcaffe+caffeprivate这个文件夹里面的东西全都拷贝到matlab+caffeprivate覆盖,然后可能遇到下面问题caffe_.mexw64找不到引用模块问题,本文在配置时也遇到了这个问题,但是重启后就解决了应该是配置环境变量后没有重启的缘故。如还有问题则按下满的方法暴力解决。

(5)把Buildx64Debug下的所有的链接文件也就是dll文件也拷贝到这个文件夹去,原文件在这里

matlab下的caffe接口配置(Windows)

拷贝到matlab+caffeprivate以后是这样

matlab下的caffe接口配置(Windows) 

到这里为止,都是和网上其他方法一样的,但本人遇到了更奇葩的问题,即使如此配置,matlab始终显示找不到caffe接口,出现“找不到指定模块“的错误,最后怀疑是环境变量没生效导致,尽管已重启多次,并且在环境变量中显示正确,但仍然没生效,于是在cmd中输入命令caffe,出现如下界面,算是激活环境变量吧。。此后再次运行demo则运行正确。

matlab下的caffe接口配置(Windows)

(6)下载一下model文件放到caffe-mastermodelsvlc_reference_caffenet文件夹下

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

matlab下的caffe接口配置(Windows)  

标签文件如下

synset_words.txt地址:

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

测试一下效果,建立一个test.m测试文件,路径如下【忽视readlabel,我自己写的读文件,最后放到test.m里面了】

【最好在matlab里面加一下路径】

matlab下的caffe接口配置(Windows)

matlab下的caffe接口配置(Windows)

测试代码:

 1 %参考http://www.aichengxu.com/view/2422137  
 2 clear  
 3 clc  
 4   
 5 im = imread('../../examples/images/cat.jpg');%读取图片  
 6 figure;imshow(im);%显示图片  
 7 [scores, maxlabel] = classification_demo(im, 0);%获取得分第二个参数0为CPU,1为GPU  
 8 maxlabel %查看最大标签是谁  
 9 figure;plot(scores);%画出得分情况  
10 axis([0, 999, -0.1, 0.5]);%坐标轴范围  
11 grid on %有网格  
12   
13 fid = fopen('synset_words.txt', 'r');  
14 i=0;  
15 while ~feof(fid)  
16     i=i+1;  
17     lin = fgetl(fid);  
18     lin = strtrim(lin);  
19     if(i==maxlabel)  
20         fprintf('the label of %d is %s
',i,lin)  
21         break  
22     end  
23 end  

运行结果如下:
matlab下的caffe接口配置(Windows)