一般情况下不愿意使用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接口的更多相关文章

  1. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  2. Windows下调用caffe的matlab接口

    一.编译caffe的matlab接口 在我的这篇博客windows-caffe配置已经说了怎么编译了,这里就略过了. 编译成功后,会得到如下图所示文件: matlab接口就在matcaffe文件夹里. ...

  3. win10编译caffe调用matlab接口

    参考 https://www.cnblogs.com/njust-ycc/p/5776286.html https://www.cnblogs.com/heately/p/7922521.html

  4. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  5. 在Ubuntu下编译wpa_supplicant

    最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...

  6. caffe的Matlab接口安装

    参考博文:http://blog.csdn.net/thystar/article/details/50720691 0. Caffe安装及Matlab安装 1. Caffe中matcaffe配置 c ...

  7. Ubuntu下编译SHTOOLS

    SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在 ...

  8. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  9. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

随机推荐

  1. windows 激活等命令

    Win+R 输入:slmgr.vbs -dlv 显示:最为详尽的激活信息,包括:激活ID.安装ID.激活截止日期slmgr.vbs -dli 显示:操作系统版本.部分产品密钥.许可证状态slmgr.v ...

  2. C# TextBox中的Validating与Validated事件[转]

    validating事件发生的时候,值还没有被真正存入,所以是空的,而validated事件发生的时候,值已经存入,所以能取出:一个相当于值的前因,一个相当于值的后果.也就是说,可以用validati ...

  3. module parameters

    Parameter values can be assigned at load time by insmod or modprobe(this can read parameter from con ...

  4. 关于Android L软件安装问题的发现

    android5.0可能存在的问题: 保留数据刷入导致通知栏无法下拉 按home键不能回到桌面 sdcard无法读取等等 刷了Android L之后,有一部分软件无法正常安装,多表现为 同一家公司开发 ...

  5. flex安装debug

    1.解决 不是最新版本的问题: cmd-->regedit-->HKEY_LOCAL_MATCHING-->SOFTWARE-->MACROMEDIA -->FLASHP ...

  6. SQL 列提取组成字符串

    SELECT BussinessNo = STUFF(REPLACE(REPLACE((SELECT N.business_no FROM T_delegate_list N WHERE N.g_mo ...

  7. java 类型转换(摘自网络)

    java基本类型转换规则   1.基本数据类型的转换是指由系统根据转换规则自动完成,不需要程序员明确地声明不同数据类型之间的转换.     转换在编译器执行,而不是等到运行期再执行. 2.基本数据类型 ...

  8. Openjudge-计算概论(A)-1的个数

    描述: 给定一个十进制整数N,求其对应2进制数中1的个数输入第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数.输出N行,每行输出对应一个输入.样例输入 4 2 100 1000 ...

  9. Openjudge-计算概论(A)-晶晶赴约会

    描述 晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1.3.5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES:如果不能则输出NO. 输入输入有一行,贝贝邀请晶晶去看展览的日期,用 ...

  10. JS全选

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...