文档库 最新最全的文档下载
当前位置:文档库 › (精品)基于OpenCV的人脸检测 毕设毕业论文

(精品)基于OpenCV的人脸检测 毕设毕业论文

基于OpenCV的人脸检测

摘要

人脸检测是指使用计算机在动态的场景或复杂的背景中检测出人脸的存在,并确定所有人脸的位置与大小的过程。人脸检测技术不仅是人脸识别、表情识别、人脸跟踪等技术的重要前提条件,同时在模式识别、人机交互、智能监控、视频检索等领域也引起了广泛的重视。

本论文简单介绍了国内外人脸识别技术研究及应用的发展现状及其难点分析。在第二章中介绍了包括基于知识的方法、特征不变量方法、模板匹配方法、基于外观的方法四类检测方法;在第三章简单介绍了四种经典的检测方法,包括特征脸、神经网络、隐马尔可夫模型方法、支持向量机。

在第四章重点分析了AdaBoost算法中集成机器学习的一个重要机制:多个弱分类器集成的方法,机器学习中的弱学习到强学习,集成的关键是投票,最简单的方法是“绝对多数”的方法。在第五章详细分析了AdaBoost算法检测速度快、可以检测任意尺度的图像的特点。

在这个理论基础上,本文中人脸算法的研究基于OpenCV开源代码,在OpenCV 开源代码中设计了一些基础的数据类型和一些帮助数据类型。由于OpenCV的源代码完全开放,本文的研究中利用这套代码在PC上以Visual C++集成开发环境做平台搭建了一个基于OpenCV的人脸检测系统,进行了人脸检测仿真,并对其结果进行分析。关键词:人脸检测;AdaBoost;分类器;OpenCV

Face Detection Based on OpenCV

Abstract

Human face detection means that for a given image or video,to determine whether it contains face regions,if so,determines the number, the exact location and the size of all the faces.Human face detection is not only a necessary precondition of face recognition,expression recognition technology, face tracking,but also,it plays ail important role in applications like in the intelligent -computer interaction,video conferencing,intelligent surveillance,video retrieval and so on.Therefore,face detection technology attracted widespread attention in pattern recognition,computer vision,-computer interaction and other fields.

This paper describes the national and international recognition technology applications research and development and analysis the difficult situation. In the second chapter to include Knowledge-based Methods, Feature Invariant Approaches, Template Matching Methods, Appearance-based Methods. In the third chapter describes the four classical detection methods, including Eigenface, Artificial Neural Network, Hidden Markov Model, Support Vector Machines.

In chapter 4 on the analysis of the AdaBoost algorithms integration of machinery to study of an important mechanism : more integrated approach in the classification of the study of study at the learning and integration is the key to the vote, the simplest method is the absolute majority . In chapter five detailed analysis AdaBoost algorithm test speed, you can detect any scale the image quality.

This paper’s research is based on the OpenCV source code,in which some basic data type and face detection system in the Visual C++ environment.

Keywords: face detection ; AdaBoost ; classifier ; openCV

目录

摘要 (1)

Abstract (2)

第1章人脸检测 (5)

1.1 背景 (5)

1.2 目前的研究状况 (6)

1.3 概念 (6)

1.4 人脸检测及其合成技术的应用领域 (6)

1.5 人脸检测评价标准 (7)

第2章检测方法 (9)

2.1 基于知识的方法 (9)

2.2 特征不变量方法 (9)

2.3 模板匹配方法 (10)

2.4 基于外观的方法 (11)

第3章经典方法概述 (13)

3.1 特征脸 (13)

3.2 神经网络 (13)

3.3 隐马尔可夫模型方法 (14)

3.4 支持向量机 (14)

第4章Adaboost算法 (16)

4.1 概述 (16)

4.1.1 Adaboost算法简介 (16)

4.1.2 Adaboost人脸检测算法 (17)

4.2 弱学习与强学习 (18)

4.3 PAC 基本模型 (19)

4.3.1 概述 (19)

4.3.2 基本概念 (19)

4.3.3 PAC模型的不足 (20)

4.4 Boosting 方法 (21)

4.5 Adaboost算法性能分析 (21)

第5章矩形特征与积分图 (22)

5.1 引言 (22)

5.2 矩形特征 (22)

5.2.1 概述 (22)

5.2.2 特征模板 (23)

5.3 积分图 (24)

5.3.1 积分图的概念 (24)

5.3.2 使用积分图计算 (25)

5.4 Haar特征值计算 (27)

第6章人脸检测的实现 (31)

6.1 OpenCV概述 (31)

6.1.1 OpenCV简介 (31)

6.1.2 应用领域 (31)

6.1.3 OpenCV的起源 (32)

6.1.4 OpenCV的基本结构 (32)

6.1.5OpenCV的特征 (33)

6.2 OpenCV在检测中的应用 (34)

6.2.1 编译OpenCV (34)

6.2.1 为VC++ 2008 Express配置OpenCV环境 (36)

6.3 实验结果 (37)

6.4 结论: (39)

参考文献 (40)

致谢 (42)

附录一人脸检测源程序 (43)

附录二外文翻译 (48)

第1章人脸检测

1.1 背景

人脸检测问题最初来源于人脸识别,任何一个自动的人脸识别系统首先必须对人脸进行准确的定位,因此实时而有效的人脸检测显得尤为重要。跟其他生物特征识别方法相比,人脸识别具有更加直接、方便、友好的特点,因其非侵犯性更容易被用户所接受。而且,通过对人脸的表情、姿势等作分析,还能获得其他识别系统难以获得的信息,因此人脸识别成为最有潜力的生物身份验证手段。早期的人脸识别研究主要针对具有较强约束条件的人脸图像(如无背景的图像),因此假设人脸容易获得或在手工交互下运用,而人脸检测问题并未得到重视。

近年来,随着信号处理理论和计算机的出现及其发展,人们开始用摄像机获取环境图像并将其转换成数字信号,用计算机实现对视觉信息的处理,这就形成了计算机视觉。计算机视觉是当前计算机科学中的一个非常活跃的领域,其基本假设是:可以用计算的方式来模拟人类的视觉机制。

人脸的自动识别是一种重要的生物特征识别技术,与其它身份识别方法相比,人脸识别具有直接、方便、友好等特点,因而人脸自动识别问题的研究不仅具有重要的应用价值,而且具有重要的理论意义。现在,随着科学技术和电子商务的发展,人脸检测的应用背景已经远远超出了人脸识别系统的范畴,在基于内容的检索、数字视频处理、计算机视觉、人机交互等方面都有着重要的应用价值。

人脸识别通过计算机提取人脸的特征,并根据这些特征进行身份验证。人脸与人体的其他生物特征(指纹、虹膜等)一样与生俱来不可改变,它们所具有的唯一性和不

易被复制的良好特性为身份鉴别提供了必要的前提,同其他生物特征识别技术相比,人脸识别技术具有操作简单、结果直观、隐蔽性好的优越性。人脸识别一般包括三个步骤:人脸检测、人脸特征提取和人脸的识别与验证。其处理流程如图1-1所示。

图1-1人脸识别的一般步骤

1.2 目前的研究状况

人脸检测是一个复杂的极具挑战性的模式检测,其主要的难点有两方面:一方面是由于人脸内在的变化所引起:

(1)人脸具有很复杂的细节变化,不同的外貌特征如脸形、肤色等,不同的表情如眼、嘴的开与闭等;

(2)其他物体对人脸的遮挡,如眼镜、头发和头部饰物以及其他外部物体等;

另外一方面由于外在条件变化所引起:

(3)成像角度的不同也能造成人脸的多姿态,如平面内旋转、深度旋转以及上下旋转,其中深度旋转影响较大;

(4)光照的影响,如图像中的亮度、对比度的变化和阴影等;

(5)图像的成像条件,如摄像设备的焦距、成像距离,图像获得的途径等等。

这些困难都为解决人脸问题造成了难度。如果能找到一些相关的算法并使其能在应用过程中达到实时,将为成功构造出具有实际应用价值的人脸检测系统提供保证。

目前,国外对人脸检测问题的研究有很多,比较著名的有MIT,CMU等;国内的清华大学、北京工业大学、中科院计算所和自动化所等都有人员从事人脸检测相关的研究。而且,MPEG7标准组织已经成立了人脸识别草案小组,人脸检测算法也是一项征集的内容。随着人脸检测研究的深入,国际上发表的有关论文数量也在大幅度增长,如IEEE的FG、ICIP\CVPR等重要国际会议上每年都有大量关于人脸检测的论文,占有关人脸研究论文的13之多。由此可见世界范围的学者对人脸检测技术的重视。

1.3 概念

人脸检测是指对于任意一幅给定的图像,采用一定的策略进行搜索来确定其中是否含有人脸,如果是,就返回人脸的位置、大小和姿态。

人脸检测是自动人脸识别系统中的一个关键环节。随着电子商务等应用的发展,人脸识别成为最有潜力的生物身份验证手段,这种应用背景要求自动人脸识别系统能

够对一般图像具有一定的识别能力,由此所面临的一系列问题使得人脸检测开始作为

一个独立的课题受到研究者的重视。现在,人脸检测的应用背景已经远远超出了人脸

识别系统的范畴,在基于内容的检索、数字视频处理、视频检测等方面有着重要的应

用价值。

1.4 人脸检测及其合成技术的应用领域

近年来,视频人脸检测及其合成技术受到越来越多研究者的关注,这主要由于两方面原因:一方面,计算机计算和存储成本的大幅度下跌使得以视频速率或近似视频速率采集存储图像序列成为可能;另一方面,视频跟踪识别技术的极为广阔的市场应用前景也是推动此研究的主要动力。主要应用在一下五个领域:

(1)身份认证与安全防护

最通俗的例子就是门禁控制。门禁控制是为了有效的控制人员的出入,并且记录

所有进出的详细情况,实现对出入的安全管理。人脸门禁系统是一种基于人脸识别技

术的新型访问控制系统,将具有访问权限的访问者的人脸信息存放在人脸数据库中,对人脸信息进行学习训练。通过摄像机动态捕获人脸,将人脸信息同数据库中人脸信

息进行检索比对,只有图像信息符合的人才可以进入,否则拒绝进入,并对强行进入

者发出报警。

在这个世界上,只要有门的地方几乎都带有一把锁。当然,在许多安全级别要求

较高的区域,例如金融机构、机关办公大楼、运动场馆、甚至重要设施的工地,都需

要对大量的人员进行基于身份认证的门禁管理。手机、笔记本电脑等个人电子用品,在开机和使用中经常要用到身份验证功能。

(2)媒体与娱乐

人们的许多娱乐活动都是跟脸部有关的。最著名的娱乐节目之一就是川剧的变脸。在网络虚拟世界里,通过人脸的变化,可以产生大量的娱乐节目和效果。手机、数码相机等消费电子产品中,基于人脸的娱乐项目越来越丰富。QQ、MSN等即时通信工具以及虚拟化身网络游戏也是人脸合成技术的广阔市场。

另外还有家庭娱乐。家庭娱乐是指能够识别主人身份的智能玩具,家政机器人,具有真实面像的虚拟游戏玩家等。随着电子技术水平的提高,家庭娱乐会得到广泛的应用,其中的关键技术之一也是人脸的跟踪识别。

(3)图像搜索

目前,Google的图像搜索其实还是文字搜索。基于人脸图像识别技术的搜索引

擎将会具有广泛的应用前景。

(4)协助调查

目前,在银行、金库发生抢劫事件已经屡见不鲜。发生这样的事件不是一时就能

够制止的,但是可以通过人脸检测的设备来提取并记录罪犯的人脸,提供给公安机关

以帮助破案。

(5)信息安全

信息安全是指计算机和网络的登录、文件的加密和解密。在信息安全中,人脸的识别也是其中的一个关键技术。

1.5 人脸检测评价标准

人脸检测系统性能主要评价标准有:检测率,误检率,检测速度以及鲁棒性:(1)检测率

被正确检测到的人脸数与图像内包含的人脸数的比值。检测率越高,说明检测系统对人脸的接受能力越强。

(2)误检率

也称虚警率,误报率。被误检为人脸的非人脸子窗口数与图像内被检测的所有非人脸子窗口数的比值。设图像内被检测的所有非人脸子窗口数为N2,被误检为人脸的非人脸子窗口数为从,则误检率为NlN2。再设图像内被检测的所有子窗口数为N,图像内包含的人脸数为Nl,N=Nl。当N>Nl时,误检率近似于NlN。

检测率无法反映系统对非人脸的排除能力,有可能出现这种情况:所有人脸都被检测到,但同时很多非人脸区域被误认为是人脸。因此引入误检率来衡量系统对非人脸的排除能力。误检率越低,说明检测系统对非人脸的排除能力越强。

(3)检测速度

大部分应用领域需要在线实时地检测人脸,如人脸识别、人脸跟踪,视频监控等。在检测率和误检率达到满意的前提下,检测速度越快越好。

(4)鲁棒性

即在各种条件下,检测系统的适应能力。如复杂背景的干扰,人脸姿态的影响,光照条件的影响,以及遮挡等因素的影响。

这四个标准有些是相互制约的,比如误检率随着检测率的提高而提高,检测率随着误检率的降低而降低。

第2章检测方法

人脸检测经历了较长的发展过程,期间涌现出了很多的检测方法,本文以M.H.Yang在2002年发表的关于人脸检测方法的分类方法把人脸检测方法分为以下四种:基于知识的方法(Knowledge-based Methods)、特征不变量方法(Feature Invariant Approaches)、模板匹配方法(Template Matching Methods)、基于外观的方

法(Appearance-based Methods)。

当然,有许多人脸检测的方法并不能简单地归于上述中的某一类,而是几类的组合。也可以将人脸检测的方法简单地分为两类:基于特征的和基于图像的。基于特征的方法指以某种特征为最小处理单元的方法;基于图像的方法指以图像中的像素为处理单元的方法。

2.1 基于知识的方法

此方法是把人脸面部器官之间关系编码并准则化的人脸检测方法。这是一种自顶而下的方法,根据人脸面部器官的对称性、灰度差异等先验知识,制定一系列的准则。当图像中的待测区域符合准则,即被检测为人脸。

人脸及器官具有典型的边沿和形状特征,通常人们利用采用Laplacian,Sobel和Canny等算子来提取边沿特征,将这些特征用于人脸的定位。边沿和形状对于光照条件的变化具有很好的鲁棒性,灰度特征对光照比较敏感。

每一个人脸都有固定的纹理特征,利用这种特征来区分不同的对象,Skufca和Augusteijn共同努力研究了一种通过鉴别类似于人脸的纹理推断人脸的存在的方法。Nakano和Dai也将SGLD模型用于检测人脸,取得了很好的效果。

Yang等首先提出了基于知识规则的由粗到细的三级结构来检测人脸。通过平均和采样的方法得到原图像在不同分辨率下的图像,那些低分辨率的图像被称为镶嵌图(MosaicImage)。针对不同分辨率的图像采用不同的准则进行判定,在低分辨率图像里的准则主要体现了人脸的大体轮廓,而在高分辨率图像里的准则主要体现了人脸的细节特征。虽然,Yang的方法在检测性能方面并不突出,但由粗至细的检测思想对以后的研究工作产生了积极的影响。

但是人脸的类型有千差万别,如果制定的规则太细,真正的人脸可能会被漏掉;如果制定的规则太笼统,有可能造成较高的虚警率。

2.2 特征不变量方法

这个方法的目标是寻找那些即使当姿势、视角和光线条件变化时仍然存在的结构特征,并利用这些特征来定位人脸。由于人类能够毫不费劲地“看到”在不同光线和姿态下的人脸和物体,因此研究人员认为有一个潜在的假设:存在一些关于人脸的不依赖于外在条件的属性或者特征。有许多方法就是按照这个潜在假设,首先去寻找这种脸部特征(通过大量样本学习的方法),然后用寻找到的特征去检测人脸。对比基于知识的自上而下的方法,这种基于特征的方法是自下而上的。

Sirohey提出了用椭圆拟合人脸区域的方法。Graf等人提出了利用某些形态学的方法进行人脸的检测方法。Leung等人提出一种利用人脸五个特征来定义和检测人脸的方

法。Han等人提出了一种通过形态学眼部分割的方法来进行人脸检测的方法。

与基于知识规则的方法相比,该类方法主要是企图寻找人脸不变化的特征来对人脸进行检测,特征不变量方法的根本假设是:在所有的人脸检测过程中存在着图像空域或者频域不变量,而且这种不变量是唯一的。于是人脸检测过程就是在图像中全局搜索这种不变量。该类方法中所采用的特征不变量主要有:面部特征、纹理。皮肤颜色和多种特征的融合。该类方法中所采用的一个主要问题是:图像特征极大的收到光照、遮挡和其它噪声的影响,当阴影存在时,面部的特征辩解将被减弱,而阴影的边界将被增强,此时导致边缘感知分组无效。

Sirohe y提出了一种从复杂背景中分割定位人脸的方法,该方法使用人脸边缘图信息和椭圆拟合方法检测人脸。Augusterj n提出了一种通过面部相似性纹理信息的人脸检测方法,通过在大小的子图像上计算二阶统计特征纹理信息。在许多的人脸检测应用中,肤色被认为是人脸检测中一种有效的特征,因为颜色信息和运动信息是一种有效减少搜索空间的特征。最近,人脸检测最常采用的主要方法是联合几种不同的特征方法检测。它们首先利用全局特征,如肤色和形状大小等信息寻找人脸候选区域,再根据局部特征,如眼睛、鼻子和头发等信息来确认候选区域是人脸区域。

在实际的检测情况下,由于噪声和遮挡等问题的存在,人脸的某些特征可能被破坏,这将严重影响此算法的检测效果。

2.3 模板匹配方法

该方法大多是用归一化去互相关,在图像灰度层次上直接比较目标模板和候选图像区域之间的相似性,得到表示相似程度的值,然后与相应阈值比较判断候选图像区域是否为人脸区域。其中较为典型的例子就是Yullietlo等提出的基于弹性模板匹配的人脸检测方法。由于模板本身比较粗略,所以模板匹配的人脸检测方法往往精度不是很高,而且计算量较大,速度较慢。

模板匹配通常被用于人脸检测的验证,这样可以更进一步提高人脸检测系统的准确率,它的主要思想是利用模板与待检测图像之间的相关程度来对图像中的入脸进行判断。可变形模板和预先定义的模板是人脸检测常用的模板。Venkatraman和GovindarajuI使用小波延伸的方法用于图像的边缘提取。Tsukamoto等提出一个人脸模式的定性模型(QMF)。QMF方法将每一个样本图像分割成一些块,再对各个块估算其定性特征。

主动形状模型(ASM)和主动外观模型(AAM)是近年来流行的一种对象形状提取算法,其核心思想是在某种局部点模型匹配的基础上,利用统计模型对待识别的人脸的形状进行约束,从而转化为一个最优化求解问题,并期望最终收敛到实际的人脸形状上去。

而且,在实际的检测中,由于人脸的尺度、形状等的变化较大时往往检测效果较差,此种方法也没有获得较广泛的应用。

2.4 基于外观的方法

基于外观的方法也可以称为基于统计的人脸检测方法也可以称为基于分布特征的检测方法,它是利用统计分析和机器学习等方法来获得人脸和非人脸特征,利用这些特征和判决函数来进行人脸检测的方法。

MIT 的Sung 和Poggio提出了一种基于分布特征的人脸检测方法。他们建立了一个分布模型,指出通过对图像正例和反例样本的学习可以获得人脸的分布模型。该系统由两个部分组成,人脸模式和非人脸模式的分布模型及一个多层感知器分类器。每一个人脸和非人脸的学习样本首先进行预处理,包括归一化,直方图均衡等,然后处理为19×19 的图像,将这个图像作为361 维的矢量。接下来将这些矢量采用改进的K 均值聚类算法分成6个人脸和6个非人脸的聚类。每一类用它们的均值图像和协方差矩阵表示成一个高维的高斯函数。见图2-1 所示。

2-1 Sung 和Poggio提出的人脸非人脸聚类模型

值得强调的是,为了解决人脸检测中“非人脸”样本的选取问题,Sung 等人采用“自举(bootstrap)”方法:首先建立一个只使用“人脸”样本和少量“非人脸”样本训练的初始分类器对一组图像进行检测,将所有错检非人脸为人脸的图像加入“非人脸”样本库;然后把得到的“人脸”和“非人脸”样本训练构成一个新的分类器进行重新检测。将以上过程不断循环,直到收集到了足够的“非人脸”样本。这种循环检测来得到非人脸的收集方法后来得到许多研究者的使用。

由于人脸图像的复杂性,只使用基本特征与简单规则很难有效地描述人脸与背景的本质区别,因此基于统计和学习的方法越来越受到重视。这类方法是把人脸区域看

作一类模式,利用统计分析与机器学习的方法对大量人脸样本和非人脸样本进行学习得到各自的统计特征,然后根据这些特征构造分类器,通过判别图像中所有可能区域属于哪类模式的方法实现人脸检测。实际上,人脸检测问题被转化为统计模式识别的二分类问题。该类方法主要包括:线性子空间法、神经网络、隐马尔可夫模型、支持向量机、基于AdaBoost算法等方法。

第3章经典方法概述

人脸检测的方法多于牛毛,基于各种数学模型的方法估计有近百种。本节简单描述了用于人脸检测的几个经典方法,以便管中窥豹,这几个方法在人脸检测历史上都发挥过各自的作用。

3.1 特征脸

最早用特征向量来进行人脸检测的是Kohonen,他构建了一个简单的神经网络来实现规范化了的人脸图像的识别。这个神经网络用图像的自相关矩阵的特征向量近似计算了对人脸的描述。这些特征向量后来就发展成了特征脸(Eigenface)方法。

特征脸是基于从主成分分析(PCA)的一种人脸检测,它根据一组人脸训练样本构造主元子空间,检测时,将测试图像投影到主元子空间上,得到一组投影系数,再和各个己知的人脸图像模式比较,从而得到检测结果。

在传统特征脸的基础上,研究者注意到特征值大的特征人脸向量(特征脸)并不一定分类性能好,而因此发展了多种特征(子空间)选择方法,如Belhumeur的FisherFace方法等。事实上,特征脸方法是一种显式主元分析人脸建模的方法,而一些线性自联想、线性压缩型BP网则为隐式的主元分析方法,它们都是把人脸表示为一些向量的加权和,这些向量是训练集叉积阵的主特征向量。特征脸方法是一种简单、快速、实用的基于变换系数特征的算法,但由于它在本质上依赖于训练集和测试集图像的灰度相关性,所以还有着很大的局限性。

3.2 神经网络

人工神经网络(Artificial Neural Network,ANN)方法是通过训练一个网络结构,把模式的统计信息隐含在神经网络的结构和参数之中。在人工神经网络的方法中,Rowley的工作较为突出。

Rowley等提出基于神经网络的人脸检测系统。他们的系统分为两个阶段:第一阶段是基于神经网络的分类器。该分类器的输入是规定尺寸的检测区域,输出为l到.1的数,由此来判断检测区域是否是人脸(输出接近1为人脸,接近.1为非人脸):第二

阶段是合并重复检测并判别。由于训练样本以及分类器等因素,在图像中以人脸为中心的一定区域内会产生重复检测。此阶段使用了一个单层的神经网络对重复检测进行合井,并使用一个多层的神经网络对检测结果进行判决。以上所述方法局限性在于,仅能检测正面垂直的人脸。1998年,Rowley等增加了一级神经网络用以检测平面内旋转的人脸角度,在对原图像进行反旋转后,送到正面人脸检测器中进行检测,使得该系统可以检测图像中按任意的角度旋转的人脸。

图3-1 Rowley 的带有图像预处理的神经网络系统

用神经网络进行人脸检测的好处是很容易训练一个用于检测人脸模式的系

统。但是,缺点是网络结构需要大范围的调整(层数、结点数、学习速率等等)

才能获得期望的性能。

3.3 隐马尔可夫模型方法

隐马尔科夫模型(Hidden Markov Model,HMM)是用于描述信号统计特性

的一组统计模型。前提假设是模型可被定义为一个参数化的进程。该进程的参数可通过精确的方法估计出来。HMM 使用马尔科夫链来模拟信号统计特征的变化,而这种变化又是间接地通过观察序列来描述的,因此,隐马尔科夫过程是一个双重的随机过程。在HMM 中,节点表示状态,有向边表示状态之间的转移,一个状态可以具有特征空间中的任意特征,对同一特征,不同状态表现出这一特征的概率不同。由于HMM 是一个统计模型,对于同一特征序列,可能会对应于许多状态序列,特征序列与状态序列之间的对应关系是非确定的。这种模型对于状态序列来说是隐的,故称为隐马尔科夫模型。

Nefian等均各人脸从上到下划分为五个互有重叠的区域(头发、额头、眼、鼻、嘴)。根据这个划分构造了一个包含五个状态的一维连续HMM用以表示人脸。接着对各块进行KL变换,取每块若干最大的特征向量作为观测值对HMM进行训练。此后,Nefian等还提出基于嵌入式HMM 的人脸检测方法。该方法同时考虑到人脸由左到右各个特征的自然顺序,使用二维HMM,并采用二维DCT变换的系数作为观察向量。

3.4 支持向量机

支持矢量机(Support Vector Machines)是由V. Vapnik 与其领导的贝尔实验室的小组一起开发出来的一种新的机器学习技术。SVM的理论基础来自于Vapnik等提出的统计学习理论,它的基本思想是,对于一个给定的具有有限数量训练样本的学习任务,如何在准确性(对于给定训练集)和机器容量(机器可无错误地学习任意训练集的能力)进行折中,以得到最佳的推广(Generalization)性能。

与传统统计学相比,统计学习理论(Statistical Learning Theory或SLT)是一种专门研究小样本情况下机器学习规律的理论。该理论针对小样本统计问题建立了一套新的理论体系,在这种体系下的统计推理规则不仅考虑了对渐近性能的要求,而且追求在现有有限信息的条件下得到最优结果。Vapnik等人从六、七十年代开始致力于此方面研究,到九十年代中期,随着其理论的不断发展和成熟,也由于神经网络等学习方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。

目前将该理论已经得到了一些应用,比如在光学字符识别等方面,并且获得了比较好的效果,不过由于建立完整的理论体系时间不长,该方法用于人脸检测的很少,尽管SVM算法的性能在许多实际问题的应用中得到了验证,但是该算法在计算上存在着一些问题,包括训练算法速度慢、算法复杂而难以实现以及检测阶段运算量大等等。Osun a等人介绍了一种具体的算法并对人脸识别问题进行了实验。他将样本集分为两个集合B和N,集合B作为子问题工作样本集进行SVM训练,并给出了两阶多项式分类器在人脸识别问题中的应用结果。试验结果表明该方法比Sung 等提出的基于分布特征的学习方法的检测率有所提高,同时计算复杂度下降,提高了检测速度。

第4章Adaboost算法

4.1 概述

4.1.1 Adaboost算法简介

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特徵,并将关键放在关键的训练数据上面。Adaboost算法是1995 年提出的一种快速人脸检

测算法,是人脸检测领域里程碑式的进步,这种算法根据弱学习的反馈,适应性地调

整假设的错误率,使在效率不降低的情况下,检测正确率得到了很大的提高。

Adaboost算法是目前在人脸检测方面检测速度较快、检测效果较好的一种检测方法,它是一种把弱分类器采用级联的方式训练成为强分类器的方法。这些弱分类器只需要满足比随机猜测好一点,就能通过不断的修正每个弱分类器的权值,即挑选那些比较好的分类器,抛弃不好的分类器,从而最终形成由这些弱分类器组成的强分类器,相比较其他的方法而言,Adaboost方法对每个弱分类器的权值的形成都是无人值守的,完全自动化的,因而Adaboost算法有着比较好的易用性。大量的实验证明,Adaboost 算法是有效的将多弱分类器强化成为强分类器的一种方法,经过训练的分类器具有比较好的分类效果,而且速度较快。图4.1给出了Adaboos t人脸检测算法进行训练和检测的流程图,本文也将分训练和检测两个方面介绍Adaboost算法。

图4.1Adaboost训练过程

4.1.2 Adaboost人脸检测算法

人体检测属模式识别范畴。模式识别方法多种多样,模式识别系统的最终目标是

要在表示空间和解释空间之间找到一种映射关系。这种映射可以是一个分类,也可以

是回归或者描述方案。在这里,我们用分类来叙述。分类方法总得来说可以分为两种:

监督学习和非监督学习。后来又在前两者的基础上发展出了半监督学习方法,这种方法的本质仍属于监督学习。

统计分类是模式识别发展过程中建立起来的比较经典的方法,其表达方式有着坚实的理论基础。它主要基于用概率统计模型得到各类别的特征向量分布,以取得分类的功能。特征向量的取得是基于一个类别已知的训练样本集合。因此,这是一种监督学习的模式识别方法。在这个意义上,分类器是概念驱动的,用已知类别标签的样本训练分类器从而得知如何分类。继而对新的样本集达到分类的效果,统计分类方法有很多具体的方法,它们取决于是否采用一个已知的、参数型的分布模型。

Adaboost算法是统计分类方法中一个经典算法,它由Boosting算法发展而来,是由Freund和Schapire在1995年提出的,该算法解决了以前Boosting算法在实践中存在的各种问题。实验表明,Adaboost算法能够显著提高学习精度。

利用Adaboost算法与haar特征(本文将会在第五章详细介绍haar特征)相结合的方法进行人脸检测。Haar特征是一种基于积分图像的特征,主要在灰度图像中使用,该特征计算简单,提取速度较快。Adaboost算法首先提取图像中的haar特征,再将训练得到的haar特征转换成弱分类器,最后将得到的弱分类器进行优化组合用于人脸检测。

Viola等人在2001年提出使用AdaBoost学习算法的快速人脸检测方法,实现了实时的正面人脸检测系统。Viola的系统中主要有三个核心思想:首先,提出了一种称为“积分图像”的图像表示方法,这种表示法能够快速计算出检测器用到的特征;其次,利用基于AdaBoost的学习算法,从一个较大的特征集中选择少量的关键视觉特征,产生一个高效的分类器;最后,再用级联的方式将单个的分类器合成为一个更加复杂的分类器,使图像的背景区域可以被快速地丢弃,而在有可能存在目标(人脸)的区域花费更多的计算。该人脸检测系统在实时正面人脸检测中能够达到15帧秒的速率。由于该方法能够达到较高的检测率并且具有目前最好的实时性,因此激发了更多研究人员在基于类Haar特征和Boost学习算法的实时人脸检测算法方面的研究。

Intel实验室的Rainer Lienhart扩展了类Haar特征,在Viola提出的类Haar 特征的基础上添加了旋转45度的类Haar特征,在与Viola系统相同检测率的情况下,降低了10%的误检率。微软研究院Stan Z.Li的研究小组把floating搜索的方法引入到AdaBoost算法中来,并设计了一个金字塔式的检测器结构用于多视角的人脸检测。

4.2 弱学习与强学习

弱分类器的设计是集成机器学习的重要内容之一,与一般机器学习算法区别在于弱分类器设计无需考虑线性不可分问题,这是集成机器学习吸引大量应用研究者关注的主要原因。

弱分类器的概念来源于Valiant在1984年提出的PAC学习理论,之后Kearns和Valiantl 又提出了强PAC学习和弱PAC学习的概念。在PAC学习模型中,若存在一个多项式级

学习算法来识别一组概念,并且识别正确率很高,那么这组概念是强可学习的;而如果学习算法识别一组概念的正确率仅比随机猜测略好,那么这组概念是弱可学习的。

随机猜测一个是或否的问题,将会有50%的正确率。如果一个假设能够稍微地提高猜测正确的概率,那么这个假设就是弱学习算法,得到这个算法的过程称为弱学习。可以使用半自动化的方法为好几个任务构造弱学习算法,构造过程需要数量巨大的假设集合,这个假设集合是基于某些简单规则的组合和对样本集的性能评估而生成的。如果一个假设能够显著地提高猜测正确的概率,那么这个假设就称为强学习。

弱分类器就是根据某些单一依据来就行粗略分类的分类器,其分来的准确度要求

很低,只要达到50%以上即可。虽然弱分类器的分类效果很差,但是试想如果将很

多个这样的弱分类器按照一定的规则组合起来便可以形成一个高度准确的强分类器,这也就是级联分类器。

实际上每一个haar特征都可以对应一个弱分类器,每一个弱分类器都是根据它所对应的haar特征的参数来定义的。如果将所有的haar特征都用来对应一个弱分类器,那么其总个数将超过数十万个。要想从这样庞大数目的弱分类器中训练出最优弱分类器将是一个非常巨大的工程,其训练时间也将达到数天之长。因此,这是该进Adaboost 性能的一个关键点所在。

通常情况下,弱学习算法比强学习算法更容易获得。Keams和vallant提出了弱学习算法与强学习算法间的等价问题,即能否把弱学习算法转化为强学习算法。如果两者等价,那么在学习概念时,只需要找到一个比随机猜测略好的弱学习算法,就可以直接将其提升为强学习算法。

Keams和vallant证明:只要有足够的数据,弱学习算法就通过集成的方式生成任意高精度的假设(强学习方法)。

4.3 PAC 基本模型

4.3.1 概述

PAC(Probably Approximately Correct)模型是计算学习理论中常用的模型,是由Valiant于1984年首先提出来的,由统计模式识别、决策理沦提出了一些简单的概念并结合了计算复杂理论的方法而提出的学习模型。它是研究学习及泛化问题的一个概率框架,不仅可用于神经网络分类问题,而且可广泛用于人工智能中的学习问题。

PAC学习的实质就是在样本训练的基础上,使算法的输出以概率接近未知的目标概念。PAC学习模型是考虑样本复杂度及计算复杂度的一个基本框架,成功的学习被定义为形式化的概率理论。

4.3.2 基本概念

实例空间指学习器能见到的所有实例,用xn 指示每个大小为n 的学习问题的实例集,每个为一个实例,为实例空间。概念空间指目标慨念可以从中选取的所有概念的集合,学习器的目标就是要产生目标概念的一个假设,使其能准确地分类每个实例,对每个n ≥1,定义每个为上的一系列概念,为X 上的概念空间,也称为概念类。似设空间指算法所能输出的听有假设的集合,用表示。对每个目标概念和实例,为实例上的分类值,即当且仅当的任一似设h 指的是规则,即对给出的,算法在多项式时间内为输出一预测值。样本复杂度(sample complexity)指学习器收敛到成功假设时至少所需的训练样本数。计算复杂度(computational complexity)指学习器收敛到成功假设时所需的计算量。出错界限指在成功收敛到一个假设前,学习器对训练样本的错误分类的次数。在某一特定的假设空间中,对于给定的样本,若能找到一似设h ,使得对该概念类的任何概念都一致,且该算法的样本复杂度仍为多项式,则该算法为一致算法。

实例空间为,概念空间和假设空间均为的子集,对任意给定的准确度及任意给定的置信度,实例空间上的所有分布及目标空间中的所有目标函数,若学习器只需多项式个样本及在多项式时间内,最终将以至少的概率输出一假设,使得随机样本被错分类的概率(,)[:()()]D r error h t P x X h x t x ε=∈≠≤,则称学习器L 足PAC 学习的。它是考虑样本复杂度及计算复杂度的一个基本框架,成功的学习被定义为形式化的概率理沦,其模型如图所示。

图4-1 PAC 学习模型

从图中知PAC 模型是与分布无关的,因对学习器来说,实例上的分布是未知的。该定义不要求学习器输出零错误率的假设,而只要求其错误率被限定在某常数ε的范围内(ε可以任意小);同时也不要求学习器对所有的随机抽取样本序列都能成功,只要其失败的概率被限定在某个常数δ的范围内(δ也可取任意小)即可。这样将学习到一个可能近似正确的假设。

4.3.3 PAC 模型的不足

在实际的机器学习中,PAC 模型的不足有:模型中强调最坏情况,它用最坏情况模型来测量学习算法的计算复杂度及对概念空间中的每个目标概念和实例空间上的每个分布,用最坏情况下所需要的随机样本数作为其样本复杂度的定义,使得它在实际中不可用;定义中的目标概念和无噪声的训练数据在实际中是不现实的。

样本复杂度的最坏情况定义意味着即使能准确地计算出某一算法的样本复杂度,仍然得过高估计假设的出错率,这是因为它不是计算某一算法的样本复杂度(即使存在一个简单的一致算法),而是对任意一致算法都成立的一个样本复杂度的上界。这就使得基本的PAC 模型不能预测学习曲线(1earning curve )。

4.4 Boosting 方法

Boosting原意为提升、加强。现在一般指的是将弱学习算法提升为强学习算法的一类算法。Boosting 算法是在Kearns 和Valiant 证明后才真正成熟起来的。

1990 年,Schapire 最先构造出一种多项式级的算法,即最初的Boosting算法。这种算法可以将弱分类规则转化成强分类规则。一年后,Freund 提出了一种效率更高的Boosting 算法。1993 年,Drucker 和Schapire 第一次以神经网络作为弱学习器,应用Boosting 算法来解决实际的OCR 问题。

Boosting 算法在分类、建模、图像分割、数据挖掘等领域均已得到简单而有效的应用。1995 年,Freund 和Schapire 提出的Adaboost,是对Boosting 算法的一大提高。

4.5 Adaboost算法性能分析

强分类器H(x)对训练样本集的误判率称为训练误判率,记为,则有:

其中,

对于AdaBoost算法,Freund和Schapire给出了关于训练误判率的重要理论结果。定理:假设运行Adaboost算法经过T轮训练后生成的弱分类器分别,……,其对样本集误判率分别,则训练误判率有上界:。详细的证明过程可参见文献。在定理中,如果每个,令则最终强分类器的训练误判率上界可改写为:

由此可见,训练误判率:随训练轮数T的增大呈指数级的减小。特别的,如果所有的弱分类器误判率都相等,即,上式可简化为:

可见,强分类器误判率随着弱分类器数量增多和弱分类器误判率的降低而迅速下降。只要有足够多的弱分类器,就可以使强分类器达到任意低的误判率。对于两分类问题,只需要弱学习算法的准确性略好于随机猜测,便可以保证Adaboost算法收敛。

第5章矩形特征与积分图

5.1 引言

本章节将描述对AdaBoost 人脸检测训练算法速度很重要的两方面,特征的选取

和特征值的计算。

把矩形作为人脸检测的特征向量,称为矩形特征。本算法选取了最简单的5个矩

形特征模板进行训练,以得到一套用于人脸检测的最适合的矩形特征,事实证明,这

种特征选取方法的训练速度虽然不快,但是检测效率很高。

Viola 提出将积分图(integral image)应用到特征值的计算之中。积分图的引用,

可以只对图像进行一次遍历计算,就能够在用常量时间完成每个特征值的计算,这使得训练和检测的速度大大提升。

5.2 矩形特征

5.2.1 概述

将矩形特征作为对输入图像的人脸检测的特征向量,称为矩形特征。在给定有限的数据情况下,基于特征的检测能够编码特定区域的状态,而且基于特征的系统比基于象素的系统要快得多。

矩形特征对一些简单的图形结构,比如边缘、线段,比较敏感,但是其只能描述特定走向(水平、垂直、对角)的结构,因此比较粗略。如下图5-1,脸部一些特征能够由矩形特征简单地描绘,例如,通常,眼睛要比脸颊颜色更深;鼻梁两侧要比鼻梁颜色要深;嘴巴要比周围颜色更深。

对于一个24×24 检测器,其内的矩形特征数量超过个,必须通过特定算法甄选合适的矩形特征,并将其组合成强分类器才能检测人脸。

图5-1 矩形特征在人脸上的特征匹配

(上行是24×24 子窗口内选出的矩形特征,

下行是子窗口检测到的与矩形特征的匹配)

5.2.2 特征模板

我们将使用简单矩形组合作为我们的特征模板。这类特征模板都是由两个或多个全等的矩形相邻组合而成,特征模板内有白色和黑色两种矩形(定义左上角的为白色,然后依次交错),并将此特征模板的特征值定义为白色矩形像素和减去黑色矩形像素和。本算法选取了最简单的5个矩形特征模板进行训练,以得到一套用于人脸检测的最合适的矩形特征,事实证明,这种特征选取方法的训练速度虽然不快,但是检测效率很高。

通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。为了描述的方便,本文将图5-1的特征模板称为“特征原型”;特征原型在图像子窗口中扩展(平移伸缩)得到的矩形特征数值(feature value)称为“特征值”。

最简单的5个矩形特征模板:

(a) (b) (c) (d)

(e)

图5-2 人脸检测使用的矩形特征值

矩形特征值是指图像中两个或多个形状大小相同的矩形内所有像素的灰度值之和的差值。对于图5-2中的a、b和e这类特征,特征数值计算公式为:

(5.1)而对于c、d来说,计算公式如下:

(5.2)

公式(5.2)将黑色区域像素和乘以2,是为了使两种矩形区域中的像素数目一致。

假设训练或者检测窗口的大小为个像素,w, 1;

else

return 0;

5.4 Haar特征值计算

Haar 型特征是Viola 等提出的一种简单矩形特征,因类似于Haar 小波而得名。如图 2 所示,Haar 型特征的定义是黑色矩形和白色矩形在图像子窗口中对应的区域

相关文档
相关文档 最新文档