Windows环境运行DPM(Discriminatively Trained Deformable Part Models)V3.1_Demo

前言

       笔者之前一直在OpenCV进行DPM研究,目前因为研究需要转向Matlab,但是作者发布的源代码用的不是Windows平台,引起了很多不便,网上的资料虽然不少,但是还是折腾不少时间,现在将我的配置过程公布如下,免去很多可能与我陷入同样编译错误的童鞋不必要的麻烦。如有不足之处,敬请指正,一起学习,一同进步!

实验环境:

Windows7_64/matlab R2014b/VS2013

DPM版本:

voc-release3.1

VOC开发包版本:VOC2007_devkit_08-Jun

 Deformable Part Model 第三版voc-release3.1下载:http://cs.brown.edu/~pff/latent-release3/

 PASCAL VOC 2007 数据集及开发包下载:http://pascallin.ecs.soton.ac.uk/challenges/VOC/voc2007/index.html


一.目录设置:

1.globals.m中的目录设定

cachedir=‘D:\...’;

tmpdir ='D:\...';

VOCdevkit =['D:\PascalVOC\VOCdevkit'];

cachedir存储模型结果和中间数据,tmpdir临时文件目录,这两个目录任意设定,关系不大。

VOCdevkit开发包目录,请指向你的VOC开发包所在目录


2.建议目录结构:

-VOCdevkit

   -local

      -VOC2006

      -VOC2007

   -results

      -VOC2006

      -VOC2007

   -VOC2007

      -Annotations

      -ImageSets

      -JPEGImages

      -SegmentationClass

      -SegmentationObject

   -VOCcode

注意上面的VOC2007是整个PASCAL VOC数据集!我们在下载完训练集和测试集图片及标注文件后,需要将他们放在一起,标注文件放在Annotations中,图片文件放在JPEGImages中,这里要完整数据集!


二.下面我们主要关注程序配置:


1.解压完源程序压缩包后,修改dt.cc,fconv.cc,features.cc和resize.cc的后缀为.cpp;然后到compile.m中修改上述文件名。

compile.m配置如下:


2.在dt.cpp中添加 #define int32_t  int(位置当然是开头)

3.features.cpp、resize.cpp和fconv.cpp中加入

#define bzero(a, b) memset(a, 0, b)

注意,这里很多网上的资料都让加入int round(float a) float tmp (int)a; iftmp >= 0.5 return (int)a 1; else return (int)a; }

但是,我加入了却提示重载错误,不加反而正确,细细研究发现,源程序调用round时都做了强制类型转换,例如:a=(int)rount(b);

所以,加那句话是画蛇添足。当然,如果你们发现按照我的方法不行的话,可以加上这句话试试。总之,一切为了解决问题!

4.在resize.cpp的大约36行的样子,将alphainfo ofs[len];  改为  alphainfo *ofs = new alphainfo[len];  

    当然,在函数最后要加上 delete [] ofs; (至于位置,我们做研究的都有一双慧眼,作用域不难找,但需谨慎~)

5.到这里,运行compile.m按理说已经OK了,但是有报错:大致是这么说的process函数需要一个返回值,但是process函数明明是void,好吧,那我们就加上一个return 0;又何妨。

6.运行compile。编译通过!

7.运行demo.m显示结果。


三.实验结果:




感悟:

笔者之前一直用VS,对matlab很陌生,对它也有点抵触,通过今晚的摸索发现,不是想象的那么难。懂matlab的人说语法比C++简单的多。逢山开道,遇水架桥,方法永远比困难多!想想当初我们一次次被各种奇葩编译错误困扰时,最后不都一一解决走到了现在!我想我们对未知的领域都有一份抵触吧,究其原因,懒惰也好,不自信也罢,我想说的是别人能做到的,我们就也能做到,只是他们比我们多花了功夫罢了!同样,当你取得一些成绩时,戒骄戒躁,你要知道,你只是比别人多努力了点罢了!谨记,前进的道路永远没有终点!因为不进则退!

参考资料:

我将我看到的有用的参考网站全部放在这里,大家如果发现什么问题,可以根据他们的提示,大胆尝试,我想说的是,我们不应该完全按照步骤来做,而是运行自己的程序,根据错误提示,修改相应错误的部分,方为快速解决问题之道!

http://blog.sina.com.cn/s/blog_4af4d81f0101dk38.html

http://blog.csdn.net/masibuaa/article/details/22855473

http://blog.csdn.net/pozen/article/details/7103412

http://blog.csdn.net/dreamd1987/article/details/7399151

http://blog.csdn.net/pozen/article/details/7103412




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值