首先声明我台式电脑的配置: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个类别。
完美~~~
基本上这就是我配置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