我的环境

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[]数组中,注意要将图片路径补全为绝对路径。

[html] view plain copy  
  1. pos = []; % 存储正样本目标信息的数组,每个元素是一个结构,{im, x1, y1, x2, y2}
  2. numpos = 0; % 正样本目标个数(一个图片中可能含有多个正样本目标)
  3. % InriaPersonPos.txt是从Inria人体数据集获得的50个正样本的标注文件,格式为[x1 y1 x2 y2 RelativePath]
  4. [a,b,c,d,p] = textread('InriaPersonPos.txt','%d %d %d %d %s'); % 注意:读取后p的类型时50*1的cell类型
  5. % 遍历训练图片文件名数组ids
  6. for i = 1:length(a);
  7. if mod(i,10)==0
  8. fprintf('%s: parsing positives: %d/%d\n', cls, i, length(a));
  9. end;
  10. numpos = numpos+1; % 正样本目标个数
  11. pos(numpos).im = [VOCopts.datadir p{numpos}]; % 引用cell单元时要用{},引用矩阵单元时用()
  12. pos(numpos).x1 = a(numpos);
  13. pos(numpos).y1 = b(numpos);
  14. pos(numpos).x2 = c(numpos);
  15. pos(numpos).y2 = d(numpos);
  16. 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)曲线如下:

from: http://blog.csdn.net/masibuaa/article/details/25221103

用DPM(Deformable Part Model,voc-release3.1)算法在INRIA数据集上训练自己的人体检测模型相关推荐

  1. 关于DPM(Deformable Part Model)算法中模型可视化的解释

    搭建了自己的博客平台,本文地址:http://masikkk.com/blog/DPM-model-visualization/ DPM源代码(voc-release)中的模型可视化做的还算相当炫酷的 ...

  2. 关于DPM(Deformable Part Model)算法中模型结构的解释

    关于可变部件模型的描写叙述在作者[2010 PAMI]Object Detection with Discriminatively Trained Part Based Models的论文中已经有说明 ...

  3. DPM(Deformable Parts Model)--原理(一)

    申明:本文非笔者原创,原文转载自:http://blog.csdn.NET/ttransposition/article/details/12966521 DPM(Deformable Parts M ...

  4. pascal行人voc_在Pascal VOC 数据集上训练YOLOv3模型

    上节介绍了<从零开始在Windows10中编译安装YOLOv3>,本节介绍在Pascal VOC 数据集上训练YOLOv3. 第一步,下载并安装YOLOv3训练依赖项. a.下载Pasca ...

  5. pascal行人voc_在一个很小的Pascal VOC数据集上训练一个实例分割模型

    只使用1349张图像训练Mask-RCNN,有代码. 代码:https://github.com/kayoyin/tiny-inst-segmentation 介绍 计算机视觉的进步带来了许多有前途的 ...

  6. 用Deformable Part Model(DPM)voc-release3.1训练自己的模型

    配置了一上午,终于能训练自己的DPM模型,实属不易 我的环境 DPM源码版本:voc-release3.1 VOC开发包版本:VOC2007_devkit_08-Jun 使用的训练数据集:VOC200 ...

  7. 在windows下运行Felzenszwalb的Deformable Part Model(DPM)源码voc-release3.1来训练自己的模型

    我的环境 DPM源码版本:voc-release3.1 VOC开发包版本:VOC2007_devkit_08-Jun 使用的训练数据集:VOC2007                         ...

  8. 有关可变形部件模型(Deformable Part Model)的一些说明

    (1)可变形部件模型 可变形部件模型(DeformablePart Model)由三部分组成: (1) 一个较为粗糙的,覆盖整个目标的全局根模版(或叫做根滤波器). (2) 几个高分辨率的部件模版(或 ...

  9. map评价吗 voc数据集可以用coco_【庖丁解牛】从零实现RetinaNet(九):使用COCO预训练权重在VOC上训练RetinaNet...

    下列代码均在pytorch1.4版本中测试过,确认正确无误. 如何载入COCO预训练权重 由于其他数据集如VOC的类别数不一定和COCO数据集相同,载入COCO预训练权重后要先去掉和类别有关的卷积层权 ...

最新文章

  1. evt参数是干啥用的_http连接池中非常关键的两个参数,到底是干啥用的?
  2. 从网络管理员到首席架构师,这 16 年我是如何实现每年加薪 10000 美元的?
  3. idea在目录中前添加目录_[LaTeX Beamer] 为目录项添加页码
  4. 一图看懂py2/py3编码
  5. 【STM32】SPI相关函数和类型
  6. linux之find命令,Linux基础知识之find命令详解
  7. 新手攻略熔炉_【新手攻略】快速入门
  8. CListBox的函数
  9. LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)
  10. 500 G JAVA视频网盘分享(JEECG开源社区)
  11. Openwrt GCC 7.5编译sanitizer_internal_defs.h错误
  12. 大数据发展与情报资源整合的关系探索
  13. 白酒分化明显,中小酒企面临生存困境
  14. 自学Python第九天- 模块、包、编码、文件操作、OS 模块、打包
  15. python爬取并分析淘宝商品信息
  16. 1698 字符串的不同子字符串个数
  17. dodo:人脸识别方法个人见解 (zz)
  18. Item category 04000 is missing (obligatory in accounting transaction 1000/0)
  19. 【第90题】JAVA高级技术-网络编程9(简易聊天室4:获得Socket)
  20. Padding填充以及加密模式概念

热门文章

  1. V神最新演讲:以太坊2.0的分片交易
  2. 2019区块链行业指南
  3. 今日头条 CEO 张一鸣:面试了 2000 个年轻人
  4. 为什么大型科技公司更会发生人员流失 标准 ceo 软件 技术 图 阅读2479 原文:Why Good People Leave Large Tech Companies 作者:steve
  5. 初创科技公司都采用什么样的技术架构?
  6. Ello讲述Haar人脸检测:易懂、很详细、值得 ...
  7. MyBatis-06 MyBatis XML方式之多个接口参数用法
  8. java里 currenttime_java 获取当前时间LocalDateTime currentTimeMillis java.util.Date
  9. groovy定义变量获取当前时间_IDEA不愧为神器,结合Groovy脚本,简直无敌!
  10. python 文件末尾增加内容_java追加内容到文件末尾