基于Python的多目标人脸检测和识别系统研究毕业论文
2020-04-10 16:04:08
摘 要
人工智能领域是当前的研究热点,而其中的人脸识别是其中关注度高且落地运用较为成熟的一个领域。本设计围绕实时的多人人脸检测识别展开,分为采集与预处理、人脸检测、人脸识别几个模块和最终的系统设计展开。各模块中分析比较了选择不同实现方法的原因,并对结果进行呈现和评价。与大多基于C 和OpenCV的人脸识别系统不同,本设计基于面向对象的程序设计语言Python和计算机视觉领域运用最为广泛的OpenCV开源库。在预处理阶段加入了对数变换,提高系统对人脸光照角度条件变化的适应性。在人脸检测模块中,分析了基于肤色分割的人脸检测对光照色温条件变化的敏感度,证明白平衡调节对这一类检测的重要性。
本设计所针对的实现场景是教室,主要用于学生到课情况评估,面向正脸展开,多姿态不在考虑范围内。人脸检测准确率达到87.5%以上,实时人脸判定准确率较高,鲁棒性较好,长时间运行不会出现崩溃现象,计算机平台资源占用较小。
关键词:实时人脸检测;多人人脸识别;色温;OpenCV
Abstract
The field of artificial intelligence is the current research hotspot. In the field, face recognition is paid high attention and the application is relatively mature. This design is based on real-time multi-face detection and recognition, which is divided into several modules of acquisition and preprocessing, face detection, face recognition and final system design development. Each module analyzes and compares the reasons for selecting different implementations and presents and evaluates the results. Unlike most face recognition systems based on C and OpenCV, this design is based on the object-oriented programming language Python and the most widely used open source library in computer vision -- OpenCV. Logarithmic transformation was added in the preprocessing stage to improve the adaptability of the system to changes in the angle of face illumination conditions. In the face detection module, the sensitivity of face detection based on skin color segmentation to changes in the color temperature conditions of the light is analyzed, and the importance of white balance adjustment to this type of detection is demonstrated.
The implementation scenario targeted by this design is the classroom, which is mainly used for students' assessment of the situation of the class. It faces the positive face and many poses are not considered. The face detection accuracy rate is over 87.5%, and the real-time face recognition accuracy is high, robustness is good, long-term operation will not crash, and computer platform resource consumption is small.
Key Words:real-time face detection;multi-face recognition;color temperature;OpenCV
目 录
第1章 绪论 1
1.1 研究背景及意义 1
1.2 人脸识别概述 2
1.2.1 人脸识别流程 2
1.2.2 国内外研究现状 3
1.2.3 人脸识别的技术难点 3
1.3 本文主要研究工作 4
第2章 采集系统和预处理 5
2.1 人脸视频采集系统 5
2.2 视频预处理 6
第3章 人脸检测 9
3.1 人脸检测经典方法概述 9
3.2 人脸检测方法的比较和选择 10
3.3 基于AdaBoost算法的人脸检测设计 12
3.4 光照条件色温对YCbCr色彩空间肤色分割效果影响分析 14
第4章 人脸识别 16
4.1 人脸识别经典方法概述 16
4.2 人脸识别方法比较和选择 17
4.3 基于Fisherface的人脸识别设计 18
第5章 实时多人人脸检测识别系统设计 22
5.1 系统流程设计 22
5.2 调试 23
5.3 性能分析 23
第6章 总结及展望 24
6.1 总结 24
6.2 展望 24
参考文献 25
致 谢 27
第1章 绪论
1.1 研究背景及意义
从1956年一批年轻卓越的科学家首次提出了人工智能(Artificial Intelligence,缩写为AI)起,至今2018年的60多年的时间里人工智能发展迅猛。2011年在微软、百度、苹果等顶尖IT行业公司内,基于深度学习的人工智能技术获得广泛应用,去年2017年不到一个季度的时间内国内人工智能获投项目已有36个,其中千万级别融资占据半壁江山。
人工智能是计算机科学的一个分支,其目标是生产一种新的智能机器,这种机器应该能以与人类智能类似的方式进行“思考”和“行动”。AI的研究涵盖了机器人、语音语义识别和图像识别等,可以模拟人的思维方式、意识产生和信息处理过程。在人工智能领域的模式识别中,人脸识别技术的探索已成为最为耀眼的一个方向,无论是科学研究还是日常生活,都充斥着人脸识别技术的影子。
人脸识别技术,即是针对给定的某一静态或动态图像,利用已有的人脸数据库,来判别图像中是否有人脸以及该人脸和数据库中的人脸是否具有对应关系,得出图像中的人应该是谁,其身份为何。它与人的虹膜指纹等生物特征一样,具有唯一性从而不易被复制来进行重放攻击,而与那些特征相比,人脸识别具有很好的非接触性,采集方便,操作简单,结果直观,与现实生活中人与人的相互识别过程几乎一致。此外,好的系统可以动态更新人脸数据库,使系统遇到新的人脸或变化时进行自学习即自动更迭数据库,从而在环境或是人的年龄增长而产生面容变化的情况下,依旧可具备良好的识别效果。
科技进步飞速的今天,人们生活中运用人脸识别的场景已经是随处可见。2018年斗鱼直播嘉年华开幕第一天进场15万人次,考虑安全因素官方在入园处设立了人脸识别点,其快速高效非接触的识别优势保障了大流量人群流畅的入园体验。公安机构用于监控犯罪嫌疑人时使用的也是基于录像的人脸识别系统,这种非接触的方式具有较好的隐蔽性,不容易惊扰到嫌疑人。北京首都机场的入境检查通过人脸识别进行身份认证,各大火车站入站口检票由系统人脸识别进行,减少了人工的工作量,缩短了过检人的等待时间,减轻一些社交障碍人们的不适感,提高了人流量大时的检查效率。与人们生活更近更日常的,有如支付宝刷脸支付,甚至一些学校已采用刷脸的方式结算餐饮而不需要校园卡一类的身外之物的介入;苹果iPhone X取消Touch ID而改用使用人脸识别的Face ID进行身份认证;再如未来的无人超市等等,它们都与人脸识别息息相关。人脸识别不再是神秘且与普通人们距离遥远的技术,而是走进了人类日常活动,渗透到了人们生活的方方面面,即使如今人脸识别的应用已经非常广泛,成熟度较高,但继续对其展开研究的意义依旧十分重大。
Python是一门于1989年由荷兰人Guido van Rossum发明的面向对象的计算机程序设计语言,语法简洁清晰,以空白缩进体现其嵌套关系,易读易写。该语言具有强大丰富的扩展库,在2017年IEEE发布的编程语言排行榜上高居榜首,最近还成为了机器学习的首选语言。Python提供大量机器学习的代码库和框架,每个伟大的机器学习和深度学习框架在Python都享有很高的待遇,或者直接包含Python API。Python内置结构和数据抽象所使用的内存均由Python运行时管理,程序员看不到内存管理的细节,其内存管理由底层自动处理,大部分繁重的计算工作都由外部代码库进行。国外一些知名大学甚至采用Python开启学生的程序设计之旅,例如卡内基梅隆大学、麻省理工学院。
OpenCV是一个开源的跨平台计算机视觉库,由英特尔公司发起并参与开发,可在主流操作系统如Linux、Windows、Android和Mac OS上运行,提供Python、MATLAB、C 等语言接口,实现强大的图像处理和计算机视觉通用算法。在人机互动、物体识别、图像分割、人脸识别、运动跟踪、机器人、机器视觉等领域应用中,在商业和研究领域中可以免费使用,成为研究者的首选库。
1.2 人脸识别概述
1.2.1 人脸识别流程
一个人脸识别系统的实现,主要是由采集含有人脸的静态或动态图像、检测人脸、识别人脸对应关系、人脸数据库四个部分组成的。首先由采集系统采集图像或视频,然后由人脸检测模块判断其中是否有人脸,若存在则进一步定位,提取人脸特征向量信息,再与已有人脸数据库中的人脸数据进行比对,确定一对一的对应关系,给出识别结果。
图1.1 人脸识别一般流程
1.2.2 国内外研究现状
人脸识别自从被广泛关注重视直至飞速发展至今,自动人脸识别技术取得了傲人的成就,涌现出大量方法。与以往几年相比,人脸识别技术的方法与技术层面已全面深度化,由早期的2D识别发展到了3D技术识别;应用方面,人脸识别引领了计算机视觉的落地应用。2014年香港中文大学教授汤晓鸥及其研究团队正式对外宣布,其所研发的DeepID[1]人脸识别技术的准确率超过99%,比人眼识别更为精准。这个深度学习模型由卷积神经网络进行面部特征点检测,且该团队开放自主知识产权,开发者可以下载FreeFace-SDK并通过它开发基于人脸识别的各类应用。2016年香港中文大学贡献了一个规模更大、数据变化更丰富的新数据集——Wider Face,该数据集中包括1.6万测试图像,标注人脸共19.4万个,更重要的是其中的人脸有大小、姿态、光照、遮挡以及表情等各方面非常复杂的变化。密西根州立大学的Xiaoming Liu团队特别针对大姿态人脸特征点定位问题,采用深度改进后的3DMM方法对人脸进行三维建模,然后将建模后人脸的三维信息与二维图像相结合,再做形状回归,取得了对于大姿态人脸的优于已有方法的定位精度[2, 3]。在2017腾讯全球合作伙伴大会上,腾讯优图推出了光线活体技术,该技术可通过屏幕发射不同颜色和强度的光线,先投射到面部后再由摄像头接收,最后通过具体算法和卷积神经网络判定活体识别所需的人脸3D信息和质感信息,以此技术可以较为理想的应对重放攻击。
1.2.3 人脸识别的技术难点
经历了几十年的研究发展,研究人脸识别领域的专家突破一个个难点,达到了今天可以实现广泛商用的高度。但是人脸识别的研究并没有走到终点,近年来的研究已走向深度化,对人在识别中的配合程度从完全的纯色背景的正脸,走向了配合度低的环境复杂的多姿态识别。现有的人脸识别系统机器所采集的数据效果,受光照强度、角度变化会有所下降。给出的人脸为重度俯仰视、侧视时,提取到的面部数据变少,识别率急剧下降,提高系统对姿态的鲁棒性是当今人脸识别研究中的挑战。面部遮挡如饰物、眼镜的存在,将对读取到的人脸数据产生干扰,甚至使初步的人脸检测算法失效。
此外,为了获得较高的识别精度以及更广泛的应用场景,人脸识别走向了三维模型的识别。与传统的二维相比,尽管只是一维的增加却多出了成倍的待处理数据,运算任务显著增加,对系统平台的要求变得更高,如何优化算法和降维处理使运算任务减轻也是三维领域的难点。由于是三维的识别,采集时所需要的数据量更大,所需存储的数据更多,这对存储管理及存储介质提出了更高的要求。
1.3 本文主要研究工作
本文的设计基于Python和OpenCV展开,目的是实现多人人脸检测及识别。本设计将对监控摄像头采集到的包括了多个人脸目标的图像进行分析和处理,并实时检测和定位其中所包含的人脸,通过人脸特征点构造几何特征向量,具体识别出图像中的每一张人脸,在识别出的人脸框旁提供实时跟踪标注。而遇到现有数据库中没有记录的人脸时,系统可以存入数据库进行学习,以便下次使用。设计中考虑把应用情景放在教室中,用以确定学生的到课情况,设计针对的是正面人脸,不考虑多姿态情况。
在本设计中,将对源视频进行预处理优化,选用适当的图像处理使采集人脸的光线分布均匀化,减少不理想光照条件下造成的阴影干扰,弱化阴影线条在后期特征提取时被认为是面部特征的影响。
人脸检测部分采用当下运用率较高的YCbCr颜色空间,该空间对肤色有较为理想的聚类且对不同肤色的人均有很好的效果。但是可见的文献中,并没有光照环境色温变化下该色彩空间的肤色分割检测效果,故本文想进行相关的实验探讨。
为了提高系统的用户人机交互效果,考虑在最后对系统进行GUI用户图形界面设计,从而把一些独立的部分组合起来形成模块间连结性好的整体。
关于识别系统的学习能力部分,目标是完成比较自动化的数据库更新过程,而不需要人的过多参与。遇到库中未存在的人脸时,可以自行捕捉保存人脸并弹窗来等待管理人员的录入。
第2章 采集系统和预处理
2.1 人脸视频采集系统
人脸视频采集是本设计的关键一环,采集的好坏对后续处理的影响非常大。首先考虑到采集所用的摄像头,为了便捷首选是直插USB的网络摄像头。使用中发现本机内置摄像头噪点多,色彩不稳定且存在很多绿色调,偏色对肤色分割显然并不友好。参阅了很多网络摄像头的参数,对比之下发现罗技C920的性价比较高。罗技C920具有1080p镜头,可自动对焦,自动调节白平衡,采用H.264视频标准,最大帧数30帧。日常使用中感受到它良好的弱光性能,噪点低,强光下曝光溢出不严重,色彩还原性好。
(a) (b)
图2.1 内置摄像头与罗技C920比较
图2.1为本机内置摄像头与罗技C920的使用对比,相同的光照条件下,图(a)摄于C920,图(b)摄于笔记本内置,容易发现C920的细节比内置摄像头强很多,且色彩还原性好。在相对良好的光照条件下,内置摄像头依旧多噪点且后方人物肤色出现泛红的情况。图2.2为罗技C920弱光性能表现,由原先条件的10w降到6w(实际使用效果其照度约为原先的1/3以下)容易发现,其弱光条件下噪点少,画质好,细节还原高,无明显偏色。
图2.2 罗技C920弱光性能
对于具体的教室环境,考虑到当学生处于摄像头近端且于视场边缘时会出现明显广角畸变,从而使人脸特征采集失真。针对这个问题,考虑到从学生就坐方式考虑。首先,把摄像头固定于讲台这一教室中央线处;在此基础上将摄像头固定在高于地面约1.8米位置,这能减少对后排同学呈仰拍视角的概率;最后,安排学生就坐呈梯形,与摄像头较近的两端坐的人越少,弱化摄像头近端边缘畸变,如图2.3所示。
图2.3 梯形就坐示意
2.2 视频预处理
良好的前端视频采集硬件条件以及采集方案,提供了较为理想的视频源,画质和细节得到了很高的保证。然而,一些杂乱的光照条件如光强和角度变化,光照角度变化将产生明暗区,暗区会遮盖人脸部分信息,无法检测完整人脸边缘。这对后期的人脸面部特征提取有着很大的影响,产生的阴影会干扰识别效果。解决人脸光照问题主要是两种路线,一是基于变换的光照补偿方法和基于光照样本合成的光照补偿方法[4]。基于变换的方式核心是利用图像处理手段以改变人脸图像的灰度特征,如在空域或频域对人脸图像进行直方均衡变换、对数变换、指数变换、伽马变换等。基于光照样本合成的方法首先对待识别人脸图像进行光照条件估计,然后通过对标准光照环境的模拟,归一化处理而得到标准光照环境下的人脸光照图像,如商图像法、球谐函数法等。
考虑到针对实时帧的人脸图像检测数据处理量大,且本机性能并不强劲计算能力有限,故不选择实现起来较为复杂的基于光照样本合成的光照补偿方法。灰度变换可调整图像的灰度动态范围或图像对比度,基本灰度变换函数有三类,分别是线性函数、对数函数和幂律函数[5]。其中,灰度线性变换表示对输入图像灰度做线性扩张或压缩,对曝光不足的图像可有效地改善图像视觉效果。其映射函数表达式为:
图像灰度的对数变换将扩展数值较小的灰度范围,而压缩数值较大的图像灰度范围,从而将整幅图像的灰度平滑化,可用于扩展被压缩的高值图像的暗像素,其的映射函数为:
幂次变换通过幂次曲线中的γ值把输入的窄带值映射到宽带输出值,对图像整体的灰度增益与γ值有关。当γ>0时,压缩灰度级较低的部分,扩展灰度级较高的部分,整体表现为图像变暗;而当γ<0时,扩展灰度级较低的部分,一定程度上压缩灰度级较高的部分,图像整体变亮,与对数变换效果类似。幂次变换表达式见式(2.3)。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。