ubuntu下 编译Caffe的Matlab接口
一般情况下不愿意使用Caffe的Matlab接口,总觉得Linux版的Matlab很难配置,但是现在搞目标检测,得到的源码是使用的Caffe的Matlab接口,只能硬着头皮上了。
(1)修改caffe-master/Makefile.config
这一步主要是在Caffe的编译配置文件Makefile.config中加入Matlab的路径。注意路径文件夹是要包含Matlab安装目录的“bin”文件夹的。
(2)编译接口。这里默认已经编译好了Caffe源码主体部分。所以直接编译接口。在caffe-master目录下打开终端,输入: make matcaffe 至于如何编译Caffe源码的主体部分请大家百度,就是make all ,make test那些。我是一开始没有在Makefile.config中加入Matlab路径,所以编译Caffe主体代码时不会编译Matlab接口。
(3)测试接口。输入 make mattest
这里可能报错:caffe_.mexa64: undefined symbol:
_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE
错误原因是Matlab自带的库和Ubuntu的系统库之间发生了冲突,一言不和就废掉Matlab的自带库,使用Ubuntu系统库,呵呵。
PS:只替换库libstdc++.so.6是不行的,要解决此问题需要多替换几个库。输入终端命令:
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
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
可以通过 ldd ./matlab/+caffe/private/caffe_.mexa64 查看其依赖了那些动态库,将其增加到你的 LD_PRELOAD中,见caffe官网 http://caffe.berkeleyvision.org/tutorial/interfaces.html#matlab
这个要视具体目录而定,我这边写了个脚本,如下:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64 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 matlab
注意:目录/usr/lib/x86_64-linux-gnu/是我的系统库目录。大家可以通过查询库所在位置来确定自己的系统库目录:
sudo find / -name libstdc++.so.6
重新运行make mattest , 问题解决~
(4)在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个类别。
到此OK,大家加油~
参考资料:
How to install Matlab API in Caffe
http://blog.csdn.NET/buyi_shizi/article/details/51607109
Matlab下对Caffe接口的调用
http://blog.csdn.Net/u012746763/article/details/50419153
ubuntu下 编译Caffe的Matlab接口的更多相关文章
- ubuntu下编译caffe
Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...
- Windows下调用caffe的matlab接口
一.编译caffe的matlab接口 在我的这篇博客windows-caffe配置已经说了怎么编译了,这里就略过了. 编译成功后,会得到如下图所示文件: matlab接口就在matcaffe文件夹里. ...
- win10编译caffe调用matlab接口
参考 https://www.cnblogs.com/njust-ycc/p/5776286.html https://www.cnblogs.com/heately/p/7922521.html
- ubuntu下编译VLC
ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...
- 在Ubuntu下编译wpa_supplicant
最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...
- caffe的Matlab接口安装
参考博文:http://blog.csdn.net/thystar/article/details/50720691 0. Caffe安装及Matlab安装 1. Caffe中matcaffe配置 c ...
- Ubuntu下编译SHTOOLS
SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在 ...
- 在Ubuntu下编译Assimp库
在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...
- ubuntu下编译java程序
ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...
随机推荐
- Webform动态创建删除行及后台取值
开发过程中经常碰到许多不确定事项,所以有时需要动态生成新的记录,如图所示,点击新增时新增一条参考记录,点击删除时则删除该记录:第一步,创建一个表格,用hidden记录当前最大行数,添加时则只需复制模板 ...
- Selenium 中文API
Selenium 中文API 转自:http://blog.csdn.net/lh9529/article/details/3946567 概念 Selenium 通过命令进行驱动.Seleniu ...
- linux共享文件夹
mnt中没有 hgfs,重新安装vm tools后问题解决
- Javascript获取不重复的随机数值
/** * 获取不重复随机数 * @param integer start 随机数最小值 * @param integer end 随机数最大值 * @param integer size 随机数获取 ...
- 注册表中LEGACY残留项的清理技巧
http://bbs.kafan.cn/thread-889517-1-1.html 注册表中LEGACY残留项的清理技巧 2.Windows Vista系统 Windows XP系统下的修改权限的方 ...
- Hierarchyid(层次结构)数据类型
实例表结构 CREATE TABLE [dbo].[Emp]( ,), ), [Org] [hierarchyid], ) INSERT INTO Emp(Name,Org) VALUES('吴xx' ...
- Python之生产者&、消费者模型
多线程中的生产者和消费者模型: 生产者和消费者可以用多线程实现,它们通过Queue队列进行通信. import time,random import Queue,threading q = Queue ...
- 国外vps品牌vultr宣布100%可用,宕机加倍补偿
全球知名的vps品牌vultr最近发狠招了,宣布所有vps服务器保证100%上线可用.如果出现宕机故障,提供加倍补偿方案.没有一家vps敢声称自己的产品100%可用,行业标准99.99%上线率已经是非 ...
- 利用python httplib模块 发送Post请求测试web服务是否正常起来!
最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...
- Openjudge-计算概论(A)-过滤多余的空格
描述: 一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格. 输入一行,一个字符串(长度不超过200),句子的头和尾都没有空格.输出过滤之后的句子. 样例输入 Hello world.Th ...