使用DPM(Deformable Part Model,voc-release3.1)算法INRIA通过训练你的身体检测模型数据集
我的环境
DPM源代码版本号:voc-release3.1
VOC开发包版本号:VOC2007_devkit_08-Jun
Matlab版本号:MatlabR2012b
c++编译器:VS2010
系统:Win7 32位
learn.exe迭代次数:5万次
数据集:INRIA 人体数据集,等
步骤一,首先要使voc-release3.1目标检測部分的代码在windows系统下跑起来:
在Windows下执行Felzenszwalb的Deformable Part Models(voc-release4.01)目标检測matlab源代码
上文中用的4.01,3.1须要改动的地方是一样的,反而更简单。
步骤二,把训练部分代码跑通,在VOC数据集上进行測试,例如以下文:
在windows下执行Felzenszwalb的Deformable Part Model(DPM)源代码voc-release3.1来训练自己的模型
步骤三,再之后就是使之能在其它的数据集上训练模型,比方INRIA人体数据集。
这一步中主要是改动pascal_data.m文件。这个文件的作用就是读取标注,为训练准备数据。此函数会返回两个数组。pos[]和neg[],
pos[]中是正样本信息,格式为:[imagePath x1 y1 x2 y2 ];
neg[]中是负样本信息,格式为:[imagePath] 。
先读取INRIA数据集的标注,保存为以下的格式:
然后在pascal_data.m中读取此文件。依次将标注信息保存到pos[]数组中。注意要将图片路径补全为绝对路径。
pos = []; % 存储正样本目标信息的数组,每一个元素是一个结构,{im, x1, y1, x2, y2}
numpos = 0; % 正样本目标个数(一个图片中可能含有多个正样本目标) % InriaPersonPos.txt是从Inria人体数据集获得的50个正样本的标注文件,格式为[x1 y1 x2 y2 RelativePath]
[a,b,c,d,p] = textread('InriaPersonPos.txt','%d %d %d %d %s'); % 注意:读取后p的类型时50*1的cell类型 % 遍历训练图片文件名称数组ids
for i = 1:length(a);
if mod(i,10)==0
fprintf('%s: parsing positives: %d/%d\n', cls, i, length(a));
end;
numpos = numpos+1; % 正样本目标个数
pos(numpos).im = [VOCopts.datadir p{numpos}]; % 引用cell单元时要用{},引用矩阵单元时用()
pos(numpos).x1 = a(numpos);
pos(numpos).y1 = b(numpos);
pos(numpos).x2 = c(numpos);
pos(numpos).y2 = d(numpos);
end
pos(numpos).im 中我也在相对路径前加了VOCopts的数据集文件夹datadir是由于我将INRIA数据集放在VOCdevkit文件夹下了。
这里要特别注意的是。不须要提前从INRIA数据集中依据标注文件手动裁出人体目标,而是将标注信息和正样本原图都告诉DPM算法,它自己主动会进行缩放、剪裁处理。对于有的标注信息超过图像边界的,也没关系,DPM中也会自己处理。
至于负样本就无所谓了,反正都是从不含人体的原图上随机裁取,还用VOC数据集中的即可。
以下展示几个训练的模型,以及检測结果
(1)50个INRIA正样本目标。300个VOC负样本目标。单组件(component)模型,部件个数为6。
模型可视化图例如以下:
没想到仅用50个正样本。训练出的模型居然非常不错。这也跟INRIA人体数据集的质量非常高有关。
检測结果例如以下:
在500个VOC測试图上获得的平均精度AP=0.091
(2)537个Spinello RGBD数据集中的正样本目标,300个VOC负样本目标,单组件,6个部件。
模型可视化例如以下:
因为这537个正样本目标来自对单个人的跟踪结果,所以样本不太好。例如以下:
所以训练出来的模型根本检測不到不论什么人体目标。
(3)2396个Spinello RGBD数据集中的正样本目标。300个VOC负样本目标,单组件。6个部件。
模型可视化例如以下:
这次的数据源和(2)中同样。仅仅只是这次正样本取自数据集中的全部34个人的跟踪结果,训练了一个晚上,结果还行。
检測结果例如以下:
在500个VOC測试图上获得的平均精度AP=0.091。
带包围盒预測的精度-召回率(precision-recall)曲线例如以下:
版权声明:本文博客原创文章。博客,未经同意,不得转载。
使用DPM(Deformable Part Model,voc-release3.1)算法INRIA通过训练你的身体检测模型数据集的更多相关文章
- (2) 用DPM(Deformable Part Model,voc-release4.01)算法在INRIA数据集上训练自己的人体检測模型
步骤一,首先要使voc-release4.01目标检測部分的代码在windows系统下跑起来: 參考在window下执行DPM(deformable part models) -(检測demo部分) ...
- 关于DPM(Deformable Part Model)算法中模型结构的解释
关于可变部件模型的描写叙述在作者[2010 PAMI]Object Detection with Discriminatively Trained Part Based Models的论文中已经有说明 ...
- 关于DPM(Deformable Part Model)算法中模型可视化的解释
搭建了自己的博客平台,本文地址:http://masikkk.com/blog/DPM-model-visualization/ DPM源代码(voc-release)中的模型可视化做的还算相当炫酷的 ...
- DPM(Deformable Parts Model)--原理(一)(转载)
DPM(Deformable Parts Model) Reference: Object detection with discriminatively trained partbased mode ...
- DPM(Deformable Parts Model)
DPM(Deformable Parts Model) Reference: Object detection with discriminatively trained partbased mode ...
- DPM(Deformable Parts Model)--原理(一)
http://blog.csdn.net/ttransposition/article/details/12966521 DPM(Deformable Parts Model) Reference: ...
- DPM(Deformable Part Model)原理详解(汇总)
写在前面: DPM(Deformable Part Model),正如其名称所述,可变形的组件模型,是一种基于组件的检测算法,其所见即其意.该模型由大神Felzenszwalb在2008年提出,并发表 ...
- DPM检测模型 VoC-release 5 linux 下编译运行
(转载请注明作者和出处 楼燚(yì)航的blog :http://www.cnblogs.com/louyihang-loves-baiyan/ 未经允许请勿用于商业用途) DPM目前使非神经网络方法 ...
- DPM检测模型 训练自己的数据集 读取接口修改
(转载请注明作者和出处 楼燚(yì)航的blog :http://www.cnblogs.com/louyihang-loves-baiyan/ 未经允许请勿用于商业用途) 本文主要是针对上一篇基于D ...
随机推荐
- 构建安全的Xml Web Service系列之wse之证书存储位置
原文:构建安全的Xml Web Service系列之wse之证书存储位置 我们在前几天对xml web service的安全性提出了一些建议,大家可以通过以下地址访问: 构建安全的Xml Web Se ...
- UVA 12206 - Stammering Aliens(后缀数组)
UVA 12206 - Stammering Aliens 题目链接 题意:给定一个序列,求出出现次数大于m,长度最长的子串的最大下标 思路:后缀数组.搞出height数组后,利用二分去查找就可以 这 ...
- github jekyll site不再使用Maruku由于Markdown翻译员,但kramdown
今天写了一篇博客,之push至jekyll site on github在,发现总是错的,例如,下面的电子邮件消息: The page build completed successfully, bu ...
- 90社交网络的行为报告后:不拒绝陌生人,TFBOYS作为一个喜爱
依据腾讯QQ与易观合作的<2014中国90后青年调查报告>,盘点了90后使用社交网络的行为习惯. 相比于70.80后.90后更愿意在社交媒体上公布自己照片.状态,且更愿意在即时通讯中加陌生 ...
- 关于“类不能支持Automation操作”错误的解决方法
一段程序IE上老是提示“类不支持Automation操作”的错误,IE6.7.8都一样,但是Firefox可以,后来网上找到如下解决方法: 重新注册下以下文件,问题便解决了:msscript.ocxd ...
- BZOJ 2435 NOI2011 道路建设 BFS/DFS
标题效果:给定一个树(直接将树.不要贪图生成树图!).寻找每条边权值*分差的两侧之间 BFS水必须是能 竟DFS能够住...系统堆栈可能有些不够,我们可以使用内联汇编手册中大型系统堆栈 详见代码 这个 ...
- 使用js在新窗口中POST数据
最近在做自己的博客,写文章的时候有一个预览功能,当时使用的是弹出框来进行预览,感觉体验不是很好. 然后想到了写邮件时候的新窗口预览,查了下126邮箱和qq邮箱的预览实现效果,以及各种谷歌百度stack ...
- Visual Studio 2015使用EF6的CodeFirstFromDB模式操作Sqlite数据库时Provider问题
传送门 什么是CodeFristFromDB 问题:查询数据是遇到 “/”应用程序中的服务器错误. No Entity Framework provider found for the ADO.NET ...
- SQLServer 2008 技术内幕——T-SQL 查询 笔记
原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得 ...
- Java多播通讯框架 JGroups(转)
JGroups是一个可靠的群组通讯Java工具包.它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展. JGroups的可靠性体现在: 1,对所有接收者的消息的无丢失传输 ...