1.DPM原理
最近因为需要一直在研究DPM相关的东西,先要搞清楚DPM的原理其中我主要使用的是
http://blog.csdn.net/masibuaa/article/details/17924671使用判别训练的部件模型进行目标检测
http://blog.csdn.net/masibuaa/article/details/17533419判别训练的多尺度可变形部件模型
这两位大神的资料,据说这是相关论文翻译过来的中文版 讲解比较详细,下一步就要在windows下配置文件开始训练,
2.DPMwindows下的配置
首先需要下载voc-release5的原code 下面给出github中下载的地址
https://github.com/rbgirshick/voc-dpm
当前下载下来的code是在linux下编译训练测试的,因为我没有用过Linux的编译,所以需要在windows下编译需要配置,具体可以看这位大神的配置方法,http://blog.csdn.net/seu_nuaa_zc/article/details/52412771,配置结束后可以在MATLAB的命令行中输入compile就可以进行编译,编译完成可以开始训练了。
注意:在配置的过程中一定要细心,我在配置fv_cache.cc 的过程中因为有一个大括号}没有注释,一直出现警告: Maybe you need to call fv_cache('unlock') first,当出现这个警告是就需要去检查配置过程有没有什么疏漏。
这是我编译好的http://download.csdn.net/download/wakojosin/9919065
如果按照上面所说方法配置是完全没有问题的。
3.训练
编译完成,需要开始训练,在训练之前需要准备DMP的相关文件,VOCdevkit,VOC2007文件库
相关下载地址
VOCdeviket http://pascallin.ecs.soton.ac.uk/challenges/VOC/voc2007/
VOC2007 http://host.robots.ox.ac.uk/pascal/VOC/#bestpractice
下载完成后解压需要将VOCdeviket文件放入到voc-release5的文件夹中,将VOC2007放入到VOCdeviket文件夹中如下图所示
其中VOC2007中保存着原code中的训练的图像。
需要修改训练路径,主要修改的是
(1)voc_config.m
BASE_DIR = 'E:/qinyanhong/DPM/code/voc-release5new/voc-release5'; 修改为自己的voc-release5的路径
conf = cv(conf, 'pascal.dev_kit', [conf.paths.base_dir '/VOCdevkit/']); 修改为vocdeviket的路径
按照上图路径创建文件夹,2007中保存训练结果
(2)pascal_data.m
我训练的图像使用的是自己标定的图像,标定后的txt格式为1.jpg 2 x1 y1 x2 y2 x1_1 y1_1 x2_1 y2_1
其中需要注意的是x1>x2 y1>y2 x1_1>x2_1 y1_1>y2_1,如果不满足条件会在创建金字塔模型时出现错误。可以通过修改金字塔中的坐标对应关系解决
修改pascal_data.m文件夹我是参照这位大神的来完成的http://www.cnblogs.com/louyihang-loves-baiyan/p/4965992.html
其中正样本positive.txt(标定后的样本)和负样本negtive.txt (只包含图像名称)都保存在PosImageFile中
开始训练模型
训练的过程