1、本科毕业论文(科研训练、毕业设计)题 目:实时人脸检测系统的设计与实现姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级:学 号: 指导教师: 职称: 年 月摘 要人脸检测问题最初作为自动人脸识别系统的定位环节被提出,伴随着人工智能技术的不断进步,近年来由于其在安全访问控制、视觉监测、基于内容的检索和新一代人机界面等领域的应用价值,开始作为一个独立的课题受到研究者的普遍重视。随着社会的发展,各个方面对快速有效的自动身份验证的要求日益迫切。由于生物特征是人的内在属性,具有很强的自身稳定性和个体差异性,因此是身份验证的最理想依据。这其中,利用人脸特征进行身份验证又是最自然直接的手段,相比其
2、它人体生物特征它具有直接、友好、方便的特点,易于为用户所接受。人脸检测是人类视觉最杰出的能力之一,它的研究涉及模式识别、图像处理、生理学、心理学、认知科学,与基于其它生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系。本文详细介绍并设计了一个具有实时性的多功能人脸检测系统,可实现图片,视频文件以及实时视频流中的人脸位置检测确定。经实验检定本实时人脸检测系统识别率达到90%以上。关键词:人脸检测;AdaBoost;计算机视觉技术;分类器1Design and Implementation of Real-TimeFace Detection SystemAbstractFace Det
3、ection is considered out as a part of Face Recognition System at the beginning. In recent years, for the value of Face Detection in Safe Access Control, Visual Monitoring, Content-based Retrieval and the new generation of human-computer interface, it has aroused a widespread attention as an independ
4、ent research subject. With the development of society, the requirements of Face Detection are demanding fast. Biological characteristic is an inherent attribute of human beings, which has a strong stability and its own individual features. Therefore, biological characteristic could be a good certifi
5、cation of authentication. And Face Detection is the most effective method of all those characteristics, and it is more friendly and convenient.Face Detection is one of the most outstanding capacities of the human natural vision, it has a close tie to both biological characteristic and Computer Opera
6、tor Perception. This thesis designs and implement a real-time face detection system, which can detect faces from images, video or camera shots. And the correct recognition rate can be stay above 90 percent.Keywords: Face Detection; AdaBoost; Computer Vision; Classifier目录1目 录第一章 绪 论 11.1 项目背景 11.2 项目
7、研究现状 21.3 本项目主要内容 61.4 本文结构 6第二章 实时人脸检测系统的框架设计 82.1 人脸检测技术 82.2 通用的人脸检测系统 92.3 实时人脸检测系统框架设计 122.4 实时人脸检测系统模块功能 132.5 小结 16第三章 实时人脸检测系统的实现 173.1 实现的环境和语言 173.2 开发流程 173.3 实时人脸检测系统的系统展示与评估 283.4 小结 37第四章 总结与展望 384.1 工作总结 384.2 工作展望 38致 谢 40参考文献 41ContentsContentsCHPTER 1 INTRODUCTION .11.1 Project Bac
8、kground 11.2 Principles Of Project.21.3 Main Task .61.4 Thesis Prganization.6CHAPTER 2 OVERALL DESIGN OF FACE DETECTION SYSTEM .82.1 Face Detection Technology 82.2 Current Face Detection System 92.3 System Framework .122.4 Module Functions .132.5 Summary.16CHAPTER 3 IMPLEMENTATION OF FACE DETECTION
9、SYSTEM .173.1 Environment and Development Language .173.2 Development Process173.3 System Display And Evaluation.283.4 Summary.37CHAPTER 4 CONCLUSIONS AND FUTURE WORK384.1 Conclusions.384.2 Future Work38ACKNOLEDGEMENTS.40REFERENCE .41第一章 绪 论1第一章 绪 论本章节介绍了本文的项目背景,研究现状以及本项目主要内容。作为全文的开始,本章节还总结了全文的章节组织架
10、构,给出了全文的脉络,方便读者进行更加深入地阅读。1.1 项目背景随着社会的发展,诸如视觉监控、远程教育、人机交互技术及安全等各方面都迫切希望能够进行快速、有效的身份验证。生物特征因为自身的稳定性和差异性,已经成为身份验证的主要手段。人脸是一种极为复杂的、多维的模式,也是一种典型的非刚性模式。人的面部特征十分丰富,除了形状、表情之外,还有五官的特征及分布。通过对这些特征的研究,可以理解人的情绪等状况。与其他利用视网膜识别(无法确保对人体的安全性)及指纹识别(涉及个人隐私)等人体生物特征进行身份验证相比,人脸识别的应用具有直观、友好及方便等特点,正越来越受到国际学术界、企业界、政府及国防军事部门
11、的高度关注,具有广泛的应用前景。人脸识别是人类视觉最杰出的能力之一,它的研究涉及模式识别、图像处理、生理学、 心理学、认知科学,与基于其它生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系 3,因此早在六七十年代即引起了研究者的强烈兴趣。进入九十年代,由于各方面对人脸识别系统的迫切需求,人脸识别的研究重新变得非常热门。目前美国等国有许多研究组在从事人脸识别的研究,这些研究受到军方、警方及大公司的高度重视和资助,美国军方每年还专门组织人脸识别比赛以促进这一领域的发展 1。在国内,也开始有一些学校从事人脸识别相关的研究。该技术研究最早可追溯到 19 世纪法国人 Galton 的工作 2。
12、现代研究始于 20 世纪 60 年代末 70 年代初,并随着科学技术而发展。自 90 年代以来一直是研究热点,各种算法层出不穷,相关杂志上发表的论文数以千计。国内实时人脸检测系统的设计与实现2在这方面的研究起步于 20 世纪 80 年代,受到了国家 863 计划的大力扶持,发展很快。2000 年以来,每年一届的“中国生物识别学术会议”极大地推动了包括人脸识别在内的生物识别技术水平的发展。现在,国内也建成世界上较全面、规模最大的东方人脸图像数据库 3。人脸检测与识别可分为人脸检测、人脸特征提取和人脸识别 3 个阶段 8,即对集中的图像逐幅进行检测,判断其中是否存在人脸,如果人脸存在,则对其进行精
13、确定位,并进行人脸识别,通过特征提取,获得人脸信息,进行身份验证。1.2 项目研究现状目前,国外对人脸检测问题的研究很多,比较著名的有 MIT,CMU 等;国内的清华大学的卢春雨 4-8、北京工业大学的汪孔桥 9,10、中科院计算所的刘明宝 11和自动化所的谭铁牛博士 12等都在从事人脸检测相关的研究。而且,MPEG7 标准组织已经建立了人脸识别草案小组,人脸检测算法也是一项征集的内容。随着人脸检测研究的深入,国际上发表的有关论文数量也大幅度增长,如 IEEE 的 FG(IEEE International Conference on Automatic Face and Gesture Re
14、cognition)、ICIP(International Conference on Image Processing)、CVPR(Conference on Computer Vision and Pattern Recognition)等重要国际会议上每年都有大量关于人脸检测的论文,关于人脸研究论文多达 1/3。人脸检测是一个开放性的,比较活跃的研究课题。现有的人脸检测算法大致可以分为四大类 13:基于知识法、自下而上特征法、模版匹配方法、基于外观的方法。1.2.1 基于知识的人脸检测技术基于知识的技术是将人面颊器官之间的关系编码准则化的人脸检测技术,该技术是自顶向下,依据人脸面部器官的
15、对称性、灰度差异等先验知识,制定出一系列的准则。当图像中的待测区有符合准则的,则被检测为人脸。1994 年 Yang 等提出基于知识的人脸检测技术 14,该技术的主要内容包括:4x4 镶嵌图将人脸分块,并根据每块的灰度值制定准则来进行判定。他们将系第一章 绪 论3统分为三级,利用不同精度的平均和二次采样产生三级不同分辨率的图像。针对不同分辨率的图像采用不同的准则进行判定。如果在低分辨率图像中,准备主要体现人脸的大体轮廓。如果在高分辨率图像中,准备主要体现人脸的细节特征。随后,卢春雨等对镶嵌图技术进行了改进,按照人脸器官的自然分布将人脸划分 3x3 个马赛克块,在检测中适当调整各个块的大小,使用
16、一组基于各块灰度和梯度统计特征的知识准则检验待测区域是否有人脸。姜军等依据人脸的生理结构特征 15,在卢春雨等的 3x3 三分图的基础上 16,提出一种新的广义几何投影法,建立了一个比较完备的人脸知识库,综合使用灰度规则、梯度规则和二值规则,从而拓宽了检测算法的使用范围,适合于复杂背景下的多人、不同尺寸、人脸基本为正面、表情变化不是很大的人脸的检测。这个方法检测速度比较快,应用比较简单,适合于用硬件实现。1.2.2 基于特征的人脸检测技术基于特征的方法不仅可以从已有的面部特征而且可以从他们的几何关系进行人脸检测。它与基于知识的方法相反,先利用各种手段寻找人脸的不变特征,然后综合找到的不变特征来
17、确定待测区域是否是人脸。面部不变特征,如:眉毛、眼睛、鼻子、嘴和发际。一般利用边缘检测器提取,根据提取的特征,建立统计模型来描述特征之间的关系,并确定存在的人脸。Sirohey 提出了从复杂的背景中分割人脸进行人脸识别的定位方法 17。它使用边缘图和启发式算法来去除和组织边缘,而只保存一个边缘轮廓,然后用一个椭圆区分头部区域和背景间的边界。Graf 等人提出定位灰度图像的面部特征和人脸的检测方法 18。在滤波以后,用形态学的方法增强具有高亮度、含有某些形状(如眼镜)的区域。Leung 等人提出一种基于局部特征检测器和任意图匹配的概率方法 19,在复杂场景中定位人脸。其目标是找到确定的面部特征的
18、排列。典型的人脸用五个特征(两只眼睛、两个鼻孔和鼻子与嘴唇的连接处)来描述。Yow 和 Cipolla 提出了一种基于特征的方法 20。在第一阶段,应用了二阶微分高斯滤波器,在滤波器响应的局部最大点检测感兴趣的点,指出人脸特征可能的位置;第二阶段,检查感兴趣点周围的边缘并将它们组成区域。这种方法的优点是可以在不同的方向和位姿上检测人脸。肤色也是人脸的重要信息,它不随面部的细节和旋转、表情等变化而变化,实时人脸检测系统的设计与实现4具有相对稳定性和大多数背景物体的颜色相区别。因此有许多学者就基于肤色特征来进行人脸的检测。基于肤色特征的人脸检测算法,通常首先对输入的RGB 图像进行三基色调整后转换
19、为 YcrCb 色彩空间图像,将 YcrCb 图像分割成肤色区域和非肤色区域,然后再对检测到的肤色区域进行形态学运算,最后对肤色区域运用几何特征进行处理,得到完整的人脸区域。1.2.3 基于模版匹配的人脸检测技术基于模版的方法可以分为两类:预定模版和变形模版。预定模版方法首先制定出标准的模版,然后计算检测区域和模版的相关值,当相关值符合制定的准则就判断检测区域为人脸。变形模版首先制定出模版参数,然后根据检测区域的数据对参数进行修改直至收敛,以达到检测出人脸面部器官位置的目的。Sakai 等人使用眼睛、鼻子、嘴和人脸轮廓等子模版建模,检测照片中的正面人脸 21。每一个子模版按照分割定义。基于最大
20、梯度变化提取输入图像的线,然后于子模版匹配。计算子图像和轮廓模版之间的相互关系去检测人脸的候选区域,完成用其他子模版在候选区域的匹配。Craw 等人提出了一种基于正面人脸的形状模版(也就是人脸的外形)定位方法。用 Sobel 滤波器提取边缘,将边缘组织在一起,根据几个约束条件去搜索人脸模版。在头轮廓定为以后,用相同的过程以不同的尺度重复定位眼睛、眼眉和嘴唇等特征。Govindaraju 等人提出两个阶段的人脸检测方法 22。人脸模型根据边缘定义的特征构成,这些特征描述了正面人脸的左边、发际和右边的曲线。人脸必须是垂直、无遮挡和正面的。Cootes 等提出的主动形状模型(Active Shape
21、 Models, ASM)和主动表观模型(Active Appearance Models, AAM) 23是变形模版中经典的两种方法,现在很多学者仍以此为基础,进行更加深入的挖掘和研究。上述两种方法均是基于关键点分布模型(PDM)的,将人脸的几个关键部位(如眉毛、眼睛、鼻子、嘴巴和脸颊)用一系列的坐标点来表示从而组成以坐标向量为集合的训练集。对 ASM 而言,将训练集中的向量对齐后,然后进行 PCA 分析建模,得到相应的主成分模型参数,因而得到了物体形状的简化表示。在搜索新给图像中的未知图形时,先获得每个关键点将对应的更加位置,然后再进行相似变换等操作,最后得到未知图形中与训练集中相似形状的
22、关键点的位置。而对 AAM第一章 绪 论5而言,则采用了形状和纹理二者融合的统计约束,借鉴合成分析技术(ABS)的思想,通过模型参数的优化调整使得模型能够不断逼近所要求的输入模式。以上两种方法多用于人脸检测中的人脸配准(Face Alignment)和面部器官的精确定位。1.2.4 基于统计模型的人脸检测技术基于统计理论的人脸检测是利用统计分析与机器学习的方法来寻找出人脸样本与非人脸样本各自的统计特征,再使用各自的特征构建分类器,使用分类器完成人脸检测。基于统计特征的人脸方法主要有:子空间方法,神经网络方法,支持向量机方法,隐马可夫模型方法以及 Boosting 方法 24。本设计将采用Boo
23、sting 方法中的 AdaBoost 算法作为主要的人脸检测算法。子空间方法主要包括两类:主成分分析(PCA)方法、线性判别分析(LDA )方法 25。主成分分析(PCA )方法是 KL(Karhunen-Loeve)变换的别称。该方法将样本图像进 KL 变换以消除原来各分量之间的相关性,取变换后所得到的最大的若干个特征向量来表示原来的图像,保留了原图像差异的最大信息,这若干个特征向量就称为主成分。神经网络方法进行人脸检测的优点是可以简便的构造出神经网络系统作为分类器,使用人脸和非脸样本对该系统进行训练,让系统自动学习两类样本复杂的类条件密度,这样就避免了人为假设类条件密度函数所带来的问题。
24、支持向量机(SVM)是由 V. N. Vapnik 在 1995 年提出的一种新的统计学习理论 26。Osuna 等实用 SVM 方法进行人脸检测 27,其利用“自举”的方法搜集大量的非人脸样本,然后使用优化逼近的方法选择出少量的支持向量为关键支持向量,这样就大大减小了运算中支持向量的数目。隐马尔科夫模型(Hidden Markov Model,HMM)是一种存在两种机理的随机过程。其一是有限状态的马尔科夫链,其二是序列的观察值。因为不能直接得到马尔科夫链的状态,而只能通过观察值来观察,因此称为隐马尔科夫链。Nefian 等将人脸从上到下划分为五个互有重叠的区域(头发、额头、眼、鼻、嘴) 28
25、。他根据这个划分构造了一个包含五个状态的一维连续 HMM 用以表示人脸,接着对各块进行 KL 变化,取每块若干最大的特征向量作为观测值对HMM 进行训练。实时人脸检测系统的设计与实现6Boosting 方法是一种可以将弱分类器组合成为强分类器的统计学习方法。其基本思想为对训练失败的训练样本赋予较大的权值,让学习算法在后续的学习中集中对比较难的训练样本进行学习,最后将由算法挑选出来的若干个弱分类器加权相加组成强分类器。P. Viola 等在 2001 年提出了一种基于 Boosting 方法的实时人脸检测系统 29。该方法基于 Haar-Like 型特征的 AdaBoost 人脸检测算法,并综合
26、 Cascade 结构实现了实时的人脸检测,该方法是人脸检测速度提高的一个转折点,使得人脸检测从真正意义上走向实用。AdaBoost 方法提供了优异的检测速度,完全符合实时系统的要求,但是 AdaBoost 方法需要大量时间进行训练,如何提高该方法的训练速度,是一个有待解决的问题。1.3 本项目主要内容现有的人脸检测算法大致可以分为四大类 30:基于知识法、自下而上特征法、模版匹配方法、基于外观的方法。本研究的主要内容是学习并研究几种典型的人脸检测算法,并选择或修改其中的优秀方法来进行系统实现。基于人脸检测的需求和目前存在的问题,本毕业设计采用理论模型研究算法研究实现系统设计实现相结合的方法,
27、在有效算法研究的基础上,设计开发出了一个桌面应用软件系统进行人脸检测处理。本项目的具体工作包括:1 调查研究当前主要的人脸检测分析算法;2 几种通用人脸检测系统的介绍,并比较这些系统的优缺点,并给出各个系统的评价;3 通过对几种人脸检测系统的分析,设计并实现一个具有实时性,准确性并能够进行多目标检测的实时人脸检测系统。1.4 本文结构本章共分为四章,主要介绍了项目的框架设计、开发过程,以及系统的结果展示。本文结构和各章的主要内容如下:第一章 绪论,主要介绍人脸检测的主要算法及理论、人脸检测的研究第一章 绪 论7现状和存在的问题。然后对本文的结构进行概述。第二章 实时人脸检测系统框架设计,主要对
28、人脸检测技术做出分析,并实现人脸检测系统框架设计,系统地介绍本人脸检测系统的框架和功能。首先介绍了系统的框架;然后针对系统各个模块进行展开;并进一步说明开发的内容和开发流程。第三章 实时人脸检测系统的实现,详细介绍工作流程中各部分任务的开发与实现。首先是界面的实现,随后,将重点放在AdaBoost 检测算法的原理与在系统中是如何实现的。最后展示和评估项目开发的成果。第四章 总结与展望,对本文和项目开发结果进行概括和总结,并提出进一步改进计划。实时人脸检测系统的设计与实现8第二章 实时人脸检测系统的框架设计系统的设计是项目开发的基础。为待开发系统设计一个优秀的系统设计框架是保证原有系统功能不受影
29、响以及扩展新的功能模块的必要条件。本章中,我将重点介绍实时人脸检测系统功能及技术框架并针对每个模块进行扩展。实时人脸检测系统能够实现对普通图片、视频,以及实时视频流中的人脸进行检测,确定其中人脸的位置并用明显标志给出具体表示。系统的框架设计的内容包含了系统功能框架和算法实现两个方面的内容。系统的开发就是基于算法,按照功能框架中的各个功能模块来进行开发。2.1 人脸检测技术直到今天,人脸检测的研究依然存在许多问题,人脸检测技术面临的挑战可以归结为以下因素 31,具体存在的因素为:1 姿势:人脸图像会因摄像机人脸的相对位置(正面,成 45 度角,侧面,上下颠倒)以及像独眼、鼻子部分或全部闭合等一些
30、人脸特性而不同;2 组成部件的有和无:像胡子、眼镜等面部特征,有些人有,有些人没有,而且它们在形状、颜色、和大小方面也有很大的差别;3 面部表情:人的面貌直接受面部表情的影响;4 遮挡:人脸可能被其他物体部分遮挡。在有一群人的图像里,有些人的脸会被其他人的脸部分遮挡;5 图像的方位:人脸图像直接受视频光轴的不同旋转角度影响;6 成像条件:当图像形成的时候,光照(光谱、光源分布、光密度) 、摄像头特性(感应器,镜头)等因素会影响人脸的外观。基于以上的挑战因素,我们可以总结出当前人脸检测存在的主要问题为以下几个方面:1 检测的准确性不佳:由于以上的各个因素,使得检测的准确度受到影响,各种算法都可能
31、出现误检测或漏检测的情况;第二章 实时人脸检测系统的框架设计92 检测的速度不佳:由于以上各因素的存在,使得人脸检测复杂化,算法的时间复杂度大大提高,使得检测效率低下,检测速度不高;3 多目标检测问题:早期的人脸检测算法只能针对单人脸进行检测,如果要进行多目标检测,势必需要将其与其它目标检测算法进行结合。基于以上的这些问题,我们势必需要一个能够准确的对图片或视频流中的多人脸目标进行检测的系统,同时该系统还应具有相应的实时性,基于这些需求,便有了本系统的开发与设计。2.2 通用的人脸检测系统目前,已有的人脸检测系统有很多,采用的技术也多种多样。其中目前比较流行的有应用于 Sony 数码相机的基于
32、 BIONZ 技术的人脸检测系统及应用于个人电脑摄像头的 Camera 301p 人脸检测系统。2.2.1 BIONZ 人脸检测系统BIONZ 人脸检测系统 32目前主要应用于 Sony 的高端数码相机之上,包括DSC-W 系列及 DSC-D 系列,该系统主要包含两个主要模块,照前检测及回放检测。所谓照前检测,就是在拍照的过程中,确定人脸的位置,然后对人脸的位置进行对焦,使得人连最为清晰,这样拍出来的照片中的人脸才能达到最好的效果。它可找到影像中人的面部,并可将以检测到的最多 8 张面孔锁定在画面中,该功能可确保高精确度对焦、曝光补偿、闪光灯控制、自动白平衡、色彩控制和红眼调节。这一技术解决了
33、在拍摄时普通用户往往由于传统自动对焦系统对焦点的选择不当,使用错误的焦点而致照片作废的窘境。照前检测流程图如图 2.1 所示: BIONZ 图 2.1 照前检测系统流程图资料来源:ImpressWatch 中文站资料技术库 32实时人脸检测系统的设计与实现10从图中我们可以清楚地看出,照前检测是一个循环的流程,它不停地持续着进行检测与采集,因此,它对实时性的要求很高,所以,势必在检测准确度上做出一些让步,比如,该系统最多只能对 8 张人脸进行检测,这就是基于实时性的考虑。而回放检测则对实时性的要求没有那么精确,回放检测的流程图如图 2.2所示: BIONZ 图 2.2 回放检测系统流程图资料来
34、源:ImpressWatch 中文站资料技术库 31回放检测的最大作用是对于视频的回放中给出关注的焦点,使得观察者不会错过所要观察的人脸目标。所以,回放检测允许出现跳帧或是轻微播放缓慢的情况,因此,回放检测的检测精确度要比照前检测来的高。2.2.2 Camera 301p 人脸检测系统Camera 301p 人脸检测系统是基于 Camera 301p 的一套实用人脸检测工具包,通常来说它包含在 Camera 301p 摄像头附带的驱动程序光盘中 33。Camera 301p包含 3 个组件,其中与人脸检测有关的组件有两个,拍拍乐与俄罗斯方块。所谓拍拍乐组件,就是在摄像头拍摄人脸时,用户选择需要
35、的背景与前景,前景会随着用户脸部的位置与大小自动改变,使得前景达到适应用户脸部运动,最终拍出饱含趣味性的照片。该拍拍乐组件的流程图如图 2.3 所示: 图 2.3 拍拍乐组件流程图资料来源: 33而俄罗斯方块组件是一个用户经脸部控制的游戏,用户通过改变人脸的位置移动来控制方块的左移、右移、旋转、加速下落等功能,流程如图 2.4 所示:第二章 实时人脸检测系统的框架设计11 图 2.4 俄罗斯方块组件流程图资料来源: 33综上所述,Camera 301p 人脸检测系统是一个以趣味性为主的人脸检测系统,偏重于娱乐性与用户体验,因此,它注重的方面不是检测的准确性与实时性,它作为一个摄像头所附带的系统
36、是完全合格的,但是,它可能无法达到具体实用应用中的一些需求与要求。2.2.3 两种通用人脸检测系统的优缺点分析以上两种通用的人脸检测系统的各个模块各有优缺点,比如 BIONZ 系统中的照前检测模块,它的检测精度不佳,但是实时性较高;而回放检测模块的检测精度较优秀,但是实时性则受到一定影响;camera 301p 的两个组件的实时性与精确度都比较一般,同时又不具备多目标检测功能。下表 2.1 给出了以上三种通用人脸检测系统的优缺点分析:表 2.1 通用人脸检测系统优缺点分析名称 检测精度 实时性 多目标检测照前检测模块 一般 优秀 最多八个目标回放检测模块 优秀 一般 无限制拍拍乐组件 一般 一
37、般 无俄罗斯方块组件 一般 一般 无通过以上分析我们可以看出,这几个系统与模块各有相应的优缺点,但是,我们需要的是一个实时的,同时又有相当精度,又具有无限制的多目标检测功能的人脸检测系统,因此,便有了本实时人脸检测系统的设计与实现。实时人脸检测系统的设计与实现122.3 实时人脸检测系统框架设计本系统通过 AdaBoost 算法对图片,视频文件及实时视频流中的人脸进行检测,并实时地给出检测结果。主要功能包括:1. 打开图片文件及视频文件;2. 捕捉摄像头或其他实时视频流设备;3. 进行单图片或连续视频中的人脸检测;4. 给出检测结果;5. 对检测结果进行保存。对于功能结构,我们给出一个包含各个
38、功能结构及各个模块间关系的介绍,如图 2.5 所示: 图 2.5 实时人脸检测系统功能结构图如图 2.5 所示,文件处理模块包括打开图片文件、视频文件,以及保存结果为图片等功能;视频处理模块,可以对视频进行处理,将视频按帧输入检测模块中进行检测,并进行异步处理;用户图形界面模块可以友好地让用户使用本系统;检测模块为本系统的核心,该模块包含了数字图像预处理,调用算法进行检测这两个主要功能;结果处理模块,可以实现对检测出包含人脸的位置进行明确的标记,同时,如果使用者发出保存处理结果的信号,将由本模块调用文件处理模块进行保存。而本系统的系统流程为多入口单出口的模式,入口包括打开文件及打开摄像头等,而
39、出口为输出结果,本系统详细流程图如图 2.6 所示:第二章 实时人脸检测系统的框架设计13 图 2.6 实时人脸检测系统系统流程图如图 2.6 所示,本系统流程经过打开文件,首先判断其是否为图片文件,如为图片文件,则进行图片预处理后进行图片中的人脸检测;如打开不为图片,则判断是否为视频,如也不为视频,则返回系统初始状态,如为视频,打开视频后进行视频预处理,处理后将视频按帧进行图片预处理后进行人脸检测;对于摄像头的操作是相对独立的,将摄像头输入的视频直接传入视频预处理中,后按视频检测的步骤进行。2.4 实时人脸检测系统模块功能本系统的功能模块可划分为文件处理模块、视频处理模块、图片预处理模块、人
40、脸检测模块四个部分,每个模块的功能与相应算法如下所示:1. 文件处理模块是系统底层的 I/O 模块,他管理了整个系统的文件入口与出口,该系统可分为两个子系统。首先为图片文件处理系统,该子系统能够实现根据图片的扩展名来智能判断读取图片的模块,并调用相应的模块来将图片读入内存。其次为视频处理子系统,该系统调用了一个解码器钩子(Decoder Hook),根据视频所采用的编码格式来调用系统中已注册的解码器,同时对于视频的处理来说,并不能将整段视频直接读入内存,因为内存空间是有限的,该系统能只将播放的内实时人脸检测系统的设计与实现14容调入内存,并及时抛弃过时的内容。2. 视频处理模块为将视频分段并将
41、每帧单独处理的模块。视频并不能直接作为人脸检测的对象,因为所有的人脸检测算法都是针对单图片来进行检测的,因此,必须要对文件处理模块读入的视频进行处理,将视频按帧传入人脸检测模块中,同时对摄像头读入的视频进行实时性处理,对过时的帧及时抛弃,只将实时帧传入检测模块中。对于整个视频,我们首先应用 HSV 模型 24生成视频的检索量,生成检索量的主要步骤如下:设特征检索量由 m 类特征构成,记为F11, F12, , F1n ,F21, F22, , F2n ,Fm1, Fm2, , Fmn 。对每一类特征 Fi, 求质心量 24:(2.1)21,nijii m然后生成算法的索引数据结构,将视频的整体
42、分解为若干子区域,定义每个子域中允许的最小模式数,若某子域元素数低于此值,合并相邻子域。算法实质上相当于把视频整体在其索引子域的每个分量进行过滤,除去一些与其索引不在同一子域的模式,最终形成一个候选集,这样可以有效的降低分解视频时所使用的计算量,并较轻松地执行插入、分裂、删除等视频常用操作。3. 图片预处理模块是对图片进行预处理的模块。图片并不能直接进行检测,需要进行图片预处理。研究发现,虽然不同种族的肤色差异较大,但在色彩空间中的分布相对集中,因此可以充分利用皮肤的色彩特点进行脸部肤色和五官的分割。这种肤色分布服从高斯分布 N(m,C),其中:均值(Mean):m=Ex, x=(r , b)
43、T,协方差(Covariance): C=E(x-m)(x-m)T。又高斯分布可以得到图像中任意像素的值为肤色的概率Likelihood,如下所示 25:第二章 实时人脸检测系统的框架设计15(2.2)1(,)exp0.5()()rrLikehodPbmCxx其 中根据如上可将原彩色图转化为灰度图,灰度图中的象素值表示该像素为肤色的概率,灰度途中肤色区域和非肤色区域存在着明显的差异,肤色区域要亮一些。肤色区域和非肤色区域存在着明显的差异,因此可以用阀值法去除非肤色区域。由于固定阀值法不适用于色彩差异较大的各种人脸图像,因此采用自适应阀值选取法来获取最优阀值。通过下列高斯不等式 25:(2.3)
44、0.5*(2)arcos( ),0.2)(RGB 即可完成灰度直方图处理完成图片预处理。4. 人脸检测模块包含有两个子模块,数字图像预处理模块与 AdaBoost级联检测器模块。数字图像预处理模块是对传入的图像进行数字图像预处理,进行的预处理包括,图像灰度级化,直方图均衡化,图像二值化等。AdaBoost 级联检测器模块 34是调用 AdaBoost 进行图像中人脸检测的模块。AdaBoost 算法的基本思想是将单个目标特征作为弱学习算法,给定一个训练集(x 1,y1),.,(xL,yL),其中 xi是输入的训练样本,y i是分类的类别标志,由于人脸检测的任务是判断某幅图像是否使人脸图像,因而
45、可以视为两类区分问题,故可以取 分别(1,0)iy表示真假样本,在初始化时,对所有训练样本均赋以较大的权重,然后用该弱学习算法对训练样本进行 T 轮训练,在每一轮训练结束后,从若干个简单分类器中选择最小误差的那个,作为一个弱分类器 hi,并对训练失败的样本赋以较大的权重,以便让学习算法在后来的学习中主要对比较难的训练样本进行学习。这样,就可以得到一个弱分类器序列(h 1,h2,.,hi),其中,分类效果比较好的权重较大。最终的分类函数 采用一种有权重的投标方式产生,即将多个弱分类器fx通过一定的方法叠加(boost)起来组合成一个强分类器 27,即(2.4)1Tifxahx实时人脸检测系统的设
46、计与实现16该算法通过结合多个特征构造的精确分类器,共同完成目标的检测任务,大大提高了检测的稳定性和精度。具体算法如下:(1) 对于训练集合 代表第 i 个训练图像的第 j1(,).(,)(Ljixygx个 Haar-Like 特征 分别表示真假样本;0i(2) 初始化权重 ,其中 分别是真样本、假样本的数1,/2iwmn,目,总样本数 ;L(3) 寻找 T 个弱分类器 ;(,.)thT1)对所有样本的权重进行归一化: ,1/Ltitiijfw2)对于每个样本中第 j 个 Haar-Like 特征,可以得到一个简单分类 器 hj,也就是确定阀值 和偏置 ,使得误差jjp达到最小 27,而,1|
47、()|Ljijiiwxy(2.5)()0jhx,jjpg其 他偏置 决定不等式方向,只有 两种情况。j 13)在确定的简单分类器中,找出一个具有最小误差 的弱分类器 。iih4)对于所有样本的权重进行更新: ,其中11,ititiw,如果 被 正确分类,则 ,反之 。ln(1/)ttaixih0ie1ie(4) 最后得到的强分类器 27为(2.6)()0Hx11()0.5TTt taa其 他得到强分类器后,便可以通过该分类器对处理过的图片进行检测了。2.5 小结本章给出了两种通用的人脸检测系统,并对他们的优缺点进行了分析,然第二章 实时人脸检测系统的框架设计17后给出实时人脸检测系统的系统框架
48、设计及主要模块功能。框架设计包括了功能设计及系统流程设计。模块设计包括了介绍了各个模块及各个模块的主要算法。实时人脸检测系统的设计与实现18第三章 实时人脸检测系统的实现本章将介绍本实时人脸检测系统的开发,包括分类器训练、算法实现、界面开发三个部分。其中算法实现为开发的主要内容。作者通过 MFC 框架来实现界面设计用 Visual C+代码编写;由后台的数据解析和算法实现支持来界面提供的所有功能。以下将对开发过程中的各个任务内容进行更为详细的介绍,并将对部分系统功能进行展示。3.1 实现的环境和语言整个实时系统的开发建立在以下硬件及软件的基础上,本系统是在 MS Windows 下开发,利用 Microsoft Visual C+等强大工具,最大程度地增加了代码自动化编写