配好caffe后,编译MATLAB接口

首先声明我台式电脑的配置:Ubuntu 16.04  titan显卡 cuda 8.0 gcc 5.4 matlab 2014a

caffe 的配置可以参考我之前的博文(写的比较简单,主要是列出了几个错误的解决方案)caffe 配置

.........................................................................................................................................................................

以上caffe就已经配置好了,并且可以开心的在终端跑代码了。

但是如果要用matlab来跑代码的话,还是需要caffe的matlab 接口的 。

第一步:在Ubuntu上装matlab2014a

这一步简单,网上很多教程,按着上面做基本不会出什么问题。 我是按着这一篇教程来安装的 。教程可能同时还看了几篇博客。matlab2014a 下载链接 密码:4mu6

第二步:make matcaffe

在这一步你可能没有那么的一帆风顺。事实是配置matlab接口花了我快两天的时间(哭瞎~)刚开始配置接口时候看了很多博客都说说要把gcc降到4.7的版本,然后我就照做了。在make matcaffe 就报错了,出现了以下错误。

Makefile:518: recipe for target 'matlab/+caffe/private/caffe_.mexa64' failed 
然后网上搜索解决方案 :方案      修改makefile里面的CXXFLAGS,添加CXXFLAGS += -std=c++11.然后重新编译就可以了。可以不知道为什么,我的情况就是解决不了。

然后我就 make clean 了一下 。(悲剧开始了~)make clean 会把之前编译好的caffe也给一并删除了。

无奈,那就重新编译呗,心想反正编译也快(事实上是我想多了)

在重新编译caffe时候又出现了之前编译没有出现的问题。问题如下:

Makefile:562: recipe for target '.build_release/tools/convert_imageset.bin' failed
一直找不到解决方案~~无奈在这里卡了好几个小时。

最后转换思路:把在配matlab借口改变的地方恢复回去,再重新配置caffe 。最后有效

首先我将gcc4.7升级到先前的版本5.4 参考升级完后 make caffe ;make test;make runtest caffe 又配置好了。

这样做的原因是什么我也不知道,可能编译caffe时候对gcc的版本有要求。

然后现在又回到MATLAB接口配置问题上,这一次我没有将gcc降级 。在修改makefile里面的CXXFLAGS,添加CXXFLAGS += -std=c++11后,直接 make matcaffe 。最后编译成功。

至此make matcaffe 这一步结束。

结果如下:


显示了一个警告,说是gcc的版本不支持。这个没有关系,只是警告,不是错误,最下面显示还是MEX成功了。

第三步:make test

执行完命令后,又报错了。大致意思是:Matlab自带的库和Ubuntu的系统库之间发生了冲突,一言不和就废掉Matlab的自带库,使用Ubuntu系统库。


解决方案:刚开始我是直接在终端输入:

  export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64  
  export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6  
然后再 make mattest 成功,但是关掉终端后再打开测试还是会有同样的错误,于是我就直接在系统文件里面加入路径。

首先终端输入:

sudo gedit ~/.bashrc
然后把如下两个路径加到文件最下面。

    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64  
    export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6  
保存 退出,重启电脑。

make mattest 成功,结果如下:


至此 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个类别。

配好caffe后,编译MATLAB接口_第1张图片

完美~~~

基本上这就是我配置matlab接口的心得了,如有问题疑问欢迎留言。

主要参考博客:

http://blog.csdn.net/ture_dream/article/details/52649770

http://http://blog.csdn.net/rt5rte54654/article/details/54742981#comments

http://www.cnblogs.com/laiqun/p/6031925.html



你可能感兴趣的:(配好caffe后,编译MATLAB接口)