ADiscriminativelyTrained,Multiscale,DeformablePartModel判别训练的多尺度可变形部件模型Pedro.Felzenszwalb,David.McAllester,Deva.Ramanan摘要本文介绍了一种用于目标检测的判别训练的多尺度可变形部件模型。我们的系统在平均精度上达到了2006PASCAL人体检测竞赛中最优结果的两倍,同样比2007PASCAL目标检测比赛中20个类别中的10个的最优结果都要好。此系统非常依赖于可变形部件模型。随着可变形部件模型逐渐流行,它的价值并没有在类似PASCAL的较难的数据集上被展示。我们的系统还依赖于判别训练的新方法。我们将一种挖掘难例(HardNegativeExample)的间隔敏感方法与隐藏变量SVM(LatentvariableSVM)结合在一起。隐藏SVM类似于隐藏条件随机场(HiddenCRF)问题,最终是一个非凸规划的训练问题。隐藏SVM是半凸规划(semi-convex)问题,但是一旦将隐藏信息指明给正样本,则训练问题变为凸规划问题。我们相信我们的训练方法最终可以利用更多的隐藏信息,例如层次(grammar)模型以及包含隐式三维姿态的模型。1引言我们所研究的是在静态图片中的某类目标(例如人、车)的检测和定位问题。我们提出了一种多尺度可变形部件模型来解决此问题,此模型的判别训练过程只需要正样本的标注矩形框(意思是说只需要整个目标的标注信息,不需要各个部件的标注信息)。基于此模型实现了一个高效而精确的检测系统,可以在两秒内处理一张图片并达到明显比之前方法更高的检测精度。我们的系统在平均精度上可以达到2006PASCAL人体检测挑战赛最佳结果[5](Dalal的HOG方法)检测精度的两倍,同样比2007PASCAL目标检测中20个类别中的10个的最优结果都要好。图1显示了我们的人体模型的检测结果。图1人体模型的检测结果。此模型是由一个粗糙的全局模版、几个高分辨率的部件模版和每个部件之间的空间模型构成的。目标可被可变形部件表示的概念提供了表示目标类别的框架[1-3,6,10,12,13,15,16,22]。尽管这些模型在概念上很吸引人,但是很难在实际中实现。在一些难度大的数据集上,可变形模型经常被一些从理论上看很弱的模型——例如刚体(固定rigid)模版[5]或特征袋[23]——在实践中所超越。我们的主要目标就是要解决这一问题。可变形部件模型包括一个粗糙的包含整个目标的全局模版,以及若干个高分辨率的部件模版,所谓的模版就是梯度方向直方图HOG[5]特征向量。就像[14,19,21]中所述,模型是判别训练的。然而,我们的系统是半监督的,使用最大间隔框架进行训练,并且不依赖于特征检测。我们还介绍了一种简单而有效的从非完美标注的数据集中学习部件模型的方法。和论文[4]中的需要大量计算的方法不同,我们的方法在单CPU上可以在3小时内学习一个模型。此论文的另一个贡献是提出了一种新的判别训练方法,我们为处理隐藏变量例如部件位置扩展了SVM,并且提出了一种挖掘难例(HardNegativeExamples)的新方法。我们认为处理部分标注的数据是机器学习在计算机视觉领域中的一个重要问题。例如,PASCAL的数据集只给出了每个目标的正样本的矩形框。我们将目标的每个部件的位置看做隐藏变量,同时也将目标的位置看做是隐藏变量,只需要我们的分类器选出一个与已标注的矩形框有大量重叠的窗口。隐藏SVM就像条件随机场CRF[19]一样,最终是一个非凸训练问题。然而,隐藏SVM是半凸规划(semi-convex)问题,但是一旦将隐藏信息指明给正样本,则训练问题变为凸规划问题,可使用一般的坐标下降算法求解。系统综述我们的系统使用窗口扫描方法。目标模型包括一个全局的根滤波器和几个部件模型。每个部件模型包括一个空间模型和一个部件滤波器,空间模型定义了一系列此部件相对于检测窗口的空间位置,以及每个相对位置的变形花费。检测窗口的得分是根滤波器的分数加上各个部件的分数的总和,每个部件的分数是此部件的各个空间位置得分的最大值,每个部件的空间位置得分是部件在该子窗口上滤波器的得分减去变形花费。这与经典的基于部件的模型很相似[10][13]。根滤波器和部件滤波器的得分都是通过计算窗口内的梯度方向直方图和一些权重的点积来获得的。根滤波器就等价于Dalal-Triggs的HOG模型[5]。部件滤波器的特征是在两倍根滤波器分辨率的空间上计算的。我们的模型是在混合尺度中定义的,检测目标时通过搜索图像金字塔来实现。训练使用一系列含标注的图像,每个目标的实例都有一个矩形框。我们将检测问题转换为二分类问题。对于每个样本x,通过下式计算x的得分:β是模型的参数向量,z是隐藏变量(例如部件的位置)。我们定义了一种扩展的SVM,叫做隐藏变量SVM(LSVM,LatentvariableSVM)。LSVM的一个重要特性是,当将隐藏信息指明给正样本时,则训练问题变为凸优化问题,从而可以使用坐标下降算法求解。在实际中,我们对三元组(x1,z1,y1,...,xn,zn,yn)迭代地应用经典SVM方法,其中zi是上一次迭代学习到的模型中最适合xi的隐藏标签。最初的根滤波器由PASCAL数据集的矩形框所标定的目标产生,各个部件根据根滤波器进行初始化。2模型我们模型的潜在基础是论文[5]中的方向梯度直方图(HOG)。我们在两个不同的尺度上提取HOG特征:全局固定模版使用粗糙特征,可以覆盖整个检测窗口;局部部件模版使用精细尺度特征,可以相对于检测窗口移动。部件相对位置的空间模型等价于星型图或论文[3]中的3-fan图,而粗糙全局模版作为位置参考。2.1HOG描述子我们根据论文[5]中的描述来构建HOG特征。图像首先被划分为不重叠的8*8像素区域,或者叫做细胞单元(cell)。对于每个细胞单元统计一个一维的梯度方向直方图,这些直方图可以表示局部形状特征,并且能适应小的形变。每个像素的梯度方向被离散到9个方向bin之一,而每个像素的梯度幅值为方向进行投票。对于彩色图,分别计算每个通道的梯度,选取梯度幅值最大的那个通道的梯度作为像素点的梯度。然后,将2*2个细胞单元组成块(block),对块进行归一化,形成一个9*4大小的向量。通过计算标准图像金字塔中每层图像的HOG特征,我们定义了一个HOG特征金字塔,HOG金字塔中每一层的的最小单位是细胞单元,见图2。金字塔顶层的特征可以在大范围内捕获粗糙的梯度直方图,金字塔底层的特征捕获小范围的精细尺度梯度直方图。图2,HOG特征金字塔以及人的模型在该金字塔内的示例。蓝色矩形表示根滤波器的作用区域,每个黄色矩形表示对应的部件滤波器的作用区域。部件滤波器被放置在两倍空间分辨率于的层。根滤波器位置2.2滤波器(模版)滤波器就是指定HOG金字塔子窗口权重的矩形模版,一个w*h大小的滤波器F是一个含w*h*9*4个权重的向量。所谓滤波器的得分就是此权重向量与HOG金字塔中w*h大小子窗口的HOG特征向量的点积(DotProduct)。论文[5]中的系统使用单个滤波器来定义目标模型,通过对HOG金字塔中每个w*h大小子窗口的得分进行阈值化来检测特定类别的目标。假设H是HOG金字塔,p=(x,y,l)表示金字塔第l层(x,y)位置的一个细胞单元。φ(H,p,w,h)是将金字塔H中以p为左上角点的w*h大小子窗口的HOG特征串接起来得到的向量。所以,滤波器F在此检测窗口上的得分为:F·φ(H,p,w,h)。此后,在不引起歧义的情况下,我们使用φ(H,p)代表φ(H,p,w,h)。2.3可变部件模型我们的可变形部件模型包括一个覆盖整个目标的粗糙的根滤波器(rootfilter),和若干个表示目标各个部件的高分辨率的部件滤波器(partfilter)。图2表明此模型在HOG金字塔中的位置。根滤波器的位置定义了检测窗口(即滤波器中的细胞单元所包含的所有像素)。部件滤波器位于金字塔的下几层,使得部件滤波器所在层的HOG细胞单元尺寸是根滤波器所在层的细胞单元尺寸的一半。我们发现使用高分辨率的特征来定义部件滤波器对于获得高识别率是必要的,这样部件滤波器相比于根滤波器就可以表示更细腻的边缘信息。例如在建立人脸模型时,根滤波器用来捕获脸的边界这些粗糙信息,部件滤波器可以捕获眼镜、鼻子、嘴这些细节信息。含n个部件的模型可以通过根滤波器F0和一系列部件模型(P1,...,Pn)来定义,其中Pi=(Fi,vi,si,ai,bi)。Fi是第i个部件的滤波器;vi和si都是二维向量,都以细胞单元为单位,vi指明第i个部件位置的矩形中心点相对于根位置的坐标,si是此矩形的大小;ai和bi也都是二维向量,指明一个二次函数的参数,此二次函数用来对第i个部件的每个可能位置进行评分。图1展示了一个人体模型。模型在HOG金字塔中的位置可以用z=(p0,.....,pn)来表示,当i=0时,pi=(xi,yi,li)表示根滤波器的位置;i0时,pi=(xi,yi,li)表示第i个部件滤波器的位置。我们假设每个部件所在层的HOG细胞单元的尺寸是根所在的层的细胞单元尺寸的一半。空间位置的得分等于每个部件滤波器的得分(从数据来看)加上(?加上减去都一样,通过正负号控制就行)每个部件的位置相对于根的得分(从空间来看)。即:注意:上式是原版论文中的公式,如果表示为减去变形花费就是:其中注意:上式是原版论文中的,可能是写错了,否则解释不通,正确的是:(x0,y0)是根滤波器在其所在层的坐标,为了统一到部件滤波器所在层需乘以2。vi是部件i相对于根的坐标偏移,所以2(x0,y0)+vi表示未发生形变时部件i的坐标。所以表示部件i的变形程度,和在-1到1之间。模型在HOG金字塔中的位置有很多可能(指数级),我们使用动态规划和距离变换方法[9][10]来计算模型中各个部件的最佳位置,使其成为根位置的函数。这会花费O(nk)的时间,n是模型中的部件个数,k是HOG金字塔中细胞单元的个数。在进行目标检测时,根据各个部件的最可能位置来对根位置评分,然后对此分数进行阈值化。空间位置z的得分可以表示为模型参数向量β与向量ψ(H,z)的点积,即β·ψ(H,z),其中:ψ(H,z)可以简单的理解为HOG金字塔H中模版z对应的特征向量。我们使用此表达式来学习模型参数,它将可变形部件模型和线性分类器联系了起来。这里定义的空间模型的一个有意思的地方是我们允许参数(ai,bi)是负的,如此以来,相对于此前的quadratic”spring”(二次弹簧)?花费,此模型变得更具通用性。3学习PASCAL训练数据集包含大量用矩形框标注目标实例的图片。我们把利用这些数据学习可变形部件模型的问题简化为二分类问题。设D=(x1,y1,...,xn,yn)是标注好的一系列样本,其中yi∈{-1,1}是样本类别,H(xi)是HOG金字塔,Z(xi)是根滤波器和部件滤波器的合法位置。我们从训练集的矩形框中截取正样本,对于这些样本定义Z(xi),其中根滤波器的位置必须至少和矩形框的位置重叠50%。负样本来自不包含目标的图片,图中每个根滤波器的位置产生一个负样本。注意在正样本中,我们将根滤波器和部件滤波器的位置看做隐藏变量。我们发现在训练时允许根滤波器的位置存在不确定性可以很大程度上提高系统的表现(见第四部分)。3.1隐藏变量SVM隐藏变量SVM的定义如下。对每个输入样本x用以下函数进行评分:其中β是模型参数向量,z是一系列隐藏变量。对于可变形模型,定义Φ(x,z)=ψ(H(x),z),所以β·Φ(x,z)是根据位置z放置模型的得分。类比经典SVM,根据标注的样本集D=(x1,y1,...,xn,yn),通过最优化下面的目标函数来训练模型参数β,β*(D)表示样本集D上的最优β值(或者说是根据样本集D训练得到的模型参数β):如果将隐藏变量域Z(xi)指明为确定的值,变为确定的数β,由此就变为线性SVM问题,这是隐藏变量SVM的一个特例。隐藏变量SVM是通用的