您的位置:首页 > 产品设计 > 产品经理

在Windows下配置和训练DPM(可变现部件模型)

2016-03-10 14:48 441 查看
刚开始接触DPM,看了一些理论知识就迫不及待的想跑起来,就在网上看了一些前辈的博客,从配置到训练,感谢前人种树!本文主要分成两个部分:一是在windows下配置DPM,二是DPM在windows下的训练,下面开始分步介绍。

我的开发环境是:win8(32)+Matlab2012a+vs2010

DPM源码版本:voc-release4.01

VOC开发包:voc2007_devkit_08_Jun

参考:http://blog.csdn.net/masibuaa/article/details/25221103
http://blog.csdn.net/xunwukong/article/details/18841059
数据下载链接:http://host.robots.ox.ac.uk:8080/pascal/VOC/voc2007/index.html(此为更新版,网上大多贴的链接都打不开)

第一部分:在windows下配置DPM(也就是让DPM源码在windows下运行起来)

步骤一:先在matlab中配置c++编译器

在matlab命令行当中输入 mex -setup,然后回车提示你选择,键入n,出现matlab支持的编译器,根据提示选择就ok了


键入你电脑的vs版本,比如我就是输入15 ,然后对应好目录就行了。

步骤二:配置文件

这里说下,推荐的第一篇博客是直接在matlab命令窗口输入compile编译的, 通过报错还一点点配置文件。而第二篇是在此基础上直接配置的,相对来说简单粗暴,不过对于我们这菜鸟来说,还是慢慢配吧,正好熟悉一下。当然,我写下来就是直接配啦,有兴趣的同行可以去看原博。

1.dt.cc 中加入 #define int32_t int



2.features.cc和resize.cc中加入

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

int round(float a) { float tmp = a - (int)a; if( tmp >= 0.5 ) return (int)a + 1; else return (int)a; }
同时,resize.cc中

alphainfo ofs[len]; 改成 alphainfo *ofs = new alphainfo[len];

并在同一个域中加入delete []ofs;这里可以理解成加在该函数结尾



3.compile.m文件中,结尾加上
mex -O fconv.cc,如下所示:



4.修改fconv.cpp文件

第一行中void*process(void *thread_arg) 去掉process的指针符号,即可。
至此,文件的配置基本上完成了,在matlab输入compile 编译如果不报错,那就恭喜你啦,如果报错对应着再修改。

然后continue,出现下图就ok啦!



备注:还有一点需要注意的是,我配置完成之后编译总是报错如下:


然后以为是哪里哪里没对,又配置一遍还是这样。结果是因为matlab工作路径原因,个人觉得比较重要的一步就是配置matlab工作路径了。可以用命令pathtool来把路径改成voc-release4.01的工作路径就好了。

第二部分:DPM在windows下的训练

这里的训练用的是VOC数据集也就是官方提供的数据集,等这个跑完之后,再用我们自己的数据模型来跑。

先去网站下载数据集和开发包VOCdevkit和两个数据包(验证和测试集),然后把测试集中的xml标注文件拷贝到VOCdevkit\VOC2007\Annotations文件夹内,把测试集中的jpeg图片拷贝到VOCdevkit\VOC2007\JPEGImages文件夹内,这样整个数据集才完整,否则在训练或测试的时候可能出现找不到需要读取的标注文件或图片的错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: