基于 OpenCV 人脸识别的分析与实现
摘
要
人脸识别作为一项安全性很高的非接触性生物识别技术,近些年来已经成为多个相
关领域的研究热点,并在刑侦破案、公共安全以及人机交互等许多领域有着广泛的应用。
因此,对人脸识别的研究具有十分重要的理论意义及应用价值。
OpenCV 作为一个开源计算机视觉库,具有很好的移植性,其中包含了很多通用的
图像处理算法,且代码都经过优化,可用于科研也可用于商业用途。
本文首先介绍了人脸识别技术的研究背景、国内外研究现状和应用场景;研究了
Viola&Jones 人脸检测算法的基本原理,并对其中涉及的 Haar-like 特征、积分图方法、
AdaBoost 分类器和级联的思想进行了阐述;研究了基于 PCA 实现的特征脸算法、基于
LDA 实现的 Fisherfaces 算法和局部二值模式直方图(LBPH)算法三种人脸识别算法的
基本原理及思想;最后,通过上述理论学习,基于 OpenCV,在 Visual Studio 2012 开发
环境下,利用 ORL 人脸数据库,分别对上述算法进行了算法实现和实验验证,并且在
最后创建了一个基于特征脸的实时人脸识别系统,该系统可以实现人脸的检测、预处理、
收集、训练和识别。
关键词:人脸识别,OpenCV,人脸检测,特征脸
目
录
1 绪
论.....................................................................................................................1
1.1 研究背景和研究意义........................................................................................... 1
1.2 国内外研究现状................................................................................................... 1
1.3 课题研究内容....................................................................................................... 3
1.4 论文组织结构....................................................................................................... 3
2 人脸检测算法分析.....................................................................................................3
2.1 HAAR-LIKE 特征.................................................................................................... 4
2.2 积分图................................................................................................................... 5
2.3 ADABOOST 算法....................................................................................................7
2.4 级联分类器........................................................................................................... 8
3 人脸识别算法分析...................................................................................................10
3.1 特征脸算法......................................................................................................... 10
3.1.1 算法原理.......................................................................................................10
3.1.2 算法描述.......................................................................................................11
3.2 FISHERFACES 算法.............................................................................................. 12
3.2.1 算法原理.......................................................................................................12
3.2.2 算法描述.......................................................................................................13
3.3 局部二值模式直方图算法................................................................................. 13
3.3.1 LBP 算子...................................................................................................... 14
3.3.2 LBPH 算法原理........................................................................................... 14
4 人脸检测和人脸识别算法实现...............................................................................18
4.1 人脸检测算法实现............................................................................................. 18
4.2 人脸识别算法实现............................................................................................. 19
4.2.1 数据预处理...................................................................................................19
4.2.2 Eigenfaces 算法............................................................................................19
4.2.3 Fisherfaces 算法........................................................................................... 21
4.2.4 LBPH 算法................................................................................................... 22
5 基于特征脸的人脸识别实现...................................................................................25
5.1 开发及测试环境................................................................................................. 25
5.2 人脸检测............................................................................................................. 26
5.3 人脸预处理......................................................................................................... 26
5.4 人脸的收集和训练............................................................................................. 28
5.5 人脸识别............................................................................................................. 29
5.6 交互式 GUI......................................................................................................... 29
5.7 本章小结............................................................................................................. 29
论.........................................................................................................................32
谢........................................................................................ 错误!未定义书签。
参考文献.........................................................................................................................33
录........................................................................................ 错误!未定义书签。
结
致
附
1 绪
论
1.1 研究背景和研究意义
人脸识别覆盖了计算机视觉、模式识别、数字图像处理等诸多学科的内容,进一步
研究人脸识别技术和算法,理论上来说,对上面提到过的学科的深研和未来规划有重要
参考价值。且人脸识别因可视化和非接触性,以及符合人类思维习惯的特点,使之在多
种多样样的辨别方法中脱颖而出,得到最为广泛的应用。
视频和图像中人脸的检测和识别,这些图像处理技术和应用在当今的科技发展中的
作用变得越来越重要。例如,在公共交通和公安系统应用中,为实现对可疑人物、犯罪
嫌疑人之类的目标人物及其活动轨迹的识别,大量的监控摄像头都已被部署在人群密度
高的区域、城市的道路上,然而,目前主要还是通过人眼对视频进行人工分析,即办案
人员用眼睛盯着视频、逐帧查看、反复比对,这一过程通常极为耗时,因此,实现此过
程的全自动识别分析在公安和交通等应用中具有极其强烈的现实需求。然而,要想实现
对这些视频的全自动、智能分析,就需要准确地对人脸进行检测和识别。因此,人脸识
别是当今智能识别的商业应用中迫切需要解决的现实问题。
从业界的观点来看,人脸识别技术有着广阔的应用市场和前景。随着不断深入的对
人脸识别算法和技术的研究,人脸识别在公共安全、互联网交互、道路交通、机器人智
能研究和娱乐等诸多领域展现了巨大应用价值。需要说明的是,尽管现有的一些算法在
LFW 等公开数据集上取得了很高的准确度,但人脸的检测和识别仍然是一个尚未很好
解决的实际问题。由于表情多变、年龄增长、光线变化、姿态变换、不同图像分辨率等
各种因素,现有的人脸检测和人脸识别相关技术仍有很大的发展空间。
1.2 国内外研究现状
国内外在人脸识别这一研究领域都表现得非常积极,有对此进行专门研究的研究机
构和研究人员的国家遍及世界各地。国外方面,美国作为人脸识别技术最早起步和应用
的国家,他们的人脸识别技术一直引领着世界向前探索。上世纪 90 年代,他们就启动
了人脸识别工程,这意味着人脸识别技术开始发展。2014 年, FBI 推出的新一代的电
子识别系统能够利用监控锁定并且对危险人物进行全网追捕。在人脸识别领域表现出极
快发展速度的邻国日本主要进行的是研究智能视频分析技术。2015 年,日立公司推出了
视频监控人脸识别技术,该项技术能够做到快速且精确识别路人并且将相貌相似的人脸
进行分类;为在举办东京奥运会期间提高各国友人入境审查的效率,日本重要机场通道
采用了职能身份识别系统,其主要应用的原理就是人脸识别。
在国内,我国虽然接触该技术较晚,但是越来越多的高校及研究机构正在参与这方
面的研究,在各高校以及科研机构的学者和科研人员们长时间的钻研实践下,目前,我
国的人脸识别在国际上属于技术先进的国家之列。从 2001 年开始,在国家的支持下,
人脸识别已经开始运用在防范打击重大刑事犯罪领域,随后,2008 年北京奥运会举行时
期,人脸识别在国内开始进入大规模使用阶段,2010 的上海世博会上,人脸识别得到了
更为广泛的应用,随着技术的不断进步,我国的人脸识别正在朝着主流化、芯片化、标
准化方向发展,并且人脸识别正在与其他生物特征识别和 REID 融合。[1]
现今,人脸识别已实现大规模应用,比如曾经在国内大热的微软小冰(how-old.net),
它通过分析用户提供的图片给出图片内检测到的人脸的年龄和性别;Face++可以分析出
人脸图像中给出的种族和情感信息,为美颜相机和美图秀秀更加准确定位需要美化的区
域,达到自动美颜的效果;小米手机自带可以在拍摄时自动识别年龄和性别的摄像功能;
广泛应用于各公司或单位的刷脸考勤机,可以快速准确的识别员工、记录出勤信息,更
加便捷、防止代签到,其工作流程为:首先将公司或单位内部员工的人脸信息录入系统,
然后将嵌入人脸检测技术的摄像头连接到系统,员工面对考勤机,摄像头自动捕捉人脸
区域,并将获得的人脸区域与员工信息数据库进行比对,识别出该员工姓名,记录到达
时间;为保障城市安全、协助公安破案,在机场、车站、海关安装的用来追踪犯罪分子
监控识别系统;火车站、机场等人证票务核验系统开启了刷脸验票模式,将现场照与身
份证照做比对,做到人、证、票三合一;阿里巴巴旗下支付宝的刷脸登录等等。
人脸识别现今已经广泛应用在公共安全、互联网交互、道路交通、智能机器人、单
位考勤以及娱乐等领域,而且还在各国科技研究人员的努力工作下不断成熟和发展。特
别是,近年来随着深度学习在模式识别等相关领域中的广泛应用,研究基于深度学习的
人脸识别技术将是未来一段时间内较为热门的研究方向。随着人脸检测和识别准确率的
提高和人脸数据库的增大,以及从人脸中获取更多的信息,表现为不再局限于性别、年
龄和表情,甚至能够获得姓名、职业等基本信息。未来,人脸识别应用会逐渐深入到交
通、网络、安全、经济等各个领域,广泛地应用在各行各业中,会成为人们生活息息相
关的一部分。
1.3 课题研究内容
本课题的主要工作是对人脸检测和人脸识别算法的分析与实现。首先从人脸识别的
研究背景出发,介绍了国内外人脸识别的发展现状和应用。其次通过文献检索,阅读大
量的相关文献,研究 Viola&Jones 人脸检测算法、特征脸算法、Fisherfaces 算法、LBPH
算法的算法原理和思想。最后选择基于 OpenCV 进行算法实现,通过 ORL 人脸数据库
提供的人脸图像数据对人脸检测和人脸识别算法的性能进行了实验验证,并且基于特征
脸算法创建了一个人脸识别系统,该系统可以实现对人脸的实时检测和识别。
1.4 论文组织结构
论文组织结构如下:
第一章:绪论。阐述人脸识别研究背景及意义、国内外研究现状,介绍本文的课题
研究内容,厘清论文组织结构。
第二章:人脸检测算法的分析。对人脸检测中的经典算法 Viola & Jones 人脸检测算
法进行算法原理的阐述。
第三章:人脸识别算法的分析。对人脸识别中的特征脸算法、Fisherfaces 算法和
LBPH 算法进行算法原理的阐述。
第四章:人脸检测和人脸识别算法实现。在 OpenCV 平台上实现对人脸数据库中
图像的人脸检测,并且通过对 ORL 人脸数据库的数据预处理,分别对三种人脸识别算
法进行识别的验证实验。
第五章:基于特征脸的人脸识别实现,介绍了基于特征脸的实时人脸检测识别系统
的人脸检测、人脸预处理、人脸的收集和学习、人脸识别的实现过程。
在结论里,简要的概括了本文的基本内容,并且进行了总结思考。最后介绍的是致
谢、参考文献、附录。
2 人脸检测算法分析
人脸检测和人脸识别是两个很容易混淆的概念。简单来说,人脸检测是根据肤色等
特征定位人脸区域,人脸识别是识别这个人是谁。作为人脸信息处理中的重要技术之一,
现今,人脸检测被普遍认为是,在模式识别与机器视觉领域内备受关注,与人脸识别、
定位及追踪等都紧密联系的,研究非常积极的课题。
本文主要针对人脸检测领域中最为经典的 Viola&Jones 人脸检测算法进行算法原理
的分析。该算法由 Paul Viola 和 Michael Jones 在 2001 年的 CVPR 上提出[2],因其可以
快速高效的检测即使到现在也依然被广泛使用,因此,该算法在今天依然有值得研究的
价值。
2.1 Haar-like 特征
在 Haar-like 特征提出之前,传统的人脸检测算法(如基于皮肤颜色的方法等)一般
是基于图像像素值进行的,这些算法计算量较大且速度慢,实时性较差。最早将 Haar
小波应用于人脸特征表示的是 Papageorgiou 等人,Viola 和 Jones 则是在此基础上,提出
了 Haar 特征,如图 2.1 所示,具有三种类型四种形式。Lienhart 等人的贡献是加入了旋
转 45°的矩形特征,进一步的扩展了 Haar 特征[3]。
图 2.1 Viola 和 Jones 提出的 Haar 特征[2]
图 2.2 现有的 Haar 特征模板
现有的 Haar 特征模板如图 2.2 所示。从这些图中可以看到,每个特征由 2~3 个矩形
组成,在这些示意图中,淡色区域表示“需要算入的数据”,“需要减去的数据” 由深
色区域表示。分别检测边界、线和中心特征,把 Haar 特征模板放到人脸图像区域上,
将矩形框内的淡色区域像素累加值与深色区域的像素累加值相减,得到的就是所谓的人
脸特征值。Haar 特征在一定程度上反映了图像灰度的局部变化,在人脸检测中,脸部的
一些特征可由矩形特征简单刻画,例如,眼睛比周围区域的颜色要深,鼻梁比两侧颜色
要浅等。但是,这仅是对于简单的边缘、线段这类结构来说的。因此,矩形特征只能用
来描述特定方向的结构。如矩形特征可以描述水平方向的图形结构。
计算 Haar 特征值时,对于图 2.1 中 A、B 类二矩形特征模板和 D 类对角特征模板,
特征值计算公式为:
v
Sum
白 Sum
黑
(2.1)
而对于 C 类三矩形特征模板来说,计算公式为:
Sum
*2
Sum
(2.2)
其中,将黑色区域像素和乘以 2 是为了使两种矩形区域中像素数量相等。从中可以
黑
白
v
看出,权值与矩形区域的面积成反比。保持两种矩形区域中像素数量相等是为了抵消两
种矩形区域面积不等造成的影响,保证 Haar 特征值在灰度分布均匀的区域特征值趋近
于 0。
Haar-like 矩形特征分为多类,特征模板可用于图像中的任一位置,而且大小也可任
意变化,因此 Haar 特征的取值受到特征模板的类别、位置以及大小这三种因素的影响,
使得在一固定大小的图像窗口内,可以提取出大量的 Haar 特征。
2.2 积分图