Object Detection with Discriminatively Trained Part Based Models(使用判别训练的部件模型进行目标检测 )
目录(?)[-]
- 摘要
- 关键词
- 引言
- 相关研究工作
- 模型
- 1 可变形部件模型
- 2 匹配
- 3 混合模型
- 隐藏变量SVM
- 1 半凸规划
- 2 最优化
- 3 随机梯度下降
- 4 难例挖掘SVM版
- 5 难例挖掘LSVM版
- 训练模型
- 1 学习参数
- 2 初始化
- 特征
- 1 HOG特征
- 11 像素级特征映射
- 12 空间聚合
- 13 归一化和截断限幅
- 2 PCA和解析降维
- 1 HOG特征
- 后处理
- 1 包围盒预测
- 2 非极大值抑制
- 3 上下文信息
- 实验结果
- 讨论
http://blog.csdn.net/u012154840/article/details/73089430
使用判别训练的部件模型进行目标检测
Pedro F. Felzenszwalb, Ross B.Girshick, David McAllester and Deva Ramanan
摘要
关键词
1 引言
之所以简单模型在实际中表现比复杂模型好的原因之一就在于复杂模型很难训练。对于目标检测,固定模型和特征袋模型很容易使用判别方法(例如SVM)进行训练。复杂模型很难训练,因为复杂模型经常使用隐藏信息。
图1,单组件人体模型的检测结果。此模型由一个粗糙的根滤波器(a所示),和几个高分辨率的部件滤波器(b所示)以及每个部件相对于根的空间位置模型(图c所示)组成。滤波器指定了HOG特征的权重。图中滤波器的可视化模型显示的是不同方向的正权重。空间位置模型的可视化图显示的将部件的中心放置到相对根的不同位置的变形花费(越白花费越高,表示部件偏离其理想位置越大)。
在我们的模型中,部件滤波器表示的图像特征是根滤波器所表示的图像特征所在的空间分辨率的两倍,也就是说我们是在多尺度对目标的外表建模。
为了使用未完全标注(partially labeled,意思应该是目标的部件没有进行标注,只标注了整个目标)的数据进行模型训练,我们使用了论文[3]中的多实例SVM(MI-SVM)中的一个隐藏变量公式,我们称作隐藏变量SVM(Latent SVM,LSVM)。在LSVM中,每个样本x使用下面形式的公式进行评分:
其中β是模型参数向量,z是隐藏变量,Φ(x, z)是特征向量。模型参数β是根滤波器、部件滤波器、变形花费权重串联起来构成的参数向量,z是目标配置参数,Φ(x, z)是特征金字塔中的一个窗口对应的HOG特征和部件变形特征串联起来构成的特征向量。
我们意识到公式(1)可以处理更通用形式的隐藏信息,例如,z可以用来指定富视觉语法(rich visual grammar)中的派生词。
本文的第二种模型使用混合星型模型来表示目标类别。混合模型在指定位置和尺度的得分是各个组件(component)模型在给定位置得分的最大值。在这种情况下,隐藏变量z表示组件类别及组件配置。图2展示了自行车的混合模型。
图2,含有两个组件模型的混合自行车模型的检测结果。这几个例子表明了混合模型的重要性。第一个组件捕捉自行车的侧视特征,第二个组件捕捉自行车的正视或接近正视特征。侧视组件模型可以变形来匹配自行车前轮抬起的姿势。
为了通过判别训练来获得好的结果,往往需要使用大量训练样本。在目标检测中,训练问题是非常不平衡的,因为相比于特定目标来说有更大量的未知的背景。这就需要我们通过搜索背景数据来找到一个相对少量的潜在的误报(虚警)的负样本集,或者叫做难例(负样本难例,HardNegative Example)。
Dalal和Triggs在论文[10]中采用了一种对难例进行数据挖掘的方法,但倒回到了1995年前后中用到的自举法(bootstrap)[35][38]。我们分析了SVM和LSVM训练中的数据挖掘算法,证明使用数据挖掘方法可以收敛到整个训练集上的最优模型。
本文中的目标模型是由滤波器定义的,滤波器可以对特征金字塔中的子窗口进行评分的。我们调查了与论文[10]中的HOG特征类似的特征,并找到了与原特征性能表现相同的维数更低的特征。通过对HOG特征做主成分分析(Principal Component Analysis),可以大大减少特征向量的维数,同时不产生显著的信息丢失。此外,通过分析主特征向量,我们找到了一个容易解释并且可高效计算的低维特征。
本文还分析了PASCAL目标检测挑战赛和其他相似数据集中的一些特定问题。我们展示了通过目标中部件的位置来估计目标的包围盒的方法,这是通过用最小二乘回归训练的特定模型的预测器来实现的。我们还展示了一个用来聚合几个目标检测器的输出结果的简单方法。此方法的基本思想是同一张图片中的某一类目标可以为其他类别的目标提供正例支持或反例驳斥。我们实现了这一思想,首先训练一个特定类别的分类器,用此分类器对此类别所有检测出的目标进行重新评分,重新评分的依据是该目标的原始得分和用其他类别的分类器对此目标进行评分两者中的最高值。
2 相关研究工作
3 模型
图3,特征金字塔和其中的一个人体模型实例。部件滤波器位于根滤波器两倍空间分辨率的金字塔层。
[10]中的系统使用单个滤波器来定义整个目标模型,它计算滤波器在HOG特征金字塔中所有位置和层的得分,通过对得分阈值化来检测目标。
3.1 可变形部件模型
目标假设的得分等于每个滤波器在各自位置的得分(从数据来看)减去此位置相对于根位置的变形花费(从空间来看)再加上偏差值:
如果di= (0, 0, 1, 1),则第i个部件的变形花费就是它实际位置与锚点位置距离的平方。通常情况下,变形花费是位移的任意可拆分二次函数。
引入偏差值是为了在将多个模型组成混合模型时,使多个模型的得分具有可比性。
目标假设z的得分可以表示成点积的形式:β·ψ(H, z),β是模型参数向量,ψ(H, z)是特征向量,如下:
这就将模型和线性分类器联系起来了,我们使用隐藏变量SVM(LSVM)来学习模型参数。
3.2 匹配
在图像中检测目标时,根据各个部件的最佳位置计算每个根位置的综合得分(overallscore),如下:
高得分的根位置定义了一次检测,产生高得分根位置的部件位置定义了一个完整的目标假设。
设是存放部件i在特征金字塔第l层的响应值的数组。匹配算法首先会计算这些响应值。注意Ri, l是滤波器Fi和特征金字塔第l层的交叉相关。
计算完这些滤波器响应值后,对其进行转换来允许具有空间不确定性:
这种变换会将滤波器高分扩展到邻近位置,同时也将变形花费考虑在内。Di, l(x, y) 值表示将第i个部件的锚点放在l层的位置(x,y)时它对根位置得分的最大贡献值。
转换后的数组Di,l可根据论文[14]中的广义距离变换算法在线性时间内从数组Ri, l计算得到。
每一层根位置的综合得分可以表示为该层根滤波器响应值加上经过变换和子采样的部件响应值,
前面说过,λ是我们为了获得某一层的两倍分辨率而需要在金字塔中向下走的层数。
此外,在计算Di,l的过程中[14]中的算法还能计算出部件的最优位置(是锚点坐标的函数),
找到一个高分的根位置(x0, y0,l0)后,可以在中查找对应的部件最佳位置。
3.3 混合模型
含有m个组件(component)的混合模型可由一个m元组定义:M = (M1, ..., Mm),其中Mc是第c个组件的模型。
一个混合模型的目标假设指定了一个组件Mc(1<=c<=m)以及Mc中每个滤波器的位置:,这里nc表示模型Mc中的部件个数。此混合模型目标假设的得分等于第c个组件模型的目标假设 的得分。
所以有
用混合模型检测目标时,使用上节介绍的匹配算法,找到对所有部件产生高分假设的根位置。
4 隐藏变量SVM
这里β是模型参数向量,z是隐藏变量。集合Z(x)定义了样本x所有可能的隐藏变量值。通过对此得分值进行阈值化,可以获得样本x的二分类类标。
类比经典SVM算法,我们使用带类标的样本集D = (<x1, y1>, ..., <xn,yn>),yi∈{-1, 1}来训练参数β,通过最小化下面的目标函数:
其中是标准铰链损失函数(hinge loss),常数C控制正则项的相对权重。
如果每个样本的隐藏变量有唯一可能值(|Z(xi)|=1),则是β的线性函数,此时变为线性SVM问题,这是LSVM的一个特例。
4.1 半凸规划
LSVM最终是一个非凸规划(non-convex)问题。然而,在下面所讨论的情况下LSVM是半凸规划(semi-convexity)问题,一旦将隐藏信息指定给正样本则训练问题变为凸规划问题。
几个凸函数的最大值问题是凸规划问题。在线性SVM中,有是β的线性函数,此时铰链损失函数对于每个样本都是凸的,因为它是两个凸函数的最大值。
对于正样本(yi= 1)来说,LSVM的铰链损失函数不是凸函数,因为它是一个凸函数f(x)= 0 和一个凹函数 的最大值。
但是,当LSVM的正样本的隐藏变量具有唯一可能的取值时, 是β的线性函数,因此损失函数是β的凸函数,再加上半凸性质,公式(14)变为凸规划问题。
4.2 最优化
设Zp指定训练集D中正样本的隐藏变量值。定义一个辅助目标函数:
特别的,。辅助目标函数给出了LSVM目标函数的上界,这证明了通过最小化LD(β, Zp)来训练LSVM是合理的。
在实际中我们使用坐标下降算法(Coordinate Descent)来最小化LD(β, Zp):
1) 估计部件位置(重新标注正样本):通过选择每个正样本的最高得分的隐藏值来最优化Zp,
2) 学习模型参数(最优化β):通过解决定义的凸优化问题来得到最优β值。
需要注意的是,模型参数β必须合理进行初始化,否则在步骤1中可能选择出非法的隐藏变量值,这会导致产生错误模型。
4.3 随机梯度下降
设,即zi(β)是使正样本xi得分最高的隐藏变量值(位置配置)。所以有。
在随机梯度下降算法中,用样本的子集来近似▽LD,然后向梯度下降的方向走一步。用来近似表示。算法按如下步骤迭代更新β值:
1) 设αt是第t次迭代的学习率(步长)。
2) 随机选取样本xi。
3) 设
4) 如果,则β∶=β-αtβ
5) 否则,
就像线性SVM中用的坐标下降方法,我们这里的方法也和感知机算法(Perceptron)很相似。如果当前对随机样本xi分类正确(大于函数间隔,如步骤4所述),则收缩β;否则(如步骤5所述),收缩β之后再加上Φ(xi, zi)乘以一个标量。
对于线性SVM来说,学习率(步长)αt = 1/t 时表现不错[37]。然而,收敛时间依赖于训练样本个数,对我们的问题来说,样本数非常巨大。特别的,如果存在很多“简单”样本(即信息量比较小的样本),步骤2会经常选中这些简单样本,这样迭代过程会进展比较缓慢。
4.4 难例挖掘,SVM版
自举法(Bootstrap)首先使用初始负样本集来训练一个模型,然后收集被这个初始模型错误分类的负样本来形成一个负样本难例集。用此负样本难例集训练新的模型,此过程可以重复多次。
也就是说,H(β,D)是D中被分类器β错误分类或位于分类器间隔内的样本;E(β,D)是D中被分类器β正确分类并位于分类间隔外的样本。在分类器边界上的样本既不是困难样本也不是简单样本。
设,即β*(D)表示样本集D上的最优β值(或者说根据样本集D训练得到的模型参数β)。
由于LD是严格凸的(为什么?不是半凸吗?),所以β*(D)是唯一的。
给定一个大训练集D,我们想要找到一个较小的样本集 ,使得β*(C) = β*(D)。
1) 令βt := β*(Ct),即用Ct训练一个模型βt。
2) 如果 ,即βt在样本集D上获得的难例都已包括在Ct中,停止迭代,返回模型βt。
下一个定理说明算法在有限次迭代后会停止。直观上看是由于 会在每次迭代时变大,但最大不会超过LD(β*(D))。
证明:收缩后的样本缓存 包含Ct中所有相对于βt 损失函数值不为零的样本。这表明对于βt 来说, 和 是等价的。既然βt 是 的最小值,所以也必定是 的最小值,所以 。
所以我们得出结论 。因为缓存数量有限,所以缓存中损失的增长次数也有限。
4.5 难例挖掘,LSVM版
现在我们介绍一种适用于LSVM的难例挖掘算法,此算法要求LSVM正样本的隐藏变量值是固定的。也就是说,我们最优化 而不是LD(β)。基于前面的讨论,我们知道这个约束可以保证最优化问题是凸规划。
特征向量缓存F由一系列二元组(i, v)构成,其中1≤i≤n是样本索引,v = Φ(xi , z),z∈Z(xi)。注意对于每个样本xi,可能有多个二元组(i, v) ∈F。
设I(F)是缓存F对应的样本集合。F中的特征向量定义了β的目标函数(公式20),在此函数中我们只考虑由I(F)指定的样本,对每个样本只考虑其在缓存F中的特征向量。
对4.3节中的梯度下降算法进行修改后可用来最优化LF。设V(i)是F中的特征向量的集合。梯度下降算法的迭代过程如下:
注意,I(F)的大小控制着收敛所必需的迭代次数,V(i)控制执行步骤3所需要的时间。在步骤5中,n = |I(F)|。
设,即β*(F)是根据特征向量缓存F训练得到的模型参数。我们想要找到D(Zp)一个较小的缓存F,使得β*(F) = β*( D(Zp) )。
定义训练集D上关于模型β的难特征向量(HardFeature Vector)为:
也就是说,难特征向量集H(β, D)由一系列二元组(i, v)组成,其中v是位于分类器β的分类间隔内(即分错类或无法分类的)的样本xi的最高得分特征向量。
即缓存F中位于分类器β的分类间隔外(即分类正确的)的特征向量。
对于样本i,如果存在一个特征向量使得yi(β·v) ≤1,则即使样本i有其他更高得分的特征向量,也不再将(i, v)看做简单样本。
下面介绍计算β*(D(Zp) )的数据挖掘算法。
此算法需要用到训练集D(Zp)的一个特征向量缓存,算法交替训练模型和更新缓存。
设F1是初始特征向量缓存,算法迭代过程如下:
1) 令βt := β*(Ft),即用Ft训练一个模型βt。
2) 如果 ,即βt在D(Zp)上找到的所有难特征向量都已包括在Ft中,则停止迭代,返回模型βt。
3) 对任意 ,令 ,即收缩缓存。
4) 对任意 ,令 ,即扩大缓存。
在步骤3中,通过删除简单特征向量来收缩缓存。在步骤4中,通过向缓存中加入新的特征向量来扩大缓存,这些特征向量是用βt在D(Zp)上获得的并至少有一个不在原Ft中。随着时间的推移,缓存中会累积起同个负样本的多个特征向量。
算法最终会收敛并返回β*(D(Zp) ),与4.4节中类似。
5 训练模型
5.1 学习参数
设c是一个目标类别。假设c的训练样本由正样本集P和背景图像集(负样本集)N给定。P是二元组(I, B)的集合,其中I是图片,B是I中c类目标的包围盒。
设M是一个有固定结构的(混合)模型。如前所述,一个模型的参数可由向量β定义。为了学习β,我们定义了一个带有隐式训练集D的LSVM训练问题,正样本来自集合P,负样本来自集合N。
每个样本<x,y>∈D都有一个相关的图片和特征金字塔H(x)。隐藏变量z∈Z(x)指明了模型M在特征金字塔H(x)中的一个实例。
定义Φ(x,z) = ψ(H(x), z),所以β·Φ(x, z)是模型M的假设z在H(x)上的得分。
(I, B)∈P指明了目标检测器应该在包围盒B定义的位置处检测出目标(“开火”),也就是说由B定义的根滤波器位置的总体得分(公式7)应该很高。
5.2 初始化
LSVM中使用的坐标下降算法容易受到局部极小值的影响,对初始化很敏感。这也是其他使用隐藏信息的算法所共有的缺点。我们分三个阶段来初始化和训练混合模型。
为了确定滤波器Fi的维数,选择Pi中包围盒的平均长宽比,并保证其面积不大于Pi中80%的包围盒。这就保证了对于Pi中的多数二元组(I, B),可以将Fi放在I的特征金字塔中使Fi与B显著重叠。
图5,(a)和(b)是汽车模型的初始根滤波器(即初始化过程中Phase1的结果)。(c)是汽车模型的初始部件滤波器(即初始化过程中Phase3的结果)
6 特征
6.1 HOG特征
6.1.1 像素级特征映射
每个像素点的梯度方向离散到p个值中的一个,可以使用对比度敏感定义B1(方向范围为0-360)或对比度不敏感定义B2(方向范围为0-180),
我们定义一个像素级的特征映射,它指定了每个像素梯度幅值的稀疏直方图。设b取值范围为{0, ..., p-1},则(x,y) 处的特征向量为
可以认为F是有p个方向通道的有向边映射,对于每个像素,通过离散化其梯度方向来选择一个方向通道,梯度幅值看做是有向边的强度。
6.1.2 空间聚合
最简单的特征聚合方法是将像素(x,y)映射到一个cell 中,定义cell的特征向量是此cell内所有像素的特征向量的和(或均值)。
我们这里没有将每个像素映射到唯一的cell,而是采用论文[10]中的方法,用“软合并”使每个像素通过双线性插值对周围4个cell的特征向量产生贡献。
6.1.3 归一化和截断(限幅)
梯度对偏置改变(changesin bias)具有不变性,这种不变性可以通过归一化获得。Dalal和Triggs[10]对特征向量C(i,j)用了4种不同的归一化因子。我们可以将这些因子写成 的形式:
每个因子都是对包含(i,j)在内的4个cell组成的块(block)的梯度能量的度量。
表示向量v被α截断(限幅)后形成的向量( 的第i个元素是v中第i个元素和α两者中的最小值)。对基于cell的特征映射C进行归一化并截断(限幅),然后串接起来就得到了HOG特征映射,如下:
6.2 PCA和解析降维
我们从大量各种分辨率的图片中收集了很多36维的HOG特征,并在这些特征向量上进行PCA分析。图6展示了分析出的主成分,从中我们发现很多有趣的现象。
图6,HOG特征的PCA分析。每个特征向量(eigenvector)都显示为4*9的矩阵,所以每一行对应一个归一化因子,每一列对应一个方向bin。特征值在特征向量上方。由前11个主特征向量定义的线性子空间基本上包含了HOG特征的所有信息。注意到,所有主特征向量沿其矩阵表达的行或列是定值。
由前11个主特征向量(eigenvector)定义的线性子空间基本上间包含了HOG特征的所有信息。事实上,我们用原始36维特征和向主特征向量投影得到的11维特征在PASCAL 2007数据集的所有目标类别上都获得了同样的结果。使用低维特征可以产生参数较少的模型,并加速学习和检测算法。然而由于在计算特征金字塔时需要相对耗时的投影步骤,使获得的加速优势有所减少。
36维HOG特征向量来自4个不同的归一化9维方向直方图,所以36维HOG特征向量可以自然地看做一个4*9的矩阵。图6中的主特征向量有一个非常特殊的结构:他们沿其矩阵表达的行或列(近似)是定值。所以主特征向量所依赖的线性子空间可由沿其矩阵表达的某一行或列为定值的稀疏向量定义。
设V={u1,..., u9} ∪{v1, ..., v4},其中ui和vi都是36维向量,其4*9的矩阵表达形式满足下列条件:
例如,
定义一个13维特征,其中的元素是36维HOG特征与每个uk和vk的点积。HOG特征向每个uk的投影通过计算对应方向的4个归一化值的和(即矩阵表达的某列的和)来获得,HOG特征向每个vk的投影通过计算对应归一化方法的9个方向值的和(即矩阵表达的某行的和)来获得。(注:13维特征并不是36维特征向V的线性投影,因为uk和vk不是正交的。事实上,由V定义的线性子空间的维数是12)
使用11维PCA特征和使用36维HOG特征或由V定义的13维特征可以获得同样的性能表现。然而,由于uk和vk是稀疏向量,计算由V定义的13维特征比计算向PCA主特征向量的投影要简单的多。此外,13维特征有一个简单的解释:9个方向特征和反应cell周围区域梯度能量的4个特征。
我们也可以定义对比度敏感的低维特征。我们发现有些目标类别适合使用对比度敏感特征,有些目标类别又适合用对比度不敏感特征。所以在实际中我们既使用对比度敏感特征又使用对比度不敏感特征。
设C是聚合有9个对比度不敏感方向的像素级特征映射而获得的基于cell的特征映射,D是聚合有18个对比度敏感方向的像素级特征而获得的基于cell的特征映射。用公式(26)来定义C和D的4种归一化因子。通过对C(i,j)和D(i,j)进行归一化和截断(限幅),可以获得一个4*(9+18)=108维的特征向量F(i,j)。实际中我们使用此108维向量的一个解析投影,此投影由下面几个统计量定义:27个在不同归一化因子上的累加和(即列的和),F中的每个方向通道对应一个;以及4个在不同方向(9维对比度不敏感方向)上的累加和(即行的和),每个归一化因子对应一个。cell尺寸k=8,截断(限幅)阈值α=0.2。最终的特征映射是31维向量G(i,j),其中27维对应不同的方向通道(9个对比度不敏感方向和18个对比度敏感方向),其中4维捕获(i,j)周围4个cell组成的block的梯度能量。
最后,我们注意到图6中的主特征向量(eigenvector)可以粗略地解释为二维可分离的傅里叶基。每个特征向量可以粗略地看做是一个变量的正弦或余弦函数。如此一来,可以使用有限个傅里叶基函数代替有限个离散方向来定义特征。
图6中傅里叶基(Fourier basis)的出现是一个有趣的实验结果。当d*d的协方差矩阵Σ是循环矩阵时,其特征向量可以形成一个傅里叶基,例如 。循环协方差矩阵(Circulant Covariance Matrix)来自对坐标旋转具有不变性的向量的概率分布。图6中二维傅里叶基的出现证明图像上HOG特征向量的分布(大致)具有二维旋转不变性。所以我们可以旋转方向bin,以及分别旋转4个归一化块。
7 后处理
7.1 包围盒预测
图7是汽车检测中包围盒预测的一个例子。这种简单方法在PASCAL数据集的某些类别上可以产生较小但值得注意的性能提升(见第8节)。
7.2 非极大值抑制
使用3.2节中的匹配过程经常会得到每个目标实例的多个重叠检测。我们用一个贪心的非极大值抑制(Non-maximum Suppression)程序来消除重复检测。
7.3 上下文信息
我们实现了一个用上下文信息(Contextual Information)对检测结果进行重新评分(二次评分)的简单程序。
为了对图像I中的检测结果(B, s)进行重新评分,我们用原始检测得分、包围盒的左上角和右下角坐标、以及图像上下文构建了一个25维(c(I)是20维)特征向量:
此重评分程序在PASCAL数据集中某些类别的平均检测精度上可以产生性能提升(见第8节)。我们的实验中用同样的数据集来训练检测模型和训练重评分分类器,在重评分分类器的训练中使用二次核函数SVM。
8 实验结果
我们用PASCALVOC 2006、2007和2008 comp3挑战赛的数据集和协议对系统进行评价。论文[11]-[13]中有详细介绍,需要强调的是,这些测评集是公认的目标检测中难度很大的测试集。
对于数据集中的每个目标类别,我们都训练了一个含两个组件的混合模型。图9是在2007数据集上学习得到的几个模型。图10是使用这些模型的检测结果,图中显示了高得分的正确检测和高得分的误报检测。
图9,在PASCAL 2007数据集上学习得到的一些模型
图10,在PASCAL 2007数据集上的高得分检测示例,选自每个类别中的前20个高得分检测。每行最后两张加框的图片是每类中的误报检测(false positive),注意其中很多误报都是由于包围盒标准过于严格(例如人体和猫类别中的误报)。
在一些类别上发生错误检测是由于类别间容易发生混淆,比如马和牛或小汽车和巴士。还有些错误检测是由于包围盒标准过于严格。人体类别最后两个误报就是由于预测的包围盒与ground-truth包围盒重叠不够充分。在猫的检测中,经常只检测出猫脸,所以预测的包围盒太小无法将猫身体的剩下部分包含进来。事实上,猫类别中得分最高的20个误报的包围盒都是只有猫脸。这是一个较极端的例子但也解释了为什么我们在猫类上的AP得分较低。猫类别训练数据的正样本中有很多都是只有猫脸,所以我们的猫模型的其中一个组件模型就是猫脸模型,见图9。
表1和表2总结了我们的系统在PASCAL 2006和2007挑战赛数据集上的结果。表3总结了在PASCAL 2008数据集上的结果,以及进入2008官方挑战赛的其他系统的结果。空方格表示该方法在对应的目标类别上没有进行测试。其中”UofCTTIUCI”是我们系统的一个初始版本。我们的系统在20个类别中的9个上得到最高AP,在其中8个上获得第二名。此外,在某些类别上例如人体中我们系统的得分比第二名要高出很多。
表1,PASCAL VOC 2006 结果。(a) 基础系统的平均精度(AP)得分,(b) 加上包围盒预测后的结果,(c) 加上包围盒预测和上下文重新评分后的结果。
表2,PASCAL VOC 2007 结果。(a) 基础系统的平均精度(AP)得分,(b) 加上包围盒预测后的结果,(c) 加上包围盒预测和上下文重新评分后的结果。
表3,PASCAL VOC 2008 结果。第一个表:(a) 基础系统的平均精度(AP)得分,(b) 加上包围盒预测后的结果,(c) 加上包围盒预测和上下文重新评分后的结果,(d) 最终得分在2008挑战赛中的排名。第二个表:参加挑战赛的其他系统的结果(UofCTTIUCI是我们系统的初始版本)
我们所做的所有试验中都是用PASCAL trainval数据集中没有标注为“困难”的目标实例来训练模型(我们使用了标注为“被截断”的实例)。我们的系统非常高效。用桌面电脑在PASCAL 2007 trainval数据集上需要4个小时来训练一个模型,需要3小时在test数据集上评价模型。在test数据集中有4952张图片,所以每张图片的平均运行时间是大约2秒。所有试验都是在配置有2.8Ghz 8核Intel Xeon CPU和Mac OS X 10.5 系统的Mac Pro电脑上进行的。系统在计算滤波器响应值时使用多核架构并行计算,其余的计算都是在单线程上完成的。
我们在耗费更长时间建立的PASCAL2006数据集上测试了系统的不同方面。图8总结了不同配置的模型在人体和汽车检测上的结果。其中包括含1个或2个组件的带有部件或没有部件的模型,以及带有部件和包围盒预测的2组件模型的结果。我们发现部件(以及包围盒预测)的使用可以显著地提升检测精度。带有多个组件模型的混合模型在汽车的检测中很有必要,但在人体的检测中并没有那么重要。
图8,在PASCAL 2006数据集上训练的人体和汽车模型的精度-查全率曲线。图中展示了含1个或2个组件的带有部件或没有部件的模型,以及带有部件和包围盒预测的2组件模型的结果。圆括号内是每个模型的平均精度(AP)得分。
我们还在INRIA人体数据集[10]上训练和测试了一个单组件模型。我们用PASCAL评价方法(用PASCAL开发包)在完全测试集上对此模型进行了评分,用带有包围盒预测的基础系统获得了高达.869的AP得分。
9 讨论
本文介绍了一个基于混合多尺度可变形部件模型的目标检测系统。我们的系统依赖于利用隐藏信息进行判别训练的新方法,以及将部件模型和图片进行匹配的高效方法。系统高效而精确,在较难的数据集上达到了目前最高水平。
文章下载:http://download.csdn.net/detail/masikkk/6870833
Deformable Part Model 相关网页:http://www.cs.berkeley.edu/~rbg/latent/index.html
Pedro Felzenszwalb的个人主页:http://cs.brown.edu/~pff/
PASCAL VOC 目标检测挑战:http://pascallin.ecs.soton.ac.uk/challenges/VOC/
以及Pedro Felzenszwalb 在CVPR 2008 的一篇文章:
A Discriminatively Trained, Multiscale,Deformable Part Model[CVPR 2008]的中文翻译
有关可变形部件模型(Deformable Part Model)中一些难点的一些说明:
http://blog.csdn.net/masibuaa/article/details/17534151
Object Detection with Discriminatively Trained Part Based Models(使用判别训练的部件模型进行目标检测 )相关推荐
- tensorflow精进之路(二十五)——Object Detection API目标检测(下)(VOC数据集训练自己的模型进行目标检测)
1.概述 上一讲,我们使用了别人根据COCO数据集训练好的模型来做目标检测,这一讲,我们就来训练自己的模型. 2.下载数据集 为了方便学习,我们先使用别人整理好的数据集来训练---VOC 2012数据 ...
- Object Detection with Discriminatively Trained Part-Based Models
Abstract 我们描述了一种基于多尺度可变形零件模型混合的物体检测系统. 我们的系统能够表示高度可变的对象类,并在PASCAL对象检测挑战中实现最先进的结果.虽然可变形零件模型已经变得非常流行,但 ...
- 【笔记】Comparison of Object Detection and Patch-Based Classification Deep Learning Models on Mid- to La
<Comparison of Object Detection and Patch-Based Classification Deep Learning Models on Mid- to La ...
- ssd目标检测训练自己的数据_目标检测Tensorflow object detection API之训练自己的数据集...
构建自己的模型之前,推荐先跑一下Tensorflow object detection API的demo JustDoIT:目标检测Tensorflow object detection APIzh ...
- 目标检测(object detection)—— RCNN总结
建议 在阅读本文之前,请先了解AlexNet 一.论文方法论总结 1. 要解决的问题 (1)如何使用深度网络定位目标 (2)如何使用少量带标注的检测数据(detection data)训练一个可靠的模 ...
- 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (3/3)
文章目录 3. Comparison to Other Detection Systems 4. Experiments 4.1. Comparison to Other Real-Time Syst ...
- YoLo: You Only Look Once: Unified, Real-Time Object Detection译文
Abstract摘要 We present YOLO, a new approach to object detection. Prior work on object detection repur ...
- Sparse R-CNN: End-to-End Object Detection with Learnable Proposals论文翻译
Sparse R-CNN: End-to-End Object Detection with Learnable Proposals论文翻译 摘要 1.介绍 2.相关工作 3.Sparse R-CNN ...
- 2018_Semantic SLAM Based on Object Detection and Improved Octomap_note
注释 (2022/4/15 上午9:14:24) "ABSTRACT" (Zhang 等., 2018, p. 1) (pdf) 提出了什么: "In this pape ...
最新文章
- BPM实例分享:如何设置开窗高度与宽度?
- 计算机网络的资源共享功能包,计算机网络的资源共享功能包括
- 阿里 java ide_纯JAVA版JAVA IDE环境(源码)
- C语言开发工具Win-TC
- ESP32控制器使用SX1278 LoRa模块的方法
- ROS解决'[rosrun] Couldn't find executable named ...'
- 关于安卓机型写串码 改串码 端口开启和基带qcn等一些经验
- chromium笔记
- 邻居好说话:冒泡排序
- Containerd客户端工具(CLI)介绍ctr,nerdctl,crictl,podman以及docker
- 任意输入一个正整数m和m个字符串,统计每行字符串中元音字母的个数。要求使用函数vowel()来判断是否为元音,其余功能在main()函数中实现。
- 日本区块链联盟助推日本区块链发展
- 【点宽专栏】虚拟遗憾最小化(CFR)之量化择时与交易
- HFSS中文手册_568页_微波仿真论坛出品[免费下载]
- 中文提交到git乱码_解决Git 中文乱码问题
- amaya网页设计.
- C#常用控件属性及方法汇总
- 如何生成IEEE论文源文件提交的高分辨率PDF?
- 考试系统随机出题处理逻辑
- php include语法,PHP include 和 require | w3cschool菜鸟教程