目标检测算法回顾之传统算法

传统的目标检测算法

  • 总体回顾
    • 基于特征
    • 基于分割
  • 一般流程
  • 经典算法
    • Harr+Adaboost
    • 流程
      • Harr特征
      • Adaboost算法
    • HOG + SVM
      • 概述
      • 方法
      • HOG特征的优缺点
    • DPM
      • DPM特征
      • DPM流程
    • DPM vs HOG
  • 总结

说明:本文仅供学习

目标检测算法回顾之传统算法_第1张图片
虽然传统的目标检测方法现在比较少用,但我们认为有必要了解其手工设计的特征,因为现在在工业和医学领域这些手工特征与深度学习方法的融合也带来了不错的效果。当然,我们的汇报仍然是以基于深度学习的方法为主。

总体回顾

基于传统的目标检测算法主要可以分为基于特征和基于分割两个方向。

基于特征

其中,基于特征的目标检测算法主要是通过找到对象的某种属性(可以是手工设计的特征也可以是算法提取的抽象特征)来实现检测与识别。
目标检测算法回顾之传统算法_第2张图片
在传统的算法中,主要的特征如下图所示,有Harr特征、HOG特征、灰度特征、SIFT特征、SURF特征等。目标检测算法回顾之传统算法_第3张图片

基于分割

而基于分割的目标检测算法则主要通过区域、颜色及边缘的特性来实现检测与识别。【对应的相关算法我PPT里面都有放,这里就不一一罗列啦】
目标检测算法回顾之传统算法_第4张图片

一般流程

目标检测算法回顾之传统算法_第5张图片
传统算法的一般处理流程包括以下六个步骤,其主要的思路就是:

  • 首先,利用滑动窗口或者选择性搜索等方法方法对一幅图像进行处理获取候选框;
  • 其次,对每个框提取特征(Harr、HOG…), 判断是不是目标,若判定为目标则同时记录其位置坐标(x,y,w,h)–定位;
  • 然后, 利用分类器(Adaboost、决策树)对目标进行分类–识别。
  • 最后,对分类识别的结果进行一系列的后处理操作,比如说NMS(非极大值抑制)来去除掉多余的候选框,得到最佳的物体检测位置。
    目标检测算法回顾之传统算法_第6张图片

经典算法

目标检测算法回顾之传统算法_第7张图片
经典的传统检测算法主要有Viola Jones检测器,HOG检测器,基于部件的可变形模型(DPM)这三种。

  • Harr+Adaboost推荐资源:

    AdaBoost1 AdaBoost2 AdaBoost3 集成学习

  • HOG+SVM推荐资源:

    HOGSVM1

  • DPM推荐资源:

    DPM1 DMP2 DMP3 传统1

Harr+Adaboost

流程

Viola Jones检测器由三个核心步骤组成,即Haar-like特征和积分图、Adaboost分类器以及级联分类器。
目标检测算法回顾之传统算法_第8张图片

Harr特征

Harr特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征,实际上就是一种梯度算工资,主要可以分为线性特征、边缘特征、点特征(中心特征)和对角线特征这四种特征。

目标检测算法回顾之传统算法_第9张图片

Adaboost算法

AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。其中,Bossting算法的本质就是集成学习。集成算法一般分为三种:Bagging,Boosting,Stacking(我们可以把它简单地看成并行,串行和树型)。

AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分(更富信息)的样本上。虽然AdaBoost方法对于噪声数据和异常数据很敏感。但相对于大多数其它学习算法而言,却又不会很容易出现过拟合现象。
目标检测算法回顾之传统算法_第10张图片

Bagging是把各个基模型的结果组织起来,取一个折中的结果;Boosting是根据旧模型中的错误来训练新模型,层层改进;Stacking是把基模型组织起来,注意不是组织结果,而是组织基模型本身,该方法看起来更灵活,也更复杂。因此,Adaboost算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为一个强分类器。

HOG + SVM

概述

梯度直方图HOG(Histogram of Oriented Gradients)是法国人Dalal在2005年CVPR会议上提出的特征提取算法,并将其与 SVM 配合,用于行人检测。目标检测算法回顾之传统算法_第11张图片

方法

HOG检测器是沿用了最原始的多尺度金字塔+滑窗的思路进行检测。为了检测不同大小的目标,通常会固定检测器窗口的大小,并逐次对图像进行缩放构建多尺度图像金字塔。为了兼顾速度和性能,HOG检测器采用的分类器通常为线性分类器或级联决策分类器等。
目标检测算法回顾之传统算法_第12张图片
在图像的特征提取过程中,最重要的两个概念是不变性(包括平移不变性、旋转不变性、尺度不变性以及光照不变性等)和区分性(特征的表达能力)。为了兼顾二者的特点,HOG特征采用了如下的策略:将图像所在区域划分为很多小的连通区域,即细胞单元Cell,然后对Cell的梯度幅值和方向进行投票统计,形成基于梯度特性的直方图。除此之外,为了进一步增强其光照不变性以及非线性表达能力,HOG特征还首次引入了区块(Block)的概念,将相邻的Cell归并为一个Block,并在Block内对Cell特征进行局部归一化。归一化的块描述符叫做HOG描述子(feature descriptor)。将检测窗口中的所有块的HOG描述子组合成最终的特征向量。然后使用SVM分类器进行目标和非目标的二分类(检测)。

HOG特征的优缺点

  • 优点:核心思想是所检测的局部物体外形能够被梯度或边缘方向的分布所描述,HOG能较好地捕捉局部形状信息,对几何和光学变化都有很好的不变性;HOG是在密集采样的图像块中求取的,在计算得到的HOG特征向量中隐含了该块与检测窗口之间的空间位置关系。

  • 缺点:特征描述子获取过程复杂,维数较高,导致实时性差;很难处理遮挡问题,人体姿势动作幅度过大或物体方向改变也不易检测(这个问题后来在DPM中采用可变形部件模型的方法得到了改善);由于梯度的性质,HOG对噪点相当敏感,在实际应用中,在block和Cell划分之后,对于得到各个区域,有时候还会做一次高斯平滑去除噪点。

DPM

DPM特征

DPM是基于经典手工特征的检测算法发展的顶峰,连续获得VOC(Visual Object Class)07,08,09年的检测冠军。其中,DPM特征的设计可以看作HOG特征的改进版,其取消了原HOG中的块(Block),只保留了单元(Cell),如左图所示,假设一个8*8的Cell,将该细胞单元与其对角线临域的4个细胞单元做归一化操作,所以效果和原HOG特征非常类似。计算梯度方向时可以计算有符号(0-360°)或无符号(0-180°)的梯度方向,有些目标适合使用有符号的梯度方向,而有些目标适合使用无符号的梯度,作为一种通用的目标检测方法,DPM与原HOG不同,采用了有符号梯度和无符号梯度相结合的策略。
目标检测算法回顾之传统算法_第13张图片

具体来说:首先,只提取无符号的HOG梯度,将会产生4*9=36维特征,将其看成一个49的矩阵,分别将行和列分别相加,最终将生成4+9=13个特征向量,得到13维特征,基本上能达到HOG特征36维的检测效果。为了提高那些适合使用有符号梯度目标的检测精度,作者再对18个有符号梯度方向求和得到18维向量,也加进来,这样,一共产生13+18=31维梯度特征。实现了很好的目标检测。

DPM流程

DPM算法针对目标的多视角问题,采用了多组件(Component)的策略,针对目标本身的形变问题,采用了基于图结构(Pictorial Structure)的部件模型策略。此外,将样本的所属的模型类别,部件模型的位置等作为潜变量(Latent Variable),采用多示例学习(Multiple-instance Learning)来自动确定。具体的流程如下图所示:
目标检测算法回顾之传统算法_第14张图片

对于任意一张输入图像,提取其DPM特征图,然后将原始图像进行高斯金字塔上采样放大原图像,然后提取其DPM特征图(2倍分辨率)。将原始图像的DPM特征图和训练好的Root filter做卷积操作,从而得到Root filter的响应图。对于2倍图像的DPM特征图,和训练好的Part filter做卷积操作,从而得到Part filter的响应图。然后对其精细高斯金字塔的下采样操作。这样Root filter的响应图和Part filter的响应图就具有相同的分辨率了。然后将其进行加权平均,得到最终的响应图。亮度越大表示响应值越大。

DPM采用了传统的滑动窗口检测方式,通过构建尺度金字塔在各个尺度搜索。DPM的主要思想可简单理解为将传统目标检测算法中对目标整体的检测问题拆分并转化为对模型各个部件的检测问题,然后将各个部件的检测结果进行聚合得到最终的检测结果,即“从整体到部分,再从部分到整体”的一个过程。下图为某一尺度下的行人检测流程,即行人模型的匹配过程。某一位置与根模型/部件模型的响应得分,为该模型与以该位置为锚点(即左上角坐标)的子窗口区域内的特征的内积。也可以将模型看作一个滤波算子,响应得分为特征与待匹配模型的相似程度,越相似则得分越高。左侧为根模型的检测流程,跟模型响应的图中,越亮的区域代表响应得分越高。右侧为各部件模型的检测过程。首先,将特征图像与模型进行匹配得到部件模型响应图。然后,进行响应变换:以锚点为参考位置,综合考虑部件模型与特征的匹配程度和部件模型相对理想位置的偏离损失,得到的最优的部件模型位置和响应得分。

DPM vs HOG

目标检测算法回顾之传统算法_第15张图片
DPM算法优点
方法直观简单;运算速度块;适应动物变形;

DPM算法缺点
1、性能一般,无法适应大幅度的旋转,稳定性很差;

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

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

总结

目标检测算法回顾之传统算法_第16张图片
传统特征虽然在某些方面可以帮助深度学习模型精度的提高,但对于传统检测算法来说,特征的设计与选择极大程度上依赖于人工,其准确度、客观性、鲁棒性与泛化性都受到了一定的制约。同时,传统的算法大多采用滑动窗口算法,其计算时间效率低下,为多流程的步骤处理,处理复杂且准确度低。因此,随着算力及数据的发展,传统的检测算法明显无法满足人们的需求。

你可能感兴趣的:(#,目标检测学习笔记,算法,目标检测,决策树)