DPM目标检测算法

看到KCF中的fhog.cpp看着吃力,找到该博客帮助很大

https://blog.csdn.net/ttransposition/article/details/41806601#t0

方便阅读查找,还请见谅

      推荐阅读:

        DPM: http://blog.csdn.net/masibuaa/article/category/2267527

        HOG: HOG(毕业论文节选)       

  1. DPM目标检测算法

    DPM算法由Felzenszwalb于2010年提出,是一种基于部件的检测方法,对目标的形变具有很强的鲁棒性。目前DPM已成为众多分类、分割、姿态估计等算法的核心部分,Felzenszwalb本人也因此被VOC授予"终身成就奖"。

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

    本文简要介绍DPM的特征提取,检测模型和检测流程。

  2. DPM的特征

    DPM采用了HOG特征,并对HOG特征进行了一些改进。    

    图 4.4 DPM改进后的HOG特征

    如图 4.4,DPM改进后的HOG特征取消了原HOG中的块(Block),只保留了单元(Cell),但归一化时,是直接将当前单元与其周围的4个单元(Cell)所组成的一个区域归一化,所以效果和原HOG特征非常类似。计算梯度方向时可以计算有符号(0-360°)或无符号(0-180°)的梯度方向,有些目标适合使用有符号的梯度方向,而有些目标适合使用无符号的梯度,作为一种通用的目标检测方法,DPM与原HOG不同,采用了有符号梯度和无符号梯度相结合的策略。如此,如果直接将特征向量化,那么单单一个 的单元,其特征维数就高达,维数过高。Felzenszwalb提取了大量单元的无符号梯度,每个单元共 维特征,并进行了主成分分析(Principal Component Analysis,PCA),发现使用前11个特征向量基本上可以包含所有的信息,不过为了快速计算,作者由主成分可视化的结果得到了一种近似的PCA降维效果。具体来说,将36维向量看成的矩阵,对每一行,每一列求和得到13维特征,基本上能达到HOG特征36维的检测效果。为了提高那些适合使用有符号梯度目标的检测精度,作者再对18个有符号梯度方向求和得到18维向量,并入其中,最后得到图 4.4中的维特征向量。

  3. DPM的检测模型

    DPM目标检测算法_第1张图片 DPM目标检测算法_第2张图片 

    (a)       (b)       (c)

    图 4.5 DPM行人模型

    DPM V3版本的目标检测模型由两个组件构成,每一个组件由一个根模型和若干部件模型组成。图 4.5(a)和图 4.5(b)是其中一个组件的根模型和部件模型的可视化的效果,每个单元内都是SVM分类模型系数对梯度方向加权叠加,梯度方向越亮的方向可以解释为行人具有此方向梯度的可能性越大。如图 4.5(a),根模型比较粗糙,大致呈现了一个直立的正面/背面行人。如图 4.5(b)所示,部件模型为矩形框内的部分,共有6个部件,分辨率是根模型的两倍,这样能获得更好的效果。从中,我们可以明显地看到头、手臂等部位。为了降低模型的复杂度,根模型和部件模型都是轴对称的。图 4.5(c)为部件模型的偏离损失,越亮的区域表示偏离损失代价越大,部件模型的理想位置的偏离损失为0。

  4. DPM的检测流程

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

    图 4.6 DPM算法的检测流程

             

    式是在尺度为的层,以为锚点的检测分数。为根模型的检测分数。由于同一个目标有多个组件,而不同组件模型的检测分数需要对齐,所以需要设定偏移系数为第个部件模型的响应,由于部件模型的分辨率是根模型的一倍,因此部件模型需要在尺度层匹配。因此,锚点的坐标也需要重新映射到尺度层,即放大一倍,,部件模型相对锚点的偏移为,所以在尺度层,部件模型的理想位置为

             

    响应变换如式,其中,为部件模型在尺度层的理想位置,为相对的偏移量,为部件模型在处的匹配得分。为偏移所损失的得分,为偏移损失系数,是模型训练时需要学习的参数,模型初始化时,即偏移损失为偏移量相对理想位置的欧氏距离。

你可能感兴趣的:(KCF,KCF,目标检测)