caffe +MATLAB配置
来源:互联网 发布:matlab中值滤波算法 编辑:程序博客网 时间:2024/05/19 17:24
首先需要安装MATLAB,我装的是MATLAB2014a,安装完成后,可以在~/.bashrc中添加环境变量,这样在终端直接输入matlab就能打开了
export PATH=/usr/local/MATLAB/R2014a/bin:$PATH
配置MATLAB前,我已经配置好了caffe GPU的版本,编译matcaffe之前需要修改Makefile.config,我MATLAB的路径是/usr/local/MATLAB/R2014a
所以Makefile.config修改如下,记得去掉#号
MATLAB_DIR := /usr/local/MATLAB/R2014a
然后就可以编译了,进到caffe的根目录,我是~/caffe
make clean make caffe -j4 make matcaffe
编译的时候,我有出现警告说我的gcc版本太高了,不过应该是编译成功了,但是没有去管它,有可能是这个原因导致我下面遇到了很多问题?我的gcc版本是5.4.1,没有去降它的版本,因为前面caffe和cuda的编译都涉及到这个版本问题,变来变去挺麻烦的。
然后编译下mattest
,测试下编译好的matcaffe是否能用
make mattest
这时会报错,MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version GLIBCXX_3.4.20
not found 这种样子的错误,这是matlab所引用的库和caffe不同引起的(应该是gcc版本不同造成的),在matlab命令窗口输入system('exho $LD_LIBRARY_PATH'),发现里面的路径包含/usr/local/MATLAB/R2014a/sys/os/glnxa64、/usr/local/MATLAB/R2014a/bin/glnxa64,这两个路径里都有
libstdc++.so.6,但是它不包含GLIBCXX_3.4.20,所以让MATLAB找到系统的libstdc++.so.6就行了,所以看到一种方法是
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libstdc++.so.6
我采用另一种修改链接的方法
分别在终端下输入
ldd ~/caffe/matlab/+caffe/private/caffe_.mexa64
在MATLAB命令窗输入
!ldd ~/caffe/matlab/+caffe/private/caffe_.mexa64
MATLAB会显示/libstdc++.so.6的默认路径为libstdc++.so.6 => /usr/local/MATLAB/R2014a/bin/glnxa64/libstdc++.so.6 (0x00007f9a9cb2b000),而在终端中显示了它的真实路径:/usr/lib/x86_64-Linux-gnu/libstdc++.so.6
解决方法如下
sudo mv /usr/local/Matlab/R2014a/sys/os/glnxa64/libstdc++.so.6 /usr/local/Matlab/R2014a/sys/os/glnxa64/libstdc++.so.6_back sudo mv /usr/local/MATLAB/R2014a/sys/os/glnxa64/ libstdc++.so.6 /usr/local/MATLAB/R2014a/sys/os/glnxa64/ libstdc++.so.6_backsudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/MATLAB/R2014a/bin/glnxa64/libstdc++.so.6
解决这个问题后,又有新的问题出现,提示_ZN2cv8imencodeERKNSt 很长一串的东西,经过一番google,找到点眉目,我再次对比了终端下和MATLAB下所引用的库,感觉应该是opencv那几个库的问题(并不能保证所有人都是这几个库出问题),我像上面一样,改了下面3个库的软链接
libopencv_core.so.2.4 => /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_core.so.2.4 (0x00007effcd29e000)libopencv_highgui.so.2.4 => /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_highgui.so.2.4 (0x00007effcd054000)libopencv_imgproc.so.2.4 => /usr/local/MATLAB/R2014a/bin/glnxa64/libopencv_imgproc.so.2.4 (0x00007effccbc9000)
这下make matcaffe终于成功了,然后我就去MATLAB继续测试
打开MATLAB之后,
cd ~/caffe/matlab/demo/ im = imread('../../examples/images/cat.jpg'); [scores, maxlabel] = classification_demo(im, 1);
然后出现了下面的问题
然后一番google,找到了这样一段话
A few possible issues related to Caffe:
You may need to add the path to CUDA libraries (usually in /usr/local/cuda/lib64) to LD_LIBRARY_PATH before starting MATLAB.(这个在配置CUDA的时候已经设置了)
When running the code, if you get an error saying: /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0: undefined symbol: FT_Face_GetCharVariantIndex, try adding /usr/lib/x86_64-linux-gnu/libfreetype.so.6(or the equivalent library that your system may have) to the LD_PRELOAD environment variable before starting MATLAB.
所以我在~/.bashrc 下加了一句
export LD_PRELOAD=$LD_PRELOAD:/usr/lib/x86_64-linux-gnu/libfreetype.so.6
最后终于MATLAB也能运行出结果了,但是有一个小问题,我的电脑上给MATLAB在桌面建了个图标,通过桌面图标运行的MATLAB,测试caffe还是会出上面的错误,但是通过终端输入matlab运行的MATLAB可以正常运行,出现这个的原因是在终端运行的matlab,会通过.bashrc加载环境变量,因为是通过终端运行的;但是通过桌面图标运行的matlab并不会调用.bashrc(我认为应该是这样),自然不会运行export LD_PRELOAD=$LD_PRELOAD:/usr/lib/x86_64-linux-gnu/libfreetype.so.6这个命令,所以还是会出错。
- caffe +MATLAB配置
- Caffe+Matlab配置
- caffe中matlab接口配置
- caffe python+matlab环境配置
- caffe 的matlab接口配置
- caffe的MATLAB接口配置
- caffe-windows matlab 接口配置
- ubuntu下caffe配置matlab接口
- ubuntu下caffe配置matlab接口
- Ubuntu 16.04 + Matlab 2014a + caffe 配置
- 微软官方caffe之 matlab接口配置
- caffe-windows配置python和matlab接口
- 微软官方caffe之 matlab接口配置
- win10上安装Caffe,配置matlab、python
- 微软官方caffe之 matlab接口配置
- 微软官方caffe之 matlab接口配置
- Windows下为Caffe配置matlab接口
- 微软官方caffe之 matlab接口配置
- 基于环形缓冲区的deque实现方法
- 你讨厌写selector背景了吗?手摸手教你封装个控件!
- 关于Struts2.3.31版本 datetimepicker不显示问题解决意见
- Android进阶之路 - Google下最简单的下拉刷新(SwipeRefreshLayout)
- ping 原理与ICMP协议
- caffe +MATLAB配置
- 堆和栈的区别
- Find K Pairs with Smallest Sums
- Post的简单用法
- Memcache学习笔记三:Memcache管理Tomcat的Session,Session共享
- 如何提高 matlab 计算速度 运算效率
- Linux文件系统
- C/C++ Windows API——ICMP
- 【PAT甲级】【C++】1006. Sign In and Sign Out (25)