PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection

  PS: 本文系本人本科期间翻译,由于那时刚接触学术论文,水平有限,其中难免出现翻译得不专业之处,此文翻译仅供参考。。。有时间的话,本人再修改修改哈

 国际计算机视觉期刊57(2), 137–154, 2004

      ©2004 Kluwer学术出版社出版.荷兰制造.

鲁棒的实时人脸检测

PAUL VIOLA

美国华盛顿州98052雷德蒙德微软一条街微软研究所

[email protected]

MICHAEL J. JONES

美国马萨诸塞州02139坎布里奇201百老汇大街三菱电气研究实验室

[email protected]

2001.9.10接收;2003.7.10修订;2003.7.11接受

摘要:本文介绍了一种人脸检测体系,它能够快速处理图像并达到较高的检测率。它具有三个关键性的贡献。第一个贡献就是引入一种叫做“积分图像”的新的图像表示法,它使得应用到我们检测器的特征能够被快速计算。第二个贡献是一种简单有效的分类器,它由 AdaBoost学习算法构建(Freund和Schapire,1995年),用来从一个庞大的潜在特征集中筛选出少量至关重要的视觉特征。第三个贡献就是一种以“级联”方式组合分类器的方法,它能够快速摒弃图像的背景区域从而花费更多的计算在类人脸(face-like)的区域上。本文给出了一系列人脸检测领域的实验。本系统产生的人脸检测性能可与最早的各体系(Sung 和Poggio, 1998年; Rowley等人,1998年; Schneiderman和Kanade, 2000年; Roth 等人2000年)相比拟。在常规的台式机上实现,人脸检测速度可以达到15帧每秒。

关键字:人脸检测;提升;人体感知

1. 介绍   

       这篇文章集新的算法和见解于一体,构建了一个鲁棒的非常快速的视觉检测体系。文章结尾我们构建了一种正面人脸检测系统,它能够达到与最好的已出版结果(SungPoggio, 1998年Rowley 1998; Osuna等人1997a; SchneidermanKanade, 2000; Roth等人, 2000)同样的检测率和误报率。在快速检测人脸的能力上,这个人脸检测系统明显地区别于以往的方法。在常规的700 MHz的英特尔奔腾Ⅲ上,对384288像素的图像进行操作,人脸检测速度达15帧每秒。在其他的人脸检测系统中,为取得较高的帧率需要用到额外的信息,比如视频序列中图像的差异,彩色图像中像素的颜色。我们的系统只需要利用单个灰度图像表示的信息就可以达到较高的帧率。这些可选择的信息来源也可以整合到我们的系统中以达到更高的帧率。

       我们的人脸检测体系主要有三个贡献。下面我们将分别简介这三种方法,然后在接下来的各节再详细描述它们。

      本文的第一个贡献是一种新的图像表示法——积分图像,它能够快速计算特征值。受到Papageorgiou (1998)等人工作的部分启发,我们的检测体系不是直接工作于图像亮度。像这些作者一样,我们使用一组特征,这让我们联想起Harr基函数(尽管我们也使用比Harr 滤波器更复杂的相关滤波器)。为了能够在多尺度下快速计算这些特征值,我们引入积分图像表示法(积分图像与计算机图形学(Crow, 1984年)中纹理映射的区域求和表类似)。对图像中每个像素进行很少的操作就可以得到积分图像。类Harr特征值一旦被计算,那么任意尺度和位置的任何一个特征值都可以在常数时间内完成计算。

      本文的第二个贡献是一个简单有效的分类器,它是通过AdaBoost算法(Freund 和 Schapire, 1995年)从一个庞大的潜在特征数据库中筛选少量重要的特征来建立的。在任何图像子窗口内,类Harr特征的总数是很大的,远远超过像素数。为了确保快速分类,学习的过程必须排除绝大多数可用的特征,而集中在少数至关重要的特征上。在Tieu Viola (2000特征值筛选工作的推动下,利用AdaBoost学习算法只依赖一个单独的特征便可以构建一个弱分类器。于是,增强过程选取一个新的弱分类器,它的每一个阶段可以被看做是一个特征选取的过程。在泛化性能方面,AdaBoost提供了一种有效的学习算法和一个强大的边界。

       本文的第三个主要贡献是一种方法,即在级联结构中连续不断地组合更复杂的分类器,它通过专注于可能的图像区域来显著提高检测速度。集中注意力过程的背后,是因为快速确定一幅图像中人脸可能出现的位置往往是可能的(Tsotsos等人, 1995; Itti等人, 1998; Amit Geman, 1999; Fleuret Geman, 2001)。更复杂的操作只针对这些可能的区域进行。这种方法的关键度量是注意力过程的“漏报”率。情况是这样的,所有,或几乎所有的人脸例子都是通过专注过滤器筛选的。

       我们将介绍一种方法,训练一个非常简单又有效的分类器,它作为关注算子的一种“有监督的”聚焦[1]。人脸检测专注过滤器将滤除人脸图像的超过50%部分而保留人脸的99%(正如一个大的数据集上评估的)。这种过滤器十分有效;据评估为每位置/尺度20个简单操作(大约60个微处理器指令)。

那些没被初始分类器拒绝的子窗口会被一系列分类器处理,后一个分类器要比前一个分类器稍微复杂一点。如果任意一个分类器拒绝了子窗口,后续程序将不再处理它。级联检测程序的结构本质上是一种退化的决策树,这与Fleuret 和 Geman(2001), Amit 和 Geman (1999)的工作相关。

       完整的人脸检测级联包含38个分类器,总共超过80000次操作。然而级联结构能达到非常短的平均检测时间。在一个包含507个人脸和7500万子窗口的复杂数据集上,检测每个子窗口的人脸平均使用270条微处理或指令。对比之下,这个系统大约比Rowley 等人 (1998)构建的人脸检测系统快15倍。

       一个快速的人脸检测器将会有广泛的实际应用。其中包括用户接口,图像数据库和电话会议。在某些系统上,进行实时人脸检测应用在以前是不可行的,而速度的提升将使其成为可能。在不要求快速帧率的应用中,我们的系统可以进行额外重要的后处理和分析。另外,我们的系统能在大量小型低功率的装置上得以实现,包括手握式和嵌入式处理器。在实验室,我们已经在缺少浮点运算硬件的200 mips低功率Strong Arm处理器上实现了这个人脸检测器,它能达到2帧每秒的检测速度。

1.1 概述

       本文的余下各节将联系理论和实验介绍检测器的实现。第二节将详细介绍特征的形式和为快速计算而采用的一种新方法。第三节将讲述组合这些特征形成分类器的方法。所用的机器学习方法,AdaBoost的一种应用,也作为一种特征选择机制。这种方式构建的分类器计算和分类性能比较好,但是对于一个实时分类器来说太慢了。第四节描述一种构建级联分类器的方法,实现一个非常可靠且高效的人脸检测器。第五节将给出大量的实验结果,包括对实验理论的详细描述。最后,第六节将详细讨论这个系统和与其他相关系统的关系。

2. 特征

        我们的人脸检测程序是基于简单的特征对图像进行分类的。有很多理由促使我们使用特征,而不是直接使用像素。最常见的原因是,特征可以采取编码特设的领域知识,而使用有限数量的训练数据进行编码这是很难的。对于这个系统,使用特征还有第二个原因:基于特征的系统运行速度远远超过基于像素的系统。

所用的简单特征,让人联想起已被用于Papageorgiou等人(1998年)的Haar基函数。更具体地说,我们使用三种特征。二矩形特征的值是两个矩形区域内的像素总和之间的差值。这两个区域具有相同的尺寸和形状,并在水平方向或垂直方向上相邻(参照图1)。三矩形特征的值是中心矩形的像素总和减去两头在外的矩形内像素的总和。最后,四矩形特征的值是计算对角线矩形对之间的差值。

       给定检测器的基本分辨率为24×24,详尽的矩形特征集是相当大的,16万。请注意,不同于Haar基函数,矩形特征集是超完备的

 图中显示了相对封闭的检测窗口的样本矩形特征。灰色矩形内的象素总和减去白色矩形内的像素总和。二矩形特征示于(A)和(B)。图(C)显示了三矩形特征,图(D)显示了四矩形特征。

2.1 积分图像

       使用图像的中间表示法,矩形特征可以被非常迅速地计算出来,我们称之为积分图像。积分图像中坐标(xy)的值包括xy上面和左侧的像素总和:

                   

       其中,ii(x,y)是积分图像,i(x,y)是原始图像(参照图2)。使用以下递归方程组:

(其中,s(x,y)是累计行和,s(x,-1)=0,和ii(-1,y)=0)积分图像可以利用传递过来的原始图像计算。

        使用积分图像,任何矩形的像素总和都可以用四个数组引用计算(参照图3)。显然,两个矩形像素总和之间的差值,可以用八个数组引用计算。由于上述定义的二矩形特征涉及相邻的矩形像素和,它可以用六个数组引用计算,三矩形特征可以用八个数组引用计算,四矩形特征可以用九个数组引用计算。

                 

                                                                                                            图2  在点(xy的积分图像的值是其上方和左侧的所有像素的总和。

                   PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第1张图片

3  矩形D内的像素总和可以用四个数组引用计算。位置1的积分图像的值是矩形A的像素和。位置2的值是A + B,位置3的值是A + C,位置4的值是A + B + C + D。矩形D内的像素总和可以计算为4 + 1 -2 + 3)。

        积分图像的一个可供选择的动机来自Simard等人(1999)的“boxlets”工作。

作者指出,线性操作的情况下(例如f·g),如果它的逆被应用到这个结果,那么任意可逆线性操作都可以被应用到fg。例如在卷积的情况下,如果导数算子被应用到图像和内核,那么结果必须是两次积分:


        作者们继续展示,如果fg的导数是稀疏的(或者可以使得),那么卷积可以被显著加速。一个类似的观点是如果g的逆被应用到g,那么f的一个可逆的线性操作可以应用到f:

                                                                                                                       

    从这个框架看,矩形像素和的计算可以表示为一个点积,i·r,其中i是图像,r是厢车图像(感兴趣的矩形内值为1,之外的值为0)。此操作可重写为:       

        积分图像实际上是图像的双重积分(先是沿行,然后沿列)。矩形的二阶导数(先在行,后在列)在矩形的拐角处产生四个δ函数。四个数组访问实现第二个点积计算。

2.2 特征讨论

       矩形特征较其替代品是有些原始的,如可控滤波器(Freeman和 Adelson1991年,Greenspan 等人,1994年)。可控波滤器,及其相关滤波器,对于边界的详细分析,图像压缩,纹理分析是很好的。然而矩形特征对边缘,条状和其他简单的图像结构的表示也是敏感的,不过相当粗糙。与可控滤波器不同的是,矩形特征可用的方向只有垂直的,水平的和对角的。由于正交性不以特征集为中心,我们选择生成一个非常大的可变的矩形特征集。通常情况下,表示形式约400倍超完备。超完备集提供任意方向比例的特征并具有精细的采样位置。从经验上来看,矩形特征集好像提出了支持有效学习的一种丰富的图像表示。矩形特征的极高的计算效率充分弥补了其局限性。

      为更好地理解积分图像技术的计算优势,可以考虑更传统的方法来计算一个金字塔式的图像。像大多数的人脸检测系统一样,我们的探测器从许多尺度扫描输入图像;从基本尺度开始扫描,在一个大小为24×24像素的人脸图像上检测,一个384×288像素的图像在12个尺度上被扫描,每次均比上一个尺度大1.25倍。而传统的方法是计算12个图像的一个金字塔式,每个比之前的的图像小1.25倍。然后用一个固定尺度的探测器扫描这些图像。计算金字塔,虽然简单,但需要大量的时间。在常规的硬件上有效实现它(使用双线性插值缩放每层的金字塔)大约需要0.05秒计算一个这种规模的12级金字塔(用Intel PIII 700 MHz处理器)

      作为对照,我们已经定义了一个有意义的矩形特征集,它具有这样的性质,一个单一的特征可以在任何尺度和位置上在几步操作之内计算出来。我们将在第4节介绍,有效的人脸检测器可以用少到两个矩形特征构建。给定这些特征的计算效率,在整个图像上,人脸检测程序在每一个尺度上计算速度达到15帧每秒,单独计算12级图像金字塔大约需要相同的时间。需要计算这种类型金字塔的任何程序的运行速度一定慢于我们的探测器。

3. 学习分类函数  

      给定正负样本图像的特征集和训练集,任意数量的机器学习方法都可以学习分类函数。Sung 和 Poggio使用一种混合高斯模型(Sung Poggio1998年)。 Rowley等人(1998年)使用简单图像特征的一小部分和神经网络。Osuna等人(1997b)使用支持向量机。更有甚者,最近Roth等人(2000)提出了一种新的不同寻常的图像表示,并用于簸学习过程

     回想一下,有160000个与每个图像子窗口相关的矩形特征,数目远远大于像素数。尽管每个特征可以被非常有效地计算,但是计算一套完整的特征的代价也贵得离谱。我们假设,这已被实验证实,组合少量特征来形成一个有效的分类器。面临的主要挑战是要找到这些特征。

      在我们的系统中,使用一个变种的AdaBoost算法来选择特征和训练分类器(FreundSchapire1995年)。在其原来的形式中,AdaBoost的学习算法是用来提升一个简单学习算法的分类性能(例如,它可能被用来提升一个简单感知器的性能)。它通过结合弱分类函数来形成一个更强的分类器。在增强简单学习算法的语言中,它被称为弱学习。因此,举例来说,感知学习算法在可能的感知器集合里进行搜索,以最低的分类错误率返回感知。这种学习之所以被称为弱的是因为我们并不指望它能够对训练数据进行很好的分类,即使是最好的分类函数(即,对一个给定的问题,最好的感知器可能只有51%的时间能对训练数据进行正确的分类)。为了提升弱学习,要求它解决一系列学习问题。经过第一轮的学习,样本重新加权,以强调那些被之前的弱分类器错误分类的样本。最终的强分类器采用感知器的形式,由阈值决定的弱分类器的加权组合而成。

       AdaBoost的学习算法提供了强大的正式保证。 FreundSchapire证明,强分类器的训练误差在回合数的指数上趋近于零。更重要的是,后来的大量结果证明了泛化性能(Schapire等人, 1997)。关键的见解是泛化性能与样本的幅度有关,AdaBoost实现大幅快速提升。

传统的AdaBoost算法可以很容易地解释为一个贪婪的特征选择过程。考虑提升的一般问题,其中使用一个加权的多数表决机制结合一大组的分类函数。面临的挑战是如何将好分类函数的大的权值和弱分类函数的小的权值联系起来。然而好的分类器也有多种,对于从好的分类函数中选择一小部分,AdaBoost是一个积极的选择机制。打个比方,在弱分类器和特征之间 ,AdaBoost是寻找少量好“特征”的一种有效的算法,但好“特征”也有多种。

        完成这个类比的一个实用方法是限制弱分类器于只依赖单一特征的分类函数集中。支持这一目标,弱学习算法选择单一的矩形特征,更好地分离正负样本(这类似于Tieu and Viola 2000年)的在图像数据库检索领域的方法)。对于每个特征,弱学习决定最佳的阈值分类函数,以使最少数目的样本被错误分类。因此,一个弱分类器由特征(f),阈值[6]和表明不等式方向的极性(p)组成:

 

这里,x是一个像素的图像子窗口。

      实际上,没有一个单一的特征可以实现低误差的分类任务。分类过程前期选择的特征产生的误差率在0.10.3之间。后期选择的特征,任务变得更加困难,产生的误差率在0.40.5之间。表1给出了学习算法。

      我们所使用的弱分类器(阈限的单个特征)可以被看作是单个节点决策树。这种结构在机器学习文献中被称为决策树桩。FreundSchapire1995年)的早期工作也利用提升的决策树桩进行实验。

 表1  学习在线查询的提升算法。Ţ假设使用单一特征来构建。 最后的假设是T假设的加权线性组合,其中,权重与训练误差成反比。

●  给定样本图像(x1y1,...,(),其中分别表示正负样本。

●  初始化权值,其中,ml分别是正负样本数。

●  For t = 1, . . . , T 

   1. 归一化权值,

   2. 选择相对于加权误差来说最佳的弱分类器

                   

      请参阅3.1节关于有效实现的讨论。

   3.  定义,其中是的最小值。

   4.  更新权值:

                 

       其中,如果分类正确,ei=0,否则,ei=1,

●  最终的强分类器是:

  

PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第2张图片

3.1 学习讨论

        1中所描述的算法被用来从可能的弱分类器集中选择关键的弱分类器。

      虽然AdaBoost过程是十分有效的,但是弱分类器集是非常大的。由于对于每个不同的特征/阈值的组合均有一个弱分类器,实际上就有KN个弱分类器,其中,K为特征的数量,N是样本的数目。为了更好地理解对N的依赖,假设样本被一个给定的特征分类。对于训练过程中处于相同样本组的任何两个阈值是等效的。 因此,不同阈值的总数是N,给定一个任务,N= 20000K=160000,有32亿不同的二进制弱分类器

      这种包装方法也可以用来学习一个感知器,利用M个弱分类器(John等人,1994年)。此方法可以通过向每一轮的感知器中加入一个弱分类器逐步进行。该弱分类器添加到当前组中,要产生一个最低误差的感知器。每一轮至少需要ONKN)(或60万亿次运算)的时间来枚举所有的二进制特征和用它们计算每个样本。这忽略了用来学习感知器权重的时间。即便如此,学习一个200个特征的分类器的最终工作量约为OMNKN),1016次操作。

      作为一种特征选择机制,AdaBoost超过竞争对手,比如包装方法,它的主要优势是学习的速度。基于AdaBoost 方法一个200个特征的分类器工作量为OMNK),约1011次操作。一个关键的优势是,在每一轮中使用样本权值对先前选定的特征进行紧凑编码,完全依赖这些特征是有效的。这些权重可以被用来在固定时间内评估一个给定的弱分类器。

      弱分类器选择算法的过程如下。对于每个特征,基于特征值对样本排序。该特征的AdaBoost最优阈值可以通过这个排序列表计算。对于排序列表中的每个元素,四个总和被保存和计算:正样本的权重总和T +,负样本的权重总和 T- ,低于当前样本的正样本权重总和S +和低于当前样本的负样本权重总和S-。排序列表中,分割当前样本和之前样本的阈值的误差为:

        当前样本下面的标记为负,上面的标记为正的最小误差或通过误差取反。这些和值在搜索过程中很容易更新。

       许多一般特征选择程序已经被提出(参见Webb1999)的第8章,回顾一下)。我们的最终应用要求一个非常积极的过程,这将丢弃绝大部分特征。对于类似的识别问题,Papageorgiou等人(1998年)提出了一个方案,根据特征的差异进行特征选择。他们从1734个特征中选取了37个取得了很好的结果。虽然这是一个显著的减少,但是计算每个图像子窗口的特征数目仍然是相当大的。

       Roth等人(2000年)提出了基于簸指数感知器学习规则的特征选择算法。

       这些作者使用一个非常大的不同寻常的特征集,其中每个像素被映射成一个d维的二进制向量(当一个特定的像素值为x,取值范围为[0d - 1],第x维被设置为1,其他维为0)。每个像素的二进制向量被连接起来以形成一个单一的nd维的二进制向量(n是像素的数目)。分类规则是一个感知器,它给输入向量的每个维度分配一个权重。簸学习过程收敛到一个解决方案,其中许多权重为零。然而大量的特征被保留(也许是几百或几千)。

3.2 学习结果

       第5节给出了训练细节和最终系统的性能,几个简单的结果值得讨论。初步实验表明,由200个特征构造的分类器将产生合理的结果(参见图4)。给定检测95%,在测试数据集上分类器产生1/14084的误报率。这是有希望的,但对于实际应用中的一个人脸检测,误报率要接近1/1000000。

对于人脸检测任务,AdaBoost选择的最初的矩形特征是有意义的并且容易理解。所选的第一个特征似乎注重于这个属性,眼睛区域通常比鼻子和脸颊区域要暗(参照图5)。与检测子窗口比较,此特征相对较大,而且对于人脸的尺寸和位置应该不敏感。所选的第二个特征依赖于眼睛比鼻梁要暗这个属性。

总之,200个特征的分类器初步证明,从矩形特征构建提升的分类器是一种有效的人脸检测技术。在检测方面,对于真实世界的许多任务,这些结果是令人信服的但不是充分的。在计算方面,这种分类器是非常快的,扫描一幅384288像素的图像只需要0.7秒。不幸的是,改善检测性能的最简单的技术,增加特征到分类器中,又直接增加了计算时间。

   PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第3张图片

                                                                                                   图4  200个特征的分类器的受试者工作特征曲线(ROC)。

      PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第4张图片

5  AdaBoost算法选择的第一个和第二个特征。这两个特征在顶行中显示,在底行中覆盖于一个典型的训练人脸上。第一个特征测量眼睛区域和脸颊上部区域的强度差。该特征利用了观察到的眼睛区域往往比脸颊暗的特点。第二个特征比较了眼睛区域和整个鼻梁的强度。

4. 注意力级联(The Attentional Cascade)

       本节介绍了一种构建级联分类器的算法,它在提高检测性能的同时,能够大幅减少计算时间。关键是规模更小,因此更有效,增强的分类器在检测几乎所有的正样本图像时能够拒绝很多负样本的子窗口。先使用简单的分类器拒绝大多数的子窗口,然后用更复杂的分类器实现低误报率。

       基于AdaBoost训练分类器来构建级联的各个阶段。从具有两个特征的强分类器开始,调整强分类器的阈值,以尽量减少漏报率,从而获得一种有效的人脸过滤器。最初的AdaBoost阈值,,旨在训练数据上产生一个低的错误率。较低的阈值可以产生较高的检测率和误报率。基于在验证训练集上已测的性能,两个特征的分类器可以调整到检测率100%,误报率50%。参照图5中关于两个特征分类器的描述。

       两个特征分类器的检测性能远远没能达到人脸检测系统。尽管如此,分类器可以显著减少子窗口的数目,只需很少的操作再进行进一步的处理:

       1. 计算矩形特征(要求每个特征有69个数组引用)。

       2. 计算每个特征的弱分类器(每个特征需要一个阈值计算)。

       3. 组合弱分类器(每个特征需要一次叠加,另外,最后得出一个阈值)。

       两个特征的分类器累计约需60个微处理器指令。似乎很难想象任何更简单的过滤器能够实现更高的拒绝率。通过比较,扫描一幅简单的图像模板所需要的操作至少是每个子窗口的20倍。

       检测过程的整体形态是一个退化的决策树,就是我们所说的“级联”(Quinlan1986年)(参见图6)。来自第一个分类器的好的结果触发第二个分类器的计算,对其进行调整以达到非常高的检测率。来自第二个分类器的好的结果触发第三个分类器的计算,依此类推。任何节点上坏的结果都会被子窗口立即拒绝。

 一个检测级联的示意图描述。 每个子窗口都应用了一系列的分类器。最初的分类器用很少的操作消除了大量的负样本。之后的分类器消除了剩下的负样本但需要额外的计算。经过几个阶段的处理,子窗口的数量彻底地减少了。进一步的处理可以采取任何形式,例如级联(如在我们的检测系统中)或其他可替代的检测系统的其他阶段。

       级联结构反映了一个事实,在任何一幅图像中,绝大多数的子窗口都将被否定。因此,级联试图在尽可能早的阶段拒绝尽可能多的负样本。而一个正样本将触发级联中的每个分类器,这是一件极其罕见的事情。

      就像一个决策树一样,后续的分类器通过以前所有阶段使用的样本来训练。其结果是,第二个分级器比第一个分类器面临更加困难的任务。通过第一阶段的样本比一般的样本“更难”。深层次分类器所面临的更加困难的样本使得整个受试者工作特征(ROC)曲线下降。在给定检测率的情况下,分类器层次越深,相应的误报率越高。

4.1 训练分类器的级联

        级联的设计过程来源于一组检测和性能指标。对于人脸检测任务,过去的系统取得了良好的检测率(85%95%之间)和极低的误报率(数量级在或)。级联的级数和每级的大小必须满足在实现类似检测性能的同时,最大限度地减少计算量。

       给定一个训练的级联分类器,误报率为

                       

其中,F为级联分类器的误报率,K为分类器的数量,是样本通过第i个分类器的误报率。检测率为

                       

其中,D为级联分类器的检测率,K为分类器的数量,是样本通过第i个分类器的检测率。

      给定整体误报率和检测率的具体指标,级联过程的各级目标率可被确定。例如,检测率为0.9,可通过每级检测率为0.9910级分类器实现(因为0.9)。实现这个检测率听起来可能是一个艰巨的任务,但实际上每级只需要达到约30%6×10-6)的误报率。

      在扫描真实图像时估计特征数必然是一个概率的过程。任何给定的子窗口会通过级联逐步改进,每次测试一个分类器,直到一个窗口判定它是负的,或在极少数情况下,窗口成功通过每个测试并标记为正。在一个典型的测试集上,图像窗口的分布决定了这个过程的预期行为。每个分类器的关键评判标准是它的“阳性率”,标记窗口可能包含人脸的概率。估计的特征的预期数目是:

                

其中N是估计的特征的预期数目,K是分类器的数量,pi是第i个分类器的阳性率,ni是第i个分类器的特征数。有趣的是,由于人脸是非常少的,“阳性率”实际上等于误报率。

      训练级联器的每个元素需要注意一下。第3节中展现的AdaBoost学习过程仅试图最小化误差,并没有以大的误报率为代价设计达到高的检测率。一个权衡这些误差的简单又传统的方法就是,调整AdaBoost算法产生的感知器的阈值。阈值越高,分类器的误报率和检测率越低。阈值越低,分类器的误报率和检测率越高。在这一点上,是否以这种方式调节阈值来保留AdaBoost提供的训练和泛化性能保证还不明确。

      整个训练过程中涉及两种类型的权衡。在大多数情况下,具有更多特征的分类器将实现更高的检测率和更低的误报率。同时,具有更多特征的分类器需要更多的时间来计算。原则上,给定FD,为了最小化预期的特征数N,一个分类器可以定义一个优化的框架来权衡。不幸的是,找到这个最佳方案是一个非常困难的问题。

● 分类器级数

● 每级特征数ni

● 每级阈值

实际中,一个非常简单的框架用于产生一个有效且高效的的分类器。用户选择可接受的最大和可接受的最小。AdaBoost算法训练级联器的每级(如表1中所述),增加特征数,直到目标检测率和误报率满足这个水平。通过在验证集上测试当前检测器确定检测率和误报率。如果整体目标的误报率尚未满足,就把另一级添加到级联中。在不包含人脸的训练集上运行当前检测器,收集所有的误检测结果,得到训练后续各级的负样本集。更多关于此算法详见表2

2  建立一个级联检测器的训练算法。

● 用户选择值,f,每级可接受的最大误报率,d,每层可接受的最小检测率。

● 用户选择整体的误报率,。

●  P=正样本集

●  N=负样本集

PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第5张图片

        *  基于AdaBoost使用ni个特征,PN训练一个分类器

        * 在验证集上估计当前级联分类器,确定Fi和Di

        * 减少第i个分类器的阈值直到当前级联分类器的检测率至少为

 在非人脸图像集上评估当前的级联检测器,并把所有检测错误的结果放入N

4.2 简单的实验

    为了探索级联方法的可行性,我们训练两个简单的检测器:一个200个特征的分类器和一个拥有1020个特征的级联分类器。级联分类器的第一级使用5000个人脸和10000个非人脸子窗口,非人脸子窗口是从非人脸图像中随机选择的。第二级同样使用5000个人脸和第一个分类器误报的5000个样本。用上一级误报的样本来训练下一级分类器,这个过程就这样继续下去。

   用训练级联分类器各级的所有样本来训练单个200个特征的分类器。请注意,如果没有参考的级联分类器,它可能很难选择一组非人脸图像来训练单个分类器。我们当然可以使用来自非人脸图像的所有可能的子窗口,但是这将使训练时间格外长。级联分类器中通过抛除简单的样本,侧重于“困难的”样本,这种顺序方式有效地减少了非人脸训练集。

       图7给出了两种分类器性能的ROC曲线比较。这表明,就精确度来说,两者之间几乎没有什么差别。然而,在速度方面有一个很大的区别。级联分类器快了近10倍,因为它的第一级抛出了大部分非人脸图像,后续各级将不再对其进行判定。

           PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第6张图片

 200特征的分类器和包含1020-特征分类器的级联分类器的ROC曲线比较。精度有着明显不同,但级联分类器的速度快了将近10倍。

4.3 检测器级联的讨论 

    把检测器训练成一系列分类器有个隐藏的好处,最终检测器面临的实际负样本数可能非常大。可想而知,训练一个具有很多特征的单独的大分类器,然后通过查看特征的部分和来试图加快它的运行时间,如果部分和低于合适的阈值就停止计算。这种方法的一个缺点是,为使训练可行,负样本的训练集必须相对较少(数量级在10,00010万个样本)。为了找到级联分类器前面各级没有找出的10000个负样本集,级联检测器的最后各级可以有效地查找出数以百万计的负样本。因此,对于级联检测器,负的训练样本集更大,它更加集中在困难的样本上。

       类似级联的一个概念出现在Rowley等人(1998年)所描述的人脸检测系统中。Rowley等人训练出两个神经网络。中等复杂程度的一个网络,集中在图像的一个小区域,检测人脸时具有低误报率。他们还训练了第二个快得多的神经网络,它集中在图像的更大区域,具有较高的误报率。 Rowley等人用更快的第二个网络预审图像,以便为较慢但更准确的第一个网络找到候选区域。虽然这难以准确确定,但Rowley等人的这两个网络人脸系统是现有最快的人脸检测器。我们的系统使用了类似的方法,但它将两级级联扩展到包含38级。

      级联检测程序的结构本质上是一个退化决策树,这和AmitGeman1999年)的工作有关。与使用一个固定检测器的技术不同,AmitGeman提出了另一种可代替的观点,简单图像的特征不同寻常地共同出现,这用来触发一个更复杂的检测处理过程。通过这种方式,完整的检测过程不需要评估许多潜在图像的位置和尺寸。虽然这个基本的了解是非常宝贵的,但在执行过程中,有必要先评估在每个位置上的特征检测器。然后,这些特征被分组来寻找异常发生。在实践中,由于我们检测器的形式和它使用的特征值是非常有效的,在每一个尺度和位置上评估我们的探测器,它的摊销代价远远快于在整个图像上来寻找和分组。

      在最近的工作中,FleuretGeman2001年)提出了一种人脸检测技术,它依赖于一个测试“链”,以表示在一个特定的尺度和位置上存在脸。FleuretGeman测得的图像性能,背离精细尺度边缘,这与矩形特征有很大的不同,矩形特征简单,存在于所有尺度上,并可以理解。这两种方法的学习理念也有根本的不同。由于FleuretGeman的学习过程并不使用负样本,他们的做法更多的是基于密度估计,而我们的探测器纯粹是区别对待的。

    最后,FleuretGeman方法的误报率要高于以前,如Rowley等人的方法和我们的方法。在已发表的论文中,包含的样本图像中每个有210个误报。对于许多实用任务,重要的是,任何图像的误报预期数目要小于1(因为在许多任务中,真阳性的预期数量也小于1)。遗憾的是,本文并没有在标准数据集上给出定量的检测和误报结果。

5. 结果

      本节介绍了最终的人脸检测系统。讨论的内容包括级联检测器的结构和训练细节,以及在现实世界中一个大的测试集上的结果。

5.1 训练数据库

    人脸训练集包括4916张手动标记为人脸的图像,将其缩放并对齐为基分辨率为2424像素的。这些图像是从万维网上随机下载抓取的。一些典型的人脸样本显示在图8中。训练用的人脸图像尺寸大致一致。这是通过在每张人脸上放置一个边界框得来,大约在眉毛的正上方和嘴与下巴的中间。然后此边界框被放大50%,再裁剪和缩放至2424像素。不再做进一步的调整(比如眼睛是不对齐的)。请注意,这些样本比Rowley等人(1998年)和Sung , Poggio (1998)所使用的样本包含更多的头部。最初的实验也用了16×16像素的图像,其中人脸裁剪地更紧密,但结果稍微差点儿。大概是24×24的样本包括额外的视觉信息,如下巴,脸颊和发际线的轮廓,这些有利于提高准确度。由于所使用特征的性质,较大尺寸的子窗口并不会使性能下降。事实上,在级联检测器早期阶段,较大子窗口中包含的附加信息可以用来拒绝非人脸图像。

     PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第7张图片

                                                                             图用于训练的正面垂直人脸图像样本。

5.2  级联检测器的结构

     最终的检测器是一个38级的级联分类器,其中共包括6060个特征。

     级联的第一个分类器使用两个特征构造,拒绝约50%的非人脸图像,同时正确检测率接近100%。下一个分类器有10个特征,检测率几乎100%,拒绝80%的非人脸。接下来的两级是25个特征的分类器和由三个50个特征分类器组成的分类器,再然后是大量不同特征值构成的分类器,这些特征是根据表2中的算法选择的。通过试验和错误处理,减少特征的数量直到达到误报率,来特定选择每级特征的数量。更多级被加入,直到在验证集上误报率几乎为零,同时仍要保持较高的正确检测率。最终的级数和每级的大小并不是最终系统性能的关键。我们用来选择每级特征数的过程被人为干预(对于前7级),以减少检测器的训练时间。表2中所描述的算法被稍微修改,以缓解计算负担,我们手动指定每级最小的特征数目和每次不只是多加一个特征。在以后的级中,在测试验证集之前一次加入25个特征。这避免了在验证集上对每个加入到分类器中的特征都要测试检测器。

       从一组9500张不包含人脸的图像中随机选择一些子窗口,用这些非人脸子窗口来训练级联的第一级。在大量非人脸图像上扫描部分级联并收集误报的样本,得到接下来各级要用的非人脸样本。每级收集到的这样的非人脸子窗口最大数为6000。在9500张非人脸图像中大约有350万个非人脸子窗口。

       在一台466 MHz的阿尔法站XP900上运行,整个38级检测器的训练时间近似为几周。我们已并行优化了这个算法,使得在大约一天时间内训练一个完整的级联器成为可能。

5.3 最终检测器的速度

      级联检测器的速度直接与每个被扫描子窗口的特征数量有关。正如第4.1节中所讨论的,求解特征的数量依赖于被扫描的图像。由于大部分的子窗口被级联器的前两级丢弃,总共6060个特征中,每个子窗口估计平均具有8个特征(正如在MIT+ CMU上计算的(Rowley等人,1998年))。在700 MHz Pentium III处理器上,人脸检测器处理一幅384288像素的图像约需0.067秒(使用起始尺度为1.25,步长为1.5,描述如下)。这大约比 Rowley-Baluja- Kanade检测器快15倍(Rowley等人,1998年),比Schneiderman-Kanade检测器快600倍(Schneiderman 和 Kanade2000年)。

5.4 图像处理

对训练使用的所有样本子窗口进行方差归一化,以使不同照明条件的影响降到最低。因此,归一化在检测时也是必须的。利用积分图像,可以快速计算图像子窗口的方差。回顾式子,,其中σ是标准偏差,m为均值,x是在子窗口内的像素值。一个子窗口的平均值可由积分图像计算得来。使用方形的积分图像来计算像素和(比如在扫描过程中使用两个积分图像)。在扫描过程中,图像归一化的效果,可以通过后乘特征值实现,而非对像素操作。

5.5 扫描检测器

    最终的检测器在多尺度和位置下扫描图像。缩放检测器本身的大小,而不是缩放图像。这个过程是有道理的,因为以相同的成本特征可以在任何规模下被计算。以间隔为1.25尺度缩放可以取得良好的检测结果。

    该探测器扫描整个位置。通过转换窗口特定数量的像素 确定随后的位置。这种转换过程受到检测器尺寸的影响:如果当前的窗口尺寸为s,转换后的窗口尺寸为[s],其中,[]是舍入操作。

      的选择影响检测器的速度和准确性。训练图像会存在一些转换差异,但是,尽管图像中存在小的变化,学习的检测器仍能取得良好的检测性能。因此,检测器子窗口每次转换时可以不止一个像素。然而,步长大于一个像素会稍微降低检测率,同时,还减少误报的数量。我们给出两种不同步长的结果。

5.6 多次检测的集成

      由于最终的检测器对于转换和尺度上小的变化是不敏感的,在一幅待扫描图像中每个人脸周围通常要进行多次检测。对于误报的样本也是如此。在实践中,每张人脸返回一个最终的检测结果是有道理的。最后,为了把重复的检测结果结合到最终的检测结果中,要对检测子窗口进行后处理操作。

在这些实验中,检测结果以一种非常简单的方式组合。检测结果集先被划分为不相交的子集。如果两个检测结果的边界区域重叠,那么它们在相同的子集。每个分区产生一个单独的最终检测。最终边界区域的角是所有检测集的角的平均。

      在某些情况下,这种后处理操作减少了误报的数量,因为一个重复的误报子集被减少到一个单一的检测结果中。

5.7 基于一个真实世界测试集的实验

      我们在MIT + CMU的正面人脸测试集上测试了我们的系统(Rowley等人,1998年)。测试集由130张包含507个标记正面人脸的图像组成。图9中的ROC曲线显示了我们的检测器在此测试集上的性能。为了绘制ROC曲线,最后一级分类器的感知阈值要调整为到。阈值调整到时,产生的检测率为0.0,误报率为0.0。然而阈值调整到时,检测率和误报率增加到一个固定点。检测级联器若去掉最后一级,检测率和误报率都将减少。实际上,阈值为时,相当于除去最后一级。进一步增加检测率和误报率需要降低级联器下一级分类器的阈值。因此,为了绘制一条完整的ROC曲线,要除去分类器各级。我们用误报数代替ROC曲线x-轴的误报率,以方便与其他系统进行比较。为了计算误报率,只要简单地除以扫描子窗口的总数。对于= 1.0,起始尺寸= 1.0,扫描子窗口数为75081800。对于= 1.5,起始尺寸=1.25,扫描子窗口数为18901947

    PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第8张图片

9  我们的人脸检测器在MIT+ CMU测试集上的ROC曲线。检测器先以步长为1.0,起始尺寸为1.0运行一次(75,081,800个扫描子窗口),再以步长为1.5,起始尺寸为1.25运行一次(18,901,947个扫描子窗口)。两种情况使用的比例因子均为1.25

      遗憾的是,以往出版的大多数人脸检测结果只包括一个单一的运行方式(即ROC曲线上的单个点)。为了与我们的检测器对比更容易,我们列出了与其他系统相同误报率情况下的我们的检测率。表3给出了我们的系统以及其他系统对于不同误报数的检测率。对于Rowley-Baluja-Kanade的结果(Rowley等人,1998年),他们很多不同版本的检测器,测试产生了许多不同的结果。对于一个特定的检测器,不同的结果在ROC曲线上实际上并不是一个点,用他们的方法并不能表示很多不同的性能点。他们没有公布两个探测器的ROC曲线,但这些ROC曲线并不代表他们的最好成绩。对于Roth-Yang-Ahuja检测器(Roth等人,2000年),他们给出了在MIT + CMU测试集上减去5张被线画出人脸后的结果。因此,他们的结果实际上是MIT + CMU的测试子集,由包含483个人脸的125张图像构成。据推测,如果使用完整的测试集,他们的检测率将较低。检测率旁的括号中表明了这个略有不同的测试集。在麻省理工学院用MIT + CMU测试子集测试Sung Poggio的人脸检测器(Sung Poggio1998年),因为CMU部分还不存在。麻省理工学院的测试集包含23幅图像有149个人脸。他们的检测率为79.9%,有5个误报。在麻省理工学院的测试集上检测,我们有5个误报时的检测率是77.8%。 

3  在包含130幅图像507张人脸的MIT+ CMU测试集上,不同误报数对应的检测率

PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第9张图片


10给出了我们的人脸检测器的输出结果,测试用图像从MIT + CMU测试集中选取。

PAUL VIOLA 鲁棒的实时人脸检测:Robust Real-Time Face Detection_第10张图片

                                                          图10  我们的人脸检测器在MIT + CMU测试集中大量图像上的输出结果

5.7.1 一个简单的投票机制进一步改善结果

     使用不同的初始负样本,采用稍微不同的负对正误差的权重,根据分类器大小权衡误报数采取略有不同的标准,将这些结合起来以获取最好的结果。这三个系统执行最终任务性能相似,但在某些情况下,误差不同。这三个检测器的检测结果仅保留至少有三分之二检测器通过的检测结果。这提高了最终的检测率并消除了更多的误报数。由于检测误差是不相关的,在最好的单个检测器上,这种结合将产生一个幅度不大但可衡量的改善。

5.7.2  失败模式

      通过观察我们的人脸检测器在大量测试图像上的性能,我们注意到了一些不同的失败模式。

      人脸检测器在正面,垂直的人脸上训练。这些人脸只是大致一致,所以无论在平面内还是平面外,都有一定的旋转变化。非正式的观察表明,人脸检测器能检测到的人脸为平面内倾斜约±15度的和平面外约±45的(朝向轮廓图)。对于比这更大的旋转角度,检测器将变得不可靠。

       我们也注意到,粗糙的背光下人脸会显得非常黑,有时候这也会导致检测失败。有趣的是,在这种情况下,基于鲁棒统计方法使用一个非线性的方差归一化消除异常值,可以改善检测率。这种归一化也会带来问题,使得在我们的积分图像框架内计算成本大大增加。

      最后,我们的人脸检测器也无法检测出明显闭塞的人脸。比如眼睛闭着的话,检测器往往会失败。但是嘴巴不是那么重要,嘴巴闭着的人脸图像通常也能被检测出来。

6. 结束语

      我们提出了一种人脸检测方法,它能在实现高检测精度的同时最大限度地减少计算时间。该方法构建的人脸检测系统的速度比以往任何方法快大约15倍。初步实验表明,这将会在其他地方描述,用于其它物体的高效的检测器,如行人或汽车,也可以以这种方式构建。

      本文汇集了新的算法,表示法和观念,这是相当一般的,在计算机视觉和图像处理方面很可能有更广泛的应用。

      第一个贡献是引入一种新方法,使用积分图像来计算出丰富的图像特征集。为了实现真正意义上的尺度不变性,几乎所有的人脸检测系统必须工作在多个图像尺度。积分图像,通过不必计算多尺度图像金字塔,显著地减少了人脸检测所需的原始图像处理。使用积分图像,完成人脸检测几乎只需要与计算图像金字塔相同的时间。

      然而积分图像也应该立即应用到其他使用类Haar征的系统中,比如Papageorgiou等人(1998年),它可以预见性地作用于任何利用类Haar特征价值的任务。最初的实验表明,一个类似的特征集对于参数估计的任务也是有效的,它可以确定人脸的表情,头的位置,或物体的姿势。

       本文的第二个贡献是一个简单而有效的分类器,它基于AdaBoost算法进行特征选择,计算效率非常高。这种分类器显然是一种有效的人脸检测器,我们有信心,它也将在诸如汽车或行人检测等其它领域有效。此外,这个激进又有效的特征选择方法也会影响各种各样的学习任务。给定一个特征选择的有效工具,系统设计师可自由定义一个非常大而且非常复杂的特征集作为学习过程的输入。然而得到的分类器计算效率还是很高的,因为只有少数的特征在运行时需要被计算。因此得到的分类器也很简单,在一个大而复杂的特征集上,更可能只找出几个关键性特征,它们能以一种简单的方式捕捉分类问题的结构。

      本文的第三个贡献是一种构建级联分类器的技术,它在提高检测精度的同时,能从根本上减少计算时间。级联器的早期阶段拒绝大多数的图像,以集中处理随后可能的区域。关键的一点是,级联器的结构是很简单的,而且是均相的。之前关于注意力过滤的方法,比如 Itti等人(1998年),提出了一个更复杂且异构的过滤机制。同样,Amit和Geman(1999年)提出了一种分层结构用于检测,其在结构和处理上是十分不同的。均相体系,除了易于实现和理解外,在权衡处理时间和检测性能时也有优势。

       最后,本文提出了一套详细的实验,实验在一个曾被广泛研究的困难的人脸检测数据集上进行。此数据集包括的人脸处于广泛的条件下,包括:照明,尺度,姿势和摄像头的变化。实验研究这样一个大又复杂的数据集是困难和费时的。然而,能在这些条件下工作的系统不可能是脆弱的,也不会是只局限于单一的情况的。更重要的是,从该数据集得出的结论不可能是实验文物。

致  谢

      作者想感谢T.M. Murali, Jim Rehg, Tat-Jen Cham, Rahul Sukthankar, Vladimir Pavlovic和Thomas Leung提出了宝贵意见。Henry Rowley提供了他的人脸检测器的实现,用以与我们的系统对比,这对我们帮助很大。

附录

1. 监督是指训练专注操作器以检测一个特定类的样本。

2. Henry Rowley非常慷慨地为我们提供了他的检测系统的实现来进行直接比较。报告的结果针对的是他最快的系统。从公开发表的文献来看,这是很难确定的,

   但 Rowley-Baluja-Kanade探测器被普遍认为是最快的检测系统,并已在现实世界的问题上进行了大量测试。

3. 一个完备的基础就是基础元素之间没有线性依赖,并与图像空间具有相同的元素数,这里为576。160,000个特征的完备集多次超完备。

4. 与制图学中使用的“总结区表”有很密切的关系(Crow,1984年)。这里我们选择不同的名称,以强调其用于图像的分析,而不是纹理映射。

5. 提供定制的硬件和特殊的指令集比如Intel MMX指令集可以改变这一分析。但与传统软件算法的性能比较仍是有意义的。

6. 在弱学习器是一个感知学习算法的情况下,最终增强的分类器是一个两层感知器。一个两层感知器在原则上比任何单层感知器都更强大。

7. 在其他已发表的人脸检测系统中,有些可能速度更快。那些系统要么忽略了详细的性能讨论,要么没有在一个庞大且困难的训练集上给出检测率和误报率。

参考文献

[1] Amit, Y. and Geman, D. 1999. A computational model for visual selection. Neural Computation, 11:1691–1715.

[2] Crow, F. 1984. Summed-area tables for texture mapping. In Proceedings of SIGGRAPH, 18(3):207212.

[3] Fleuret, F. and Geman, D. 2001. Coarse-to-fine face detection. Int. J. Computer Vision, 41:85107.

[4] Freeman,W.T. and Adelson, E.H. 1991. The design and use of steerable filters. IEEE Transactions on Pattern Analysis and Machine Intelligence, 13(9):891906.

[5] Freund, Y. and Schapire, R.E. 1995. A decision-theoretic generalization of on-line learning and an application to boosting. In Computational Learning Theory: Eurocolt 95, Springer-Verlag, pp. 2337.

[6] Greenspan, H., Belongie, S., Gooodman, R., Perona, P., Rakshit, S., and Anderson, C. 1994. Overcomplete steerable pyramid filters and rotation invariance. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 

[7] Itti, L., Koch, C., and Niebur, E. 1998. A model of saliency-based visual attention for rapid scene analysis. IEEE Patt. Anal. Mach. Intell., 20(11):1254-1259.

[8] John, G., Kohavi, R., and Pfeger, K. 1994. Irrelevant features and the subset selection problem. In Machine Learning Conference Proceedings.

[9] Osuna, E., Freund, R., and Girosi, F. 1997a. Training support vector machines: An application to face detection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.

[10] Osuna, E., Freund, R., and Girosi, F. 1997b. Training support vector machines: an application to face detection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.

[11] Papageorgiou, C., Oren, M., and Poggio, T. 1998. A general framework for object detection. In International Conference on Computer Vision.

[12] Quinlan, J. 1986. Induction of decision trees. Machine Learning, 1:81–106.

[13] Roth, D., Yang, M., and Ahuja, N. 2000. A snowbased face detector. In Neural Information Processing 12.

[14] Rowley, H., Baluja, S., and Kanade, T. 1998. Neural network-based face detection. IEEE Patt. Anal. Mach. Intell., 20:22–38.

[15] Schapire, R.E., Freund, Y., Bartlett, P., and Lee, W.S. 1997. Boosting the margin: A new explanation for the effectiveness of voting methods. In Proceedings of the Fourteenth International Conference on Machine Learning.

[16] Schapire, R.E., Freund, Y., Bartlett, P., and Lee, W.S. 1998. Boosting the margin: A new explanation for the effectiveness of voting methods. Ann. Stat., 26(5):1651–1686.

[17] Schneiderman, H. and Kanade, T. 2000. A statistical method for 3D object detection applied to faces and cars. In International Conference on Computer Vision.

[18] Simard, P.Y., Bottou, L., Haffner, P., and LeCun, Y. (1999). Boxlets: A fast convolution algorithm for signal processing and neural networks. In M. Kearns, S. Solla, and D. Cohn (Eds.), Advances in Neural Information Processing Systems, vol. 11, pp. 571– 577.

[19] Sung, K. and Poggio, T. 1998. Example-based learning for viewbased face detection. IEEE Patt. Anal. Mach. Intell., 20:39–51.

[20] Tieu, K. andViola, P. 2000. Boosting image retrieval. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.

[21] Tsotsos, J., Culhane, S., Wai, W., Lai, Y., Davis, N., and Nuflo, F. 1995. Modeling visual-attention via selective tuning. Artificial Intelligence Journal, 78(1/2):507–545.

[22] Webb, A. 1999. Statistical Pattern Recognition. Oxford University Press: New York.

你可能感兴趣的:(人脸检测)