继上次在anaconda3的中安装好了tensorflow,kera后环境后,配置了caffe在anaconda3中的接口,这次又想着试着配置matlab接口,说不定以后会用呢。好了,开始记笔记了。上次配置的文档在这里。至于如何在ubuntu下安装MATLAB2016b,请自行百度,可根据此教程。
cd /home/user/caffe
vim Makefile.config
##修改下面两行就行
MATLAB_DIR := /home/user
MATLAB_DIR := /home/user/MATLAB/R2016b
##我的MATLAB版本为2016b版,安装路径为/home/user
make matcaffe
##此时会有警告,提示版本不兼容问题,但是不影响后续步骤
sudo vim /etc/ld.so.conf #动态链接库的配置
/home/user/anaconda3/lib #添加这一项
sudo ldconfig #执行链接配置
locate libstdc++.so.6 #查看libstdc++.so.6所在位置
sudo rm -rf /home/user/MATLAB/R2016b/sys/os/glnxa64/libstdc++.so.6
sudo ln -s /home/user/anaconda3/lib/libstdc++.so.6 /home/user/MATLAB/R2016b/sys/os/glnxa64/libstdc++.so.6 #进行链接
接下来就可以进行编译了。
sudo make mattest
#最后结果可能会有error(不影响),但是编译一定要有下图所示的一系列过程,最好进行多次操作。
打开MATLAB,进行测试。
>>>cd ~/caffe/matlab/demo/
>>>im = imread('../../examples/images/cat.jpg');
>>>[scores, maxlabel] = classification_demo(im, 0); #0是CPU版,1是GPU版的.
#会发现有如下的错误,没有下载CaffeNet
Error using classification_demo (line 81)
Please download CaffeNet from Model Zoo before you run this demo
这时需要下载CaffeNet模型,下载地址:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel,将下载好的模型存放在home/user/caffe/models/bvlc_reference_caffenet文件夹下。接着编辑home/user/caffe/matlab/+caffe/Net.m文件夹下的Net.m文件。(如果不进行更改,matlab中执行scores = classification_demo(im, 0);会出错。参考)
#找到71行的那个函数
function delete (self)
if ~isempty(self.hNet_self)
caffe_('delete_net', self.hNet_self);
end
end
#改为
function delete (self)
if self.isvalid
caffe_('delete_net', self.hNet_self);
% if ~isempty(self.hNet_self)
% caffe_('delete_net', self.hNet_self);
end
end
至此,可以进行matlab加载caffe模型了。打开matlab,输入命令
>>>clear
>>>cd ~/caffe/matlab/demo/
>>>im = imread('../../examples/images/cat.jpg');
>>>scores = classification_demo(im, 0);
#输出结果为
Elapsed time is 0.083442 seconds.
Elapsed time is 1.756974 seconds.
Cleared 0 solvers and 1 stand-alone nets
>>>[score, class] = max(scores);
>>> [score,class]
#输出结果为
ans =
1×2 single row vector
0.2985 282.0000
此结果表明,matlab与caffe的配置成功连接。再测试,其他接口的完整性。
参考:https://blog.csdn.net/fangbinwei93/article/details/52865461
参考:https://blog.csdn.net/lanseyuansu/article/details/70937746
参考:https://blog.csdn.net/xiaojiajia007/article/details/72850247
参考:https://blog.csdn.net/baidu_28342107/article/details/82022342
参考:https://www.cnblogs.com/smartvessel/archive/2011/01/21/1940868.html
参考:https://blog.csdn.net/yuyantai1234/article/details/7701746