前面介绍了一下HOG,HOG有一个缺点:很难处理遮挡问题,人体姿势动作幅度过大或物体方向改变也不易检测。

继2005年HOG提出之后,DPM模型在借鉴了HOG之后也被提了出来同时还取得了不错的成绩。

DPM概述

DPMDeformable Part Model),正如其名称所述,可变形的组件模型,是一种基于组件的检测算法,其所见即其意。该模型由大神Felzenszwalb在2008年提出,并发表了一系列的cvpr,NIPS。并且还拿下了2010年,PASCAL VOC的“终身成就奖”。

DPM算法采用了改进后的HOG特征,SVM分类器和滑动窗口(Sliding Windows)检测思想,针对目标的多视角问题,采用了多组件(Component)的策略,针对目标本身的形变问题,采用了基于图结构(Pictorial Structure)的部件模型策略。此外,将样本的所属的模型类别,部件模型的位置等作为潜变量(Latent Variable),采用多示例学习(Multiple-instance Learning)来自动确定。

DPM特征

DPM检测模型

DPM检测流程

Latent SVM

传统的Hog+SVM和DPM+LatentSVM的区别如上面公式所示。

由于,训练的样本中,负样本集肯定是100%的准确的,而正样本集中就可能有噪声。因为,正样本的标注是人工进行的,人是会犯错的,标注的也肯定会有不精确的。因此,需要首先去除里面的噪声数据。而对于剩下的数据,里面由于各种角度,姿势的不一样,导致训练的模型的梯度图也比较发散,无规则。因此需要选择其中的具有相同的姿势的数据,即离正负样本的分界线最近的那些样本,将离分界线很近的样本称为Hard-examples,相反,那些距离较远的称为Easy-examples。

实际效果图如下图所示:

Latent SVM接下来有时间独立开一篇去整理学习一下。

优缺点

DPM算法的步骤:

1、产生多个模板,整体模板以及不同的局部模板;

2、拿这些不同的模板同输入图像“卷积”产生特征图;

3、将这些特征图组合形成融合特征;

4、对融合特征进行传统分类,回归得到目标位置。

DPM算法优点:

1、方法直观简单;

2、运算速度块;

2、适应动物变形;

DPM算法缺点:

1、性能一般

2、激励特征人为设计,工作量大;

这种方法不具有普适性,因为用来检测人的激励模板不能拿去检测小猫或者小狗,所以在每做一种物件的探测的时候,都需要人工来设计激励模板,为了获得比较好的探测效果,需要花大量时间去做一些设计,工作量很大。

3、无法适应大幅度的旋转,稳定性很差;


前面官方的话讲了一大堆,简单概括一下整体流程吧

  1. 首先要有根模型(root filter)和若干部件模型(part filter)和部件模型的偏离损失。这些东西就是通过已有的人体,四肢等样本提取HOG特征然后经过svm训练而来的。
  2. 用root filter提取原始图像的DMP特征图,再对DMP特征图用root filter和part filter计算响应图。(实际上就是一个模版匹配)
  3. 加权平均root的和part的,得到最终的融合特征图
  4. 对融合特征进行传统分类,回归得到目标位置。

DPM算法思想:输入一幅图像,对图像提取图像特征,针对某个物件制作出相应的激励模板,在原始的图像中计算,得到该激励效果图,根据激励的分布,确定目标位置。

制作激励模板就相当于人为地设计一个卷积核,一个比较复杂的卷积核,拿这个卷积核与原图像进行卷积运算得到一幅特征图。比如拿一个静止站立的人的HOG特征形成的卷积核,与原图像的梯度图像进行一个卷积运算,那么目标区域就会被加密。

那么说到这里就会出现一个问题,人在图像中可能有各种的姿态,比如躺着,趴着,坐着等等,我们只用一个静止站立状态的人的激励模板去做探测就会失败。也就是说图像中的物件可能会发生形变,那么我们用固定的激励模板去探测目标物件的时候就不再适用,那么该如何解决这一问题呢,这就引出了局部模板,也就是说,我们不做一个整体的人的激励模板,转而去做人的部分组件的模板,比如头、胳膊、腿等,其实这就是DPM算法。

再概括一下,HOG的特征提取比较死板,一定要是一个人,这个人还只能是特定的姿态比如站立,动作幅度改变不能太大。而DMP就是先检测整个人,再检测四肢,然后综合两者的信息去判断。

参考文章:https://blog.csdn.net/qq_14845119/article/details/52625426

https://blog.csdn.net/tiandijun/article/details/50601841

【机器学习】传统目标检测算法之DPM相关推荐

  1. 【机器学习】传统目标检测算法总结

    目标检测是什么 object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题. ...

  2. 2D: 传统目标检测算法综述

    一. 目标检测的发展历程 1. 2001年,V-J检测器诞生,主要用于人脸的检测: 2. 2006年,HOG + SVM的方法出现,主要用于行人的检测: 3. 2008年,rgb大神(记住这个人,后面 ...

  3. 【机器学习】传统目标检测算法之HOG

    转载+理解:hog:https://www.cnblogs.com/wyuzl/p/6792216.html hog:https://blog.csdn.net/masibuaa/article/de ...

  4. 【机器学习】传统目标检测算法之Haar分类器

    引言 Haar分类器又称Viola-Jones识别器,是Viola和Jones分别在2001年的<Rapid Object Detection using a Boosted Cascade o ...

  5. 【机器学习】传统目标检测算法之级联分类器Cascade

    先附上参考文章吧. 文章其实是"P. Viola, M. Jones. Rapid Object Detection using a Boosted Cascade of Simple Fe ...

  6. 学习笔记之——基于深度学习的目标检测算法

    国庆假期闲来无事~又正好打算入门基于深度学习的视觉检测领域,就利用这个时间来写一份学习的博文~本博文主要是本人的学习笔记与调研报告(不涉及商业用途),博文的部分来自我团队的几位成员的调研报告(由于隐私 ...

  7. 计算机视觉目标检测算法总结1——简介

    目标检测是在图片中对可变数量的目标进行查找和分类 目标种类和数量问题 目标尺度问题 外在环境干扰问题 目标检测方法(深度学习) 基于一体化卷积网络的检测:Overfeat->YOLO->S ...

  8. 基于haar特征的adaboost算法_目标检测算法介绍

    什么是目标检测 目标检测是指从图像中找出目标,包括检测和识别两个过程,现实中由于环境的复杂性以及各类物体的形状.外观以及光照,遮挡等因素的干扰,所以目标检测一直也是计算机视觉最常见的挑战之一. 目标检 ...

  9. 深度学习之目标检测(一)—— 目标检测算法介绍

    目标检测问题 目标检测是在图片中对可变数量的目标进行查找和分类 查找就是定位到它在图片中的位置,通常表示为一个矩形框 对于这样的问题,主要存在三个主要难点 ①目标种类与数量问题 ②目标尺度问题 ③外在 ...

最新文章

  1. 自适应xib比代码frame布局更优秀
  2. UGUI_不规则按钮的响应区域
  3. c语言复合语句开始标记字符,国家开放大学C语言程序设计A第一次形考任务及答案(2020年整理)(7页)-原创力文档...
  4. Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)
  5. net 中viewstate的原理和使用
  6. 主流的质量管理和项目管理及研发管理体系探索
  7. PHP中用while的用法,php while语句的用法
  8. 【服务器风扇静音】确定风扇线序定义的通用方法——以IBM SystemX 3630 M4为例
  9. NOI 1966 玛雅历
  10. [英语歌曲]孤独:Soledad
  11. 不同因子影响下的不同情境的世界气温预测(的辣鸡tkinter UI可视化DEMO)
  12. Android根据音量大小绘制心电图(附源码)
  13. 实验:JS判断浏览器中英文版本
  14. OLTP与OLAP理解
  15. 机器学习之k-means算法详解
  16. 网贷7000元要还36万:年轻人,请你赶紧扔掉这四样东西
  17. 人力资源外包有哪些优势和劣性?企业如何适应
  18. linux 查看日志命令总结
  19. C语言:函数调用逆序输出
  20. Mipony(网络硬盘下载工具) v1.11简体中文绿色单文件版

热门文章

  1. 控制項學習三(從繼承開始)
  2. Python--简单的端口扫描脚本
  3. 华为手机连接电脑显示无法连接服务器,无法连接到服务器电脑
  4. unity循环滚动列表_【unity游戏开发】LoopScrollRect组件
  5. Element UI 在父类设置样式不起作用
  6. Springboot注册Servlet
  7. 【PC端vue ui框架学习】vue项目如何使用基于vue的UI框架iview
  8. go micro 学习笔记 2:环境搭建(可运行示例)
  9. csc.exe已退出,代码为-532462766
  10. 如何判断Unix系统的一个库文件是32位还是64位的