参考 Histograms of Oriented Gradients for Human Detection - 云+社区 - 腾讯云
摘要
以基于线性SVM的人体检测为例,研究了鲁棒视觉目标识别的特征集问题。在回顾了现有的基于边缘和梯度的描述符之后,我们通过实验证明了方向梯度(HOG)描述符的直方图网格在人类检测方面明显优于现有的特征集。我们研究了计算的各个阶段对性能的影响,得出结论:在重叠描述符块中,细尺度梯度、细方向边距、相对粗的空间边距和高质量的局部对比度归一化都是获得良好结果的重要因素。新方法在原有MIT行人数据库的基础上实现了近乎完美的分离,因此我们引入了一个更具挑战性的数据集,其中包含1800多张带注释的人类图像,具有大范围的姿态变化和背景。
1、简介
在图像中检测人类是一项具有挑战性的任务,因为他们的外表变化无常,而且他们可以采用的姿势也很广泛。第一个需求是一个健壮的特性集,它允许清晰地识别人体形状,即使在困难光照下的杂乱背景中也是如此。我们研究了用于人类检测的特征集问题,结果表明,与包括小波在内的现有特征集相比,面向梯度描述符的局部归一化直方图(local归一化Histogram of Oriented Gradient, HOG)具有更好的性能。所提出的描述符让人联想到边缘方向直方图、SIFT描述符和形状上下文,但是它们是在密集的网格中计算的,网格中单元间距均匀,并且使用重叠的局部对比度规范化来提高性能。我们以“行人检测”为例,详细研究了各种实现选择对检测器性能的影响,“行人检测”是指检测大多数可见或多或少直立姿态的人。为了简单和快速,我们在整个研究中使用线性SVM作为基线分类器。新的检测器在麻省理工学院行人测试集上给出了基本完美的结果,因此我们创建了一个更具挑战性的集合,包含1800多张行人图像,具有大范围的姿势和背景。继续工作表明,我们的特性集在其他基于形状的目标类中表现得同样好。
我们在§2中简要讨论了之前关于人体检测的工作,在§3中概述了我们的方法,在§4中描述了我们的数据集,并在§5-6中对过程的每个阶段进行了详细的描述和实验评估。主要结论总结在§7中。
2、以前的工作
关于物体检测有大量的文献,但这里我们只提到一些关于人类检测的相关论文。Papageorgiou等人的描述了一个基于多项式SVM的行人检测器,该检测器使用经过校正的Haar小波作为输入描述符,其中有一个基于部件(子窗口)的变量。Depoortere等人给出了这个[2]的优化版本。Gavrila & Philomen采用了更直接的方法,提取边缘图像,并使用倒角距离将它们匹配到一组学习样本。该方法已应用于实际的实时行人检测系统中。Viola等人构建了一种高效的移动人体检测器,利用AdaBoost训练出一系列基于类haar小波和时空差异的复杂区域抑制规则。Ronfard等人将基于SVM的一阶高斯滤波器和二阶高斯滤波器上的肢体分类器结合到动态规划框架中,构建了一个铰接体检测器,该框架类似于Felzenszwalb & Huttenlocher和Ioffe & Forsyth。Mikolajczyk等人的使用组合的方向-位置直方图与二阈值梯度大小,建立了一个基于零件的方法,其中包含了人脸,头部,以及身体上下部分的正面和侧面轮廓的检测器。相比之下,我们的检测器使用了一个更简单的结构和一个单一的检测窗口,但似乎在行人图像上提供了更高的性能。
3、方法的概述
本节概述了我们的特征提取链,如图1所示。实施细节推迟到第6章。该方法是基于对密集网格中图像梯度方向的良好归一化局部直方图的估计。在过去的十年中,类似的功能得到了越来越多的应用。其基本思想是,即使不知道相应的梯度或边缘位置,也可以通过局部强度梯度或边缘方向的分布较好地表征局部物体的外观和形状。实际上,这是通过将图像窗口分割成小的空间区域(“单元”)来实现的,因为每个单元在单元的像素上累积一个局部的梯度方向或边缘方向的一维直方图。组合的直方图条目形成表示形式。为了更好地保持光照、阴影等的不变性,在使用它们之前对局部响应进行对比归一化也是有用的。这可以通过在较大的空间区域(“块”)上累积局部直方图“能量”的度量,并使用结果对块中的所有单元格进行标准化来实现。我们将规范化描述符块称为面向梯度(HOG)描述符的直方图。将检测窗口与密集(实际上是重叠的)的HOG描述符网格平铺在一起,并在传统的基于SVM的窗口分类器中使用组合的特征向量,就得到了我们的人类检测链(见图1)。
使用方向直方图有许多前体,但它只达到成熟时结合当地空间直方图和正常化Lowe的尺度不变特征变换(筛选)宽基线图像匹配方法,它提供了底层的图像块描述符匹配尺度不变的要点。SIFT风格的方法在这个应用程序中表现得非常好。形状上下文工作研究了替代单元格和块形状,尽管最初只使用边缘像素计数,而没有使用使表示如此有效的方向直方图。这些基于稀疏特征表示的成功在某种程度上掩盖了HOG作为密集图像描述符的强大功能和简单性。我们希望我们的研究将有助于纠正这一点。特别是,当前我们的非正式的实验表明,即使是最好的基于关键点的方法有可能误判率至少1 - 2个数量级高于我们人类密集的网格方法检测,主要是因为没有一个关键点检测器,我们都知道可靠地检测人体结构。
HOG/SIFT表示有几个优点。它捕获或边缘梯度结构局部形状的特点,和在当地的代表它容易可控程度的局部几何和光度转换不变性:平移或旋转进行小差异,如果他们要小得多,当地的空间容器大小或方向。对于人体检测来说,相对粗糙的空间采样、精细的方位采样和强大的局部光度归一化是最好的策略,这可能是因为它允许肢体和身体部分在保持大致垂直方向的情况下改变外观和从一边到另一边移动很多。
4、数据集和方法论
数据集:我们在两个不同的数据集上测试了我们的检测器。第一个是完善的MIT行人数据库,包含509张行人在城市场景中的训练和200张测试图像(加上这些图像的左右映像)。它只包含相对有限的姿态范围内的正面或背面视图。我们最好的探测器在这个数据集上给出了本质上完美的结果,所以我们产生了一个新的、更具挑战性的数据集,“INRIA”,包含了1805张64×128张人类照片,这些照片是从一系列不同的个人照片中裁剪出来的。图2显示了一些样本。人们通常是站着的,但出现在任何方向和各种各样的背景图像,包括人群。许多人是从照片背景中拍摄的旁观者,所以他们的姿势没有特别的偏见。数据库可以从http://lear.inrialpes.fr/data获得,用于研究目的。
方法论:我们选取了1239幅图像作为正训练样本,以及它们的左右反射(总共2478幅)。从1218张无人员训练照片中随机抽取12180个固定的patch作为初始负集,对每个检测器和参数组合进行初始检测器的训练,并对1218张负集训练照片进行详尽的假正性搜索(“硬样本”)。然后,使用这个增强集(初始的12180 +硬示例)对该方法进行重新训练,以生成最终的检测器。如有必要,对难样本集进行子采样,使最终训练集的描述符能够满足SVM训练的1.7 Gb RAM。这个再训练过程显著地提高了每个检测器的性能(对于我们的默认检测器,每个窗口测试的错误阳性率(FPPW)为,提高了5%),但是额外的几轮再训练几乎没有影响,所以我们不使用它们。
为了量化检测器性能,我们绘制了log-log尺度上的检测误差权衡(DET)曲线,即失误率(1 - Recall或(FalseNeg+TruePos)/FalseNeg)与FPPW之间的关系。数值越低越好。它们与接收机的工作特性(ROC)呈现相同的信息,但更容易区分小概率。我们经常使用漏报率为FPPW作为结果的参考点。这是任意的,但不超过,例如,ROC曲线下面积。在多尺度检测器中,它对应的原始错误率约为每640×480幅测试图像的0.8个假正性。(由于非最大抑制,全检测器的假阳性率更低)。我们的DET曲线通常是很浅的,所以即使是非常小的脱靶率的改善,也相当于在恒定脱靶率下FPPW的大幅提高。例如,对于我们的默认检测器,在1e-4 FPPW时,每1%的绝对(9%的相对)失误率降低,就相当于将恒定失误率下的FPPW降低1.57倍。
5、结果概览
在给出详细的实现和性能分析之前,我们将最后的HOG检测器的总体性能与其他一些现有方法进行比较。将基于矩形(R-HOG)或圆形log-polar (C-HOG)块和线性或核支持向量机的检测器与我们实现的Haar小波、PCA-SIFT和形状上下文方法进行了比较。简单地说,这些方法如下:
广义Haar小波:这是一组扩展的有向haar样小波,类似于(但优于)[17]中使用的小波。特征是校正响应从9×9和12×12定向1和2阶导数箱过滤器在45◦间隔和相应的2阶导数xy过滤器。
PCA-SIFT:这些描述符基于将梯度图像投影到基于PCA[11]的训练图像上。Ke & Sukthankar发现,他们在基于关键点的匹配方面优于SIFT,但这是有争议的[14]。我们的实现使用16×16块具有相同导数尺度、重叠等的块作为HOG描述符。利用正训练图像计算主成分分析基。
形状上下文:原始的形状上下文使用二进制边存在投票到对数极间距的箱子,不管边的方向。我们使用C-HOG描述符(见下面),仅使用一个方向箱来模拟这一点。内半径为2像素、外半径为8像素的16个角距和3个径向距效果最好。测试了梯度强度和基于边缘存在的投票,自动选择边缘阈值以最大限度地提高检测性能(所选择的值在20-50灰度范围内有些变化)。
结果:图3显示了各种检测器在MIT和INRIA数据集上的性能。基于HOG的检测器的性能大大优于小波、PCA-SIFT和形状上下文检测器,在MIT测试集上实现了近乎完美的分离,在INRIA测试集上至少降低了一个数量级的FPPW。我们的类HAAR小波优于MIT小波,因为我们还使用二阶导数和对比度标准化输出向量。图3(一个)还显示基于麻省理工学院最好的部分和整体检测器(点插值),不过要小心,一个精确的比较是不可能的,因为我们不知道[17]的数据库分为训练和测试部分和没有使用的负样本目标。最后的矩形(R-HOG)检测器和圆形(C-HOG)检测器的性能非常相似,C-HOG具有微弱的边缘。使用基本条检测器(定向二阶导数- ' R2-HOG ')对R-HOG进行增强,使特征维数增加了一倍,但进一步提高了性能(在 FPPW时提高了2%)。将线性SVM替换为高斯核支持向量机,在FPPW时性能提高约3%,但代价是运行时间大大提高。使用二进制边缘投票(EC-HOG)代替梯度幅度加权投票(C-HOG)在 FPPW时性能降低5%,而省略方向信息则会使性能降低得更多,即使添加了额外的空间或径向箱(在 FPPW时,边缘(E-ShapeC)和梯度(G-ShapeC)的性能都降低33%)。一个原因是,与[11]相比,必须保留更多的主向量(512个主向量中的80个)来捕获相同比例的方差。这可能是因为没有关键点检测器时空间配准较弱。
6、实现和性能研究
现在我们给出了HOG实现的细节,并系统地研究了各种选择对检测器性能的影响。在本节中,我们将结果引用到我们的默认检测器,它具有以下属性,描述如下:RGB颜色空间,没有伽玛校正;[- 1,0,1]不平滑梯度滤波器;线性梯度投票进入9个方向箱在;16×16像素块,4个8×8像素单元;高斯和σ= 8像素空间窗口;L2- Hys(Lowe-style clipped L2 norm)块标准化;块间距步长为8像素(因此每个单元格的覆盖率为4倍);64×128检测窗口;线性支持向量机分类器。
图4总结了各种参数对总体检测性能的影响。下面将详细讨论这些问题。主要结论是,为了获得良好的性能,应该使用精细的尺度导数(本质上没有平滑)、许多方向箱以及中等大小、强规范化、重叠的描述符块。
6.1、伽马/颜色归一化
我们评估了几种输入像素表示,包括灰度、RGB和实验室颜色空间,可选地使用幂律(gamma)均衡。这些规范化对性能的影响很小,可能是因为后续的描述符规范化也会得到类似的结果。我们确实在可用时使用颜色信息。RGB和实验室的颜色空间给出了类似的结果,但是限制在灰度范围内会在 FPPW时降低1.5%的性能。每个颜色通道的平方根伽马压缩在低FPPW时提高性能(在 FPPW时提高1%),但是对数压缩太强,在 FPPW时降低2%。
6.2、计算梯度
检测器的性能对梯度的计算方法很敏感,但是最简单的方案是最好的。我们测试了使用高斯平滑和几个离散导数掩模之一计算的梯度。几个平滑尺度测试包括σ= 0(没有)。测试的掩模包括各种一维点导数(无中心的[- 1,1]、中心的[- 1,0,1]和立方校正的[1,- 8,0,8,- 1]),以及3×3 Sobel掩模和2×2对角掩模([[0,1][-1,0]],[[-1,0][0,1]])(最紧凑的中心二维导数掩模)。简单的一维[−1,0,1]掩膜σ= 0时效果最好。使用更大的面具似乎总是降低性能和平滑损害明显:高斯偏差。从σ= 0和σ= 2减少召回率从89%到80%在FPPW。在,容积校正的1-D宽度为5的滤波器比的FPPW差1%,而2×2对角掩膜则差1.5%。使用非中心的[- 1,1]导数掩模也会降低性能(在FPPW时降低1.5%),这可能是因为基于不同中心的x和y滤波器会影响方向估计。
对于彩色图像,我们为每个颜色通道计算单独的梯度,并以最大范数的梯度向量作为像素的梯度向量。
6.3、空间\方向容器
下一步是描述符的基本非线性。每个像素根据以其为中心的梯度元素的方向计算边缘方向直方图通道的加权投票,然后将投票累积到局部空间区域上的方向箱中,我们称之为单元格。单元格可以是矩形的,也可以是径向的(对数极扇区)。定位箱的平均间隔超过(“unsigned”梯度)或(“signed”梯度)。为了减少混叠,在相邻的bin中心之间在方向和位置上双线性插值。投票是像素处梯度大小的函数,要么是大小本身、大小的平方、大小的平方根,要么是表示像素处边缘是否存在的大小的剪切形式。在实践中,使用大小本身可以得到最好的结果。取平方根会略微降低性能,而使用二进制边缘存在投票会显著降低性能(在FPPW时降低5%)。
事实证明,良好的性能需要良好的定向编码,而(参见下面)空间绑定可能相当粗糙。如图4(b)所示,增加方向箱的数量可以显著提高性能,最多可达到9个左右,但除此之外几乎没有什么不同。这是为间隔超过,即'标志'梯度被忽略的bin。包括有符号的梯度(方向范围,在原来的SIFT描述符)降低性能,即使是当箱子的数量也增加了一倍,以保持原来的方向分辨率。对于人类来说,服装和背景颜色的广泛变化可能使对比的迹象缺乏信息。但是请注意,在其他一些目标识别任务中,如汽车、摩托车,包含标识信息确实有很大的帮助。
6.4、归一化和描述子块
由于光照和前背景对比度的局部变化,梯度强度的变化范围很广,因此有效的局部对比度归一化对良好的性能至关重要。我们评估了许多不同的标准化方案。它们大多是基于将细胞分组成更大的空间块,并分别对每个块进行对比归一化。正常化最后的描述符是来自检测窗口中所有块的标准化单元响应的所有组件的向量。实际上,我们通常会重叠这些块,以便每个标量单元响应都向最终描述符向量贡献几个组件,每个组件都针对不同的块进行标准化。这可能看起来有些多余,但是良好的标准化是至关重要的,包括重叠可以显著提高性能。图4 (d)表明,性能增加4% FPPW当我们从没有增加重叠(跨16)16倍面积/ 4倍线性覆盖(第4步)。
我们评估两类块几何图形,正方形或长方形的正方形或长方形的空间细胞划分网格,和圆形块划分为细胞log-polar时尚。我们将把这两种安排称为R-HOG和C-HOG(用于矩形和圆形HOG)。
R-HOG :R-HOG块与SIFT描述符[12]有很多相似之处,但是它们的用法却截然不同。他们在密集的网格计算在一个单一的规模没有主导方向对齐和作为的一部分代码隐式编码向量空间位置相对于检测窗口,而筛选的计算在稀疏的尺度不变的关键点,旋转来调整他们的主导方向,单独使用。SIFT用于稀疏宽基线匹配,R-HOG用于空间形态的密集鲁棒编码。其他的先驱包括Freeman和Roth的边缘方向直方图。我们通常用平方R-HOG,即ς×ς网格的η×η像素每个含有β细胞取向箱,ς,η,β参数。
图5显示了FPPW对应的时的漏检率。单元格大小和单元格中的块大小。对于人体检测,6×6像素细胞的3×3个细胞块表现最佳, FPPW时漏检率为10.4%。我们标准的2×2块8×8块电池排在第二位。事实上,无论块大小如何,6-8像素宽的细胞都表现得最好——这是一个有趣的巧合,因为在我们的图像中,人类的四肢大约有6-8像素宽。2×2和3×3细胞块效果最好。当图像块过大时,对局部成像条件的自适应能力减弱;当图像块过小时(1×1细胞块,仅归一化方向),有价值的空间信息受到抑制。
就像在[12]中一样,在将方向投票累积到单元格之前,对每个像素应用高斯空间窗口来降低块边缘附近像素的权重是很有用的。这提高了性能1% FPPW与σ= 0.5高斯∗块宽度。
我们还尝试在整个描述符中包含具有不同单元格和块大小的多个块类型。这稍微提高了性能(在FPPW时提高了3%左右),但代价是大大增加了描述符的大小。除了方形R-HOG块,我们还测试了竖直(2×1 cell)和水平(1×2 cell)块,以及一个包含垂直和水平对的组合描述符。垂直和垂直+水平对明显优于单独水平对,但不如2×2或3×3细胞块(FPPW时下降1%)。
C-HOG:我们的圆形块(C-HOG)描述符让人想起形状上下文,但最重要的是,每个空间单元包含一个梯度加权方向单元堆栈,而不是一个与方向无关的边缘存在计数。对数极坐标网格最初是由这样一种想法提出的:它可以将附近结构的精细编码与更大范围的粗编码结合起来,而且灵长类动物从视野到V1皮质的转换是对数的。然而,只有很少的径向箱的小描述符可以提供最好的性能,因此在实践中几乎没有不均匀性或上下文。最好把C-HOG看作是一种先进的中心包围编码形式。
我们评估了C-HOG几何的两种变体,一种具有单个圆形中心单元,另一种的中心单元在形状上下文中被划分为角扇区。我们提出的结果只对环中心变异,因为这些有更少的空间细胞比分裂中心细胞,并在实践中给出相同的表现。一份技术报告将提供进一步的细节。C-HOG布局有四个参数:角仓数和径向仓数;中心bin的半径(以像素为单位);以及后续半径的膨胀系数。为了获得良好的性能,至少需要两个径向箱(一个中心和一个环绕)和四个角向箱(四分之一)。
增加额外的径向箱对性能的影响不大,而增加角箱的数量会降低性能(当从4个角箱增加到12个角箱时,在FPPW时降低1.3%)。4个像素是中央箱子的最佳半径,但是3和5给出了相似的结果。将膨胀系数从2增加到3,性能基本保持不变。在这些参数下,高斯空间加权和单元面积对单元投票的逆加权都不会改变性能,但两者结合后性能略有下降。这些值假定有良好的方向抽样。形状上下文(一个方向箱)需要更精细的空间细分才能很好地工作。
块归一化方法:我们对上述每种HOG几何评估了四种不同的块标准化方案。使v为未归一化的描述向量,是它的第k阶范数,k=1,2,是一个小常数。方法是
- L2范数,
- L2-Hys, L2-norm,然后剪切(将v的最大值限制为0.2)并重新正态化
- L1范数,
- L1开方,L1范数,在平方根,这相当于将描述符向量视为概率分布,并使用它们之间的巴塔查里亚距离。
图4(c)表明,在 FPPW下,L2-Hys、L2 -范数和L1 -根号的性能都相当好,而简单的L1范数会降低性能5%,忽略归一化则会完全降低性能27%。由于我们密集地评估描述符(包括在空补丁上),因此需要一些正则化,但在很大范围内,结果对的值不敏感。
周围中间归一化:我们还研究了另一种centre-surround风格细胞标准化方案,在一个网格的单元是平铺的图像和每个细胞细胞及其周边地区的总能量(使用高斯加权求和取向和池)用于正常细胞。然而,图4 (c)(“窗口规范”)显示,这减少性能相对于相应的基于块计划(2%在10−4 FPPW池σ= 1细胞宽度)。一个原因是不再有任何重叠的块,因此每个单元格在最终描述符中只编码一次。包括几个调查每个细胞基于不同池尺度σ提供性能没有明显变化,所以看起来是几个池地区的存在与不同空间偏移量相对于重要的细胞,不是池规模。
为了阐明这一点,考虑具有重叠块的R-HOG检测器。训练后的线性支持向量机的系数给出了每个块的每个单元在最终判别决策中的权重。仔细观察图6(b,f)可以发现,最重要的细胞是那些典型地包含人体主要轮廓(尤其是头部、肩膀和脚)的细胞,这些细胞归一化了位于轮廓外的w.r.t.块。换句话说,尽管在我们的训练集中常见的背景是复杂而杂乱的,但探测器的线索主要是轮廓线与背景的对比,而不是内部边缘或轮廓线与前景的对比。有图案的衣服和姿势的变化可能会使内部区域作为线索变得不可靠,或者平滑的阴影和阴影效果可能会混淆前向轮廓的过渡。类似地,图6(c,g)说明,人体内的梯度(尤其是垂直方向的梯度)通常被视为负面线索,这可能是因为这抑制了长竖线触发垂直头部和腿部细胞的假阳性。
6.5、检测器窗口和上下文
我们的64×128检测窗口包括大约16像素的边缘周围的人四面八方。图4(e)显示,该边框提供了大量有助于检测的上下文。将其从16像素降低到8像素(48×112检测窗口),在FPPW时性能降低4%。保留一个64×128的窗口,但是增加其中的人员大小(再次减少边框)会导致类似的性能损失,即使人员的分辨率实际上增加了。
6.6、分类器
默认情况下,我们使用一个软(C=0.01)线性SVM训练与SVMLight[10](略有修改,以减少内存使用的问题,与大稠密描述符向量)。使用高斯核支持向量机在FPPW时性能提高约3%,但代价是运行时间大大提高。
6.7、讨论
总的来说,这项工作有几个值得注意的发现。HOG大大优于小波和之前任何重要程度的平滑计算梯度损害HOG结果强调多可用的图像信息来自突然在细尺度边缘,这模糊的减少空间位置的敏感性是一个错误。相反,梯度应该在当前金字塔层中可用的最细尺度上计算,并进行校正或用于定向投票,然后才在空间上进行模糊处理。因此,相对粗糙的空间量化就足够了(6-8像素宽的细胞/一个肢体宽度)。另一方面,至少对于人类检测来说,精确地定位样本是有好处的:在这里,小波和形状上下文都丢失了很多。
其次,强烈的局部对比度归一化是获得良好效果的必要条件,传统的中心环绕样式方案并不是最佳选择。对于不同的局部支撑,对每个元素(边缘、单元)进行多次归一化,并将结果作为独立的信号处理,可以得到更好的结果。在我们的标准检测器中,每个HOG细胞出现四次,并以不同的正常化,包括这个“冗余”信息,提高性能从84%到89%在 FPPW。
7、结论和总结
我们已经证明,在密集重叠的网格中,使用类似SIFT描述符的梯度方向局部归一化直方图特征,对人的检测效果非常好,相对于最优的基于haar小波的检测器,假阳性率降低了一个数量级以上。我们研究了各种描述符参数的影响,得出结论:在重叠的描述符块中,细尺度梯度、细方向边距、相对粗的空间边距和高质量的局部对比度归一化对性能都很重要。我们还引入了一个新的、更具挑战性的行人数据库,该数据库是公开的。
将来的工作:虽然我们目前线性SVM检测器是合理有效的,处理320×240尺度空间图像(4000检测窗口)在不到一秒钟的时间,仍有优化的空间,进一步加快检测,这将是有用的发展而且或rejection-chain风格检测器基于猪描述符。我们也在研究基于hogb的探测器,它利用块匹配或光流场来整合运动信息。最后,虽然目前的固定模板式检测器对于完全可见的行人来说已经被证明是难以击败的,但是人类是高度铰接的,我们相信包含一个局部空间不变性程度更高的基于部件的模型将有助于在更一般的情况下提高检测结果。