(转载请注明作者和出处 楼燚(yì)航的blog :http://www.cnblogs.com/louyihang-loves-baiyan/ 未经允许请勿用于商业用途)

DPM目前使非神经网络方法里面较好的目标检测程序,作者呢也是Fast RCNN的作者 Ross Girshick,真的是牛人,这个模型是在2010年被提出的DPM的全称也就是Deformable Part Model,可变形部件模型。其主要思想是根据弹簧形变模型提出的,也就是一个目标物时分为主部分和子部件,分别叫做root和part,很多时候我们需要检测的物体并不是单个模板下的,比如之前我用的opencv 下的svm来做检测,还有adaboost下用haar来做检测,他们的模型非常单一,是不能很好的适应复杂场景的检测需求。

DPM模型在训练的时候是分为主部件和子部件,在检测的时候就有了root filter 和 part filter,两者结合做检测,part filter在root filter,类比的话,比如人的手和脚是可以明显活动的,四肢非常灵活,显然单一的模板来检测人是不严密的,而其检测过程可以归纳为一个主部件的得分以及他子部件的得分的和,并且需要减去子部件偏离的cost,作为其最终得分。他的一个概念模型可以看一下下图

看一下我训练的车脸模型,模型里用的是Hog特征,梯度方向直方图,下面是特征模型的可视化结果:这里用的6个部件

网络上说voc-release5的资料比较少,大部分还是用的DPM代码的3.1或者4.1版本,最新的是voc-release5八本,ross在里面加入了star-cascade还有新的模型语法car-grammar,检测的速度比直接的块了不少。首先我说明一下如何编译voc-release5的matlab工程

首先下载DPM的工程源码,给出链接:

http://www.cs.berkeley.edu/~rbg/latent/

这里我觉得最好还是在linux下或者 os x下进行训练,不要在windows下进行训练,你最后得到的也是个mat的模型文件,不要徒增工作量,毕竟是matlab的源代码也不能直接应用于工程,怎么方便怎么配置。

由于我的ubuntu上安装的是matlab 2014a,根据readme的提示,需要先编译,再运行demo。一般来说现在的ubuntu比较主流的是14.04 LTS,其自带的gcc 版本比较高,我这里是4.8,但是Matlab最高支持到gcc4.7因此需要apt-get 安装一下4.7的gcc,再调整一下编译器的优先级选项,最后gcc -v 输出一下当前默认的gcc版本好是多少

sudo apt-get install gcc-4.7 g++-4.7 g++-4.7-multilib gcc-4.7-multilib

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 100 

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 100 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50

sudo update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.7 100

sudo update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.8 50

gcc -v

接下来gcc的报错应该是没有了,但是编译还是会出错

看到报错,在compile.m中

mex error using
Unknown MEX argument '-o'.

在compile.m中有几处-o,列了两处

eval([mexcmd ' gdetect/fconvsse.cc -o fconv']);
eval([mexcmd ' gdetect/fconv_var_dim_MT.cc -o fconv_var_dim']);

-o的参数可能是因为mex的版本导致的参数指令不兼容,因此将-o 改成-output就可以了

再次运行demo.m文件,即可看到DPM模型的检测演示如下:

下面整个可视化模型是基于VOC2007训练的,可以看到有3个方向的模型,第一个是车辆的左斜视图,第二个是车辆的右斜视图,第三个是正视图,可以大致展现车的轮廓:

待检测的图像:

检测的示意图,其中红框是最后的检测位置,蓝框是局部的部件:

DPM检测模型 VoC-release 5 linux 下编译运行的更多相关文章

  1. linux下编译运行驱动

    linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...

  2. linux下编译运行TIGL Viewer步骤

    linux下编译运行TIGL Viewer步骤(仅为了正确编译安装的话直接跳到步骤3) 1. linux发行版选择:由于linux发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...

  3. linux下编译运行C程序

    GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C.C++.Ada.Fortran.Objective.Perl.Python.Ruby以及Ja ...

  4. 在linux下编译运行C++程序

    头一回...把windows下的程序挪到linux下,代码见这篇随笔 1.编译ZTHREAD,使用./configure失败,直接编译的,方法还是上面提到的那篇随笔 2.编译源码,最开始用的cc,后来 ...

  5. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  6. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  7. linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  8. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  9. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

随机推荐

  1. 总结CSS3新特性(媒体查询篇)

    CSS3的媒体查询是对CSS2媒体类型的扩展,完善; CSS2的媒体类型仅仅定义了一些设备的关键字,CSS3的媒体查询进一步扩展了如width,height,color等具有取值范围的属性; medi ...

  2. 利用IIS导出,导入快速部署 web站点

    部署负载均衡站点的时候会创建多个站点拷贝.用脚本可以提高效率,并且减少错误 1 以管理员身份运行CMD 2 Cd C:\Windows\System32\inetsrv 3 导出指定的应用程序池 ap ...

  3. 之四:CATransition - 转场动画

    关键属性: type 过渡效果  kCATransitionFade  淡出 kCATransitionMoveIn  覆盖原图 kCATransitionPush  推出 kCATransition ...

  4. ios必须知道的事情

    一. 学前提醒 其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言 iOS开发需要学习的主要程序设计语言有:C语言.C++.Objective-C,其中C ...

  5. [Android]listview recycleview的复用问题

    最近解决了几个bug,是关于listview和recycle view中的复用问题的:   为了提高性能,我们使用了viewHolder来减少view的生成,从而提高滑动的性能:   要注意一个很隐蔽 ...

  6. MVC中的时间js格式化

    记录下我遇到的一个,MVC中post请求返回一个JSON字符串,其中包含数据库中的时间格式(如:/Date(10000000000)/),不知道怎么处理.百度的方法都不适用,经自己研究,做成了一个Jq ...

  7. Photo Shop 修改、维护

    调整画布大小 要继续放更多的图片? 更改画布大小 移动图标 若图标为独立图层,则用移动工具拖动即可 若图层为非独立图层 - 用选区工具选中图标区域 - 用移动工具拖动图标 如果要拆分同一图层下的两个图 ...

  8. 使用xmarks同步 chrome ie firefox safari书签

    xmarks是什么? Install Xmarks on each computer you use, and it seamlessly integrates with your web brows ...

  9. 敏捷软件开发(4)--- TEMPLATE METHOD & STRATEGY 模式

    1.TEMPLATE METHOD 泛型,也就是这个模式,是可以基于泛型的. 我们往往会有一些算法,比如排序算法.它的算法部分,我可以把它放在一个基类里面,这样具体类型的比较可以放在子类里面. 看如下 ...

  10. [MySQL Reference Manual] 6 安全性

    6. 安全性 在Mysql安装配置时要考虑安全性的影响,以下几点: Ÿ   常规因素影响安全性 Ÿ   程序自身安全性 Ÿ   数据库内部的安全性,即,访问控制 Ÿ   网络安全性和系统安全性 Ÿ   ...