在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了
![](http://img.blog.csdn.net/20160311164030562)
键入你电脑的vs版本,比如我就是输入15 ,然后对应好目录就行了。
步骤二:配置文件
这里说下,推荐的第一篇博客是直接在matlab命令窗口输入compile编译的, 通过报错还一点点配置文件。而第二篇是在此基础上直接配置的,相对来说简单粗暴,不过对于我们这菜鸟来说,还是慢慢配吧,正好熟悉一下。当然,我写下来就是直接配啦,有兴趣的同行可以去看原博。
1.dt.cc 中加入 #define int32_t int
![](http://img.blog.csdn.net/20160311165539771)
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;这里可以理解成加在该函数结尾
![](http://img.blog.csdn.net/20160311170217477)
3.compile.m文件中,结尾加上
mex -O fconv.cc,如下所示:
![](http://img.blog.csdn.net/20160311170702103)
4.修改fconv.cpp文件
第一行中void*process(void *thread_arg) 去掉process的指针符号,即可。
至此,文件的配置基本上完成了,在matlab输入compile 编译如果不报错,那就恭喜你啦,如果报错对应着再修改。
然后continue,出现下图就ok啦!
![](http://img.blog.csdn.net/20160311172131859)
备注:还有一点需要注意的是,我配置完成之后编译总是报错如下:
![](http://img.blog.csdn.net/20160311201654696?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后以为是哪里哪里没对,又配置一遍还是这样。结果是因为matlab工作路径原因,个人觉得比较重要的一步就是配置matlab工作路径了。可以用命令pathtool来把路径改成voc-release4.01的工作路径就好了。
第二部分:DPM在windows下的训练
这里的训练用的是VOC数据集也就是官方提供的数据集,等这个跑完之后,再用我们自己的数据模型来跑。
先去网站下载数据集和开发包VOCdevkit和两个数据包(验证和测试集),然后把测试集中的xml标注文件拷贝到VOCdevkit\VOC2007\Annotations文件夹内,把测试集中的jpeg图片拷贝到VOCdevkit\VOC2007\JPEGImages文件夹内,这样整个数据集才完整,否则在训练或测试的时候可能出现找不到需要读取的标注文件或图片的错误。
我的开发环境是: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文件夹内,这样整个数据集才完整,否则在训练或测试的时候可能出现找不到需要读取的标注文件或图片的错误。
相关文章推荐
- 世界围棋人机大战、顶峰对决第二战:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序,AlphaGo再次胜出!
- npm安装一些包失败(npm国内镜像)
- RPM应用——查询(已安装包和未安装包)
- SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
- mrtg使用的 MRTG_lib.pm
- 建筑行业如何用BPM替换OA?
- 当BPM业务流程管理遇上制造业
- 世界围棋人机大战、顶峰对决第一盘:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序
- LAMP的搭建(rpm、源代码安装)+
- 世界围棋人机大战、顶峰对决第一盘:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序,Google AlphaGo首战告捷
- rpm命令
- 给电脑换源 npm 国内镜像 cnpm
- yum rpm 查找软件 安装位置 信息
- 【error】npm安装express报错: command not found
- 让「快速添加」更快、更简单
- libcpmt.lib 与 msvcprt.lib
- 设置npm安装程序时的默认目录
- 教你使用rpm、yum、编译等方式安装软件
- Public key for mysql....rpm is not installed
- 基于BoF的图像分类完整步骤(以ScSPM为例)