Caffe+Matlab配置

本文详细介绍了如何在Ubuntu系统中配置Caffe与Matlab的接口,包括安装Matlab、修改Makefile.config、编译Caffe和Matcaffe、解决库文件版本不兼容问题以及进行编译测试。主要涉及libstdc++和OpenCV库的链接调整,确保Matlab和Caffe使用同一版本库。最后提供了成功配置后的测试步骤和参考文献。
摘要由CSDN通过智能技术生成

一、caffe与matlab接口
首先是安装matlab,然后是进行caffe与matlab的接口;
1 安装好matlab——按照正常步骤进行安装即可
2 修改Makecaffe.config——编译matcaffe之前需要将Makefile.config,由于我的MATLAB的路径是/home/xaver/local/matlab(这个路径指的是包含/bin这个文件夹的那一层目录),所以Makefile.config修改如下,记得去掉#号
MATLAB_DIR:= /home/xaver/local/matlab
3 编译——然后就可以编译了,进到caffe的根目录,我的是/home/xaver/deeplearning/caffe-master
Make clean (注意sudo权限问题)
Make caffe –j4
Make matcaffe
编译时,我的有出现警告GCC版本太低,但是下面确实写了编译成功,因为之前试着降版本到4.7,但是后来在编译文件时出现了很多错误,主要报错地点在/examples和/tools中,不过网上有很多通过降级成功的,这条路不再详细叙述
这里写图片描述
4 然后编译mattest,测试下编译好的matcaffe是否能用——在这一步一般不会编译成功,这里需要修改两个领域共计四个库的链接。其原理是因为matlab与caffe通过接口进行编译的过程中,两者所引用的库应当指向同一个即可。
这些库包含有:第一类库,libstdc++.so.6;第二类库,libopencv_core.so.2.4,libopencv_highgui.so.2.4,libopencv_imgproc.so.2.4
具体的方法基本思想是找到matlab和caffe所依赖的这些库的位置,然后通过某种方式建立连接即可。
1 找到matlab中这些库的位置
libstdc++.so.6:它在matlab中的位置时 matlab/sys/os/glnxa64/中
libopencv_core.so.2.4,libopencv_highgui.so.2.4,libopencv_imgproc.so.2.4:matlab/bin/glnxa64中
而且通过ls libopencv_* -l 命令可以看到这些库通过链接的都是这个文件夹中自己的库。
2 找到caffe所依赖的这些库的位置
这四个库资源都是在:/usr/lib/x86_64-linux-gnu中
3 进行链接
1)首先需要备份或删除matlab中的那几个库的软链接,建议备份,命令如下:
Sudo mv /home/xaver/local/MATLAB/sys/os/glnxa64/ libstdc++.so.6 /home/xaver/local/MATLAB/sys/os/glnxa64/ libstdc++.so.6
注意以上路径并不一定就是你的路径,物理意义上表示的是你的matlab所安装的路径
2)然后是进行链接,使用如下命令
Sudo ln –s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 / /home/xaver/local/MATLAB/sys/os/glnxa64/ libstdc++.so.6
这条命令的前边的地址是需要链接的对象,俗称卖家,后面是需求链接那个对象的地址,俗称买方,买方从卖方那里获取库的使用。
对于其他三个库,照此方法进行链接,但是要注意按照步骤一和二来修改相应的地址
4 再次使用sudo make mattest进行测试
5 这里提供一个实例,来进行实际的matlab的操作
<1>下载bvlc_reference_caffenet.caffemodel
链接:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel
下载好之后放入文件夹/caffe-master/models/bvlc_reference_caffenet 这是因为一会运行的demo要使用这个模型。
<2>在终端输入命令“matlab”(打不开的自己去添加PATH)打开Matlab,切换到目录/caffe-master/matlab/demo/(这很重要)
<3>输入命令 run(‘classification_demo.m’) 或者双击打开classification_demo.m直接点击上面控制台上的“运行”即可,不需要输入参数。
<4>输出是一个1000×1的矩阵,因为ImageNet数据集有1000个类别。

参考文献:
[1]caffe与matlab接口:http://blog.csdn.net/fangbinwei93/article/details/52865461
[2]实例操作:http://www.cnblogs.com/laiqun/p/6031925.html

以下是经历过程

http://blog.csdn.net/fangbinwei93/article/details/52865461
我成功啦 成功地完成了调试matlab!
在没有更改g++的情况下,实现了matlab与caffe的接口,其本质原因是基于matlab所使用的libstdc以及libopencv等文件与caffe使用的不是用一个,使用
Ldd ~/deepLearning/caffe/matlab/+caffe/private/caffe_mexa64 中所连接的lib文件是指向系统的/usr/lib/x86_64-linux-gnu中,而在matlab命令框中输入!Ldd ~/deepLearning/caffe/matlab/+caffe/private/caffe_mexa64,其指向的是matlab本身的库,然后我进到matlab本身的库里面,如matlab。Sys/os/glnx64/libstdc++.so.6这个软链接指向的是matlab本身自带的libstdc++.so.6
修改好之后,再次在编译caffe_,mexa64上出错,观察这里的提示:提示_ZN2cv8imencodeERKNSt 很长一串的东西,经过一番google,找到点眉目,我再次对比了终端下和MATLAB下所引用的库,感觉应该是opencv那几个库的问题(并不能保证所有人都是这几个库出问题),我像上面一样,改了下面3个库的软链接,对于matlab来说,opencv位于/matlab/bin/glnx64下,对于系统而言,与之前一样,在/usr/lib/x86_64-linux-gnu中,使用删除原始链接,在添加新的软链接的方式即可,主要针对的三个库分别为:libopencv_core.so.2.4 libopencv_highgui.so.2.4 libopencv_imgproc.so.2.4这三个库,然后就可以了编译成功make mattest了,主要参考的文章是这个
http://blog.csdn.net/fangbinwei93/article/details/52865461

然后使用这个上面的一个例子进行编译
http://www.cnblogs.com/laiqun/p/6031925.html

http://blog.csdn.net/fangbinwei93/article/details/52865461
这里面有一句有意思的代码
在matlab命令窗口输入system(‘exho LDLIBRARYPATH)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值