刷脸验证APP的设计及实现毕业论文
2020-04-09 15:21:24
摘 要
人脸识别是一种新兴的生物识别技术,结合了模式识别、可视化技术,计算机图形学与图像处理,是计算机技术和算法分析的综合。完整的人脸识别系统包括人脸图像获取、人脸检测、定位人脸区域、预处理、特征提取、从特征库进行人脸特征的对比识别。相比于传统识别方案,人脸识别有着安全高效、易于采集、安全性好、成本低廉的优点,但是也局限于实际环境复杂多变,容易受背景、光照、姿势等因素的影响。如何通过优化算法,提升识别安全性、准确性、拓宽应用领域,是研究的主要方向和命题。
本文的主要工作是了解人脸识别研究背景和研究现状。研究了人脸识别的基本过程,包括人脸识别、人脸检测,常见算法及优缺点。系统研究了PCA(Principal component analysis)算法的数学原理和应用于人脸识别的基本步骤。基于Android系统,结合PCA算法进行简单的人脸识别。再结合技术成熟的人工智能公司所提供的人脸识别技术,完成刷脸验证APP的编写。该应用程序通过手机摄像头或相册获取人脸信息,通过验证后进入该应用程序,在应用内输入照片信息,通过调用API相关接口得到该人脸的年龄,性别等信息。
关键词: 人脸识别;PCA算法;Android平台;API接口
Abstract
Face recognition is a new biometric technology, which combines pattern recognition, visualization, computer graphics and image processing. It is a combination of computer technology and algorithm analysis. The complete face recognition system includes face image acquisition, face detection, face location, preprocessing, feature extraction, and face feature contrast recognition from feature library. Compared with the traditional recognition scheme, face recognition has the advantages of safe and efficient, easy to collect, good security and low cost, but also limited to the actual environment complex and changeable, easy to be affected by background, illumination, posture and other factors. How to improve Identification Security by optimizing algorithm Sex, accuracy and broadening the application field are the main directions and propositions of the research.
The main work of this paper is to understand the background and research status of face recognition. The basic process of face recognition is studied, including face recognition, face detection, common algorithms, advantages and disadvantages. The mathematical principle of PCA(Principal component analysis algorithm and the basic steps of its application in face recognition are studied systematically. Simple face recognition based on Android system and PCA algorithm. Combined with the face recognition technology provided by the mature artificial intelligence company, the writing of APP for face brushing verification is completed. Get face information from a cell phone camera or photo album After verification, we enter the application program, input the photo information in the application, and get the age, gender and other information of the face by calling the relevant API..
KeyWord: Face Recognition;PCA Algorithm;Android Platform;Application Program Interface
目 录
摘 要 I
Abstract II
目 录 III
第一章 绪论 1
1.1 研究的背景及意义 1
1.2 国内外研究状况 2
1.3 人脸识别技术面临的困难 3
1.4 本文主要研究内容与组织 4
第二章 Android开发 5
2.1 Android发展历程 5
2.2 Android架构 7
2.3 Android开发环境 7
2.4 Android开发语言 8
2.5 Android 平台下人脸识别 8
2.6 计算机视觉库OpenCV 8
第三章 人脸识别系统概述 10
3.1 人脸识别概述 10
3.2 人脸检测方法 11
3.3 人脸识别方法 11
第四章 PCA算法原理及实现 13
4.1 PCA算法与K-L变换的数学原理 13
4.2 PCA算法的基本过程 14
4.2 PCA算法的人脸识别过程 14
4.3 PCA算法的优缺点 16
4.4 系统总体设计 16
4.5 PCA算法模块 16
4.6 识别模块 17
第五章 基于API接口的刷脸验证APP 18
5.1 系统总体设计 18
5.2 人脸数据获取模块 18
5.3 人脸注册验证模块 19
5.4 人脸特征识别模块 20
5.5 实验结果 21
第六章 总结与展望 24
6.1 总结 24
6.2 展望 24
参考文献 26
致谢 27
第一章 绪论
在移动互联网时代,社会信息化、智能化、追求更高效益是大势所趋。而小型移动终端将是最适应信息化社会的设备,软件、硬件与算法的更迭进步带来了商机和技术创新、知识创新、需求分析创新的巨大浪潮和革命。并且人们对安全性、快捷性要求与日俱增,在移动终端上快速自动进行识别与认证成为不断演进的研究热点。从之前最为成熟的指纹识别到三星手机的虹膜识别,到苹果推出的3D人脸识别模组,都是成熟的、商业用途的生物验证。人脸识别基于人的脸部特征信息,通过算法进行比对分析[1]。由于生物特征的个体差异与自身稳定,使得识别具有很强的保密性,并且方便快捷,易于接受。
随着人工智能相关领域的进步和机器视觉、深度学习的深入研究,人脸识别正在快速遍布身份认证的各个领域和行业。相比于传统的识别方式,和接触式的指纹验证,人脸识别有着更加多优点诸如,非接触性,可大批量处理,效率高。应用范围涉及各生活安全领域包括企业、住宅安全,治安与社会服务领域以及个人信息安全领域[2]。而基于Android的人脸识别也已应用到手机密保,支付等领域。然而人脸图像由于容易受光照,表情,姿态,环境的变化产生干扰,进而极大影响识别率和使用情景。所以如何改进算法,研究应用于不同场景的智能硬件,是整个行业亟待解决的问题。本文依据现况和现有技术,对相关内容简单阐述。
1.1 研究的背景及意义
身份识别和身份认证在信息化社会具有非常广泛的应用环境和商业、民用、社会管理价值,而传统的身份识别,由于本身的局限性渐渐显现出不可避免的隐患。传统的识别凭证安全性较差,并不能根据特定人的唯一属性识别和验证。所以基于人的生理特征的生物识别技术蓬勃发展,如虹膜、视网膜、指纹、人脸[3]。生物特征需要本人亲自验证,从而有更高的安全性。从社会管理角度讲,人脸识别又有非接触的特点,无需知会即可得到识别,具有方便安全性。虽然可能引起隐私问题,但是这种难以伪造,应用广泛的需求,在计算机技术发展,深度学习研究进步的现状下,使越来越多研究投入到该领域。人脸识别优势在于[4]:
- 成本低廉。一般对识别要求不高的情况下,普通的手机摄像头或高清的监控摄像头即可获得人脸信息,廉价的成像设备使得应用范围更加广泛。
- 非接触性。与虹膜、指纹识别相比,人脸识别无需与采集设备太贴近,易于接受[5]。
- 效率高。在多个目标情况下可以一起识别,并且无需主动参与识别,在必要的监控场景有效采集每个人信息。
在人脸识别的算法不断更迭完善的新时代,也有硬件飞速发展作助力。摩尔定律表明计算机硬件的发展,同软件的发展、算法的更新不断交替更新上升。随着机器视觉研究的深入,深度学习应用场景增多,人工智能领域的资本投入,使得人脸识别这种需求与日俱增。在新的发展趋势下,还结合了心理学,行为学,为人脸识别的发展和完善提供了理论基础和技术基础。
随着技术进步的,还有移动互联网的普遍化、社会化,在通信领域,5G已经渐渐开始商业化。未来的趋势就是小型移动终端成为物联网控制端,各种设备结合人工智能技术,万物互联。而这种万物互联的构想基于跨平台运行。而Android平台作为开源平台,适配性良好,为各种识别场景提供了可能。很多公司致力于商用该技术,并市场化。作为最大的智能手机操作系统,Android平台下的硬件,CPU计算速度,存储能力飞速提高,人脸识别的应用也层出不穷。该平台下的人脸识别应用虽有广阔的发展前景,但机遇与挑战并存。
综上所述,人脸识别系统在应用普及度极高的 Android 平台下有着足够开阔的发展方向和未来。而基于Android系统的刷脸验证正是开发研究热点和广大用户的需求之一。
1.2 国内外研究状况
从上个世纪下半叶以来,人脸识别领域不断涌现新的算法,计算机和采集设备也有各种各样的突破。人脸识别技术的发展历程的曲折性使得划分时间段标准不一。大体分为三个阶段。
第一阶段处于对人脸几何特征的研究[6]。主要针对轮廓部分特征建模研究。由于技术所限,思路比较简单,进展缓慢。但是这种研究提供了新的研究思路和数学化方向,具有很高的研究价值。
第二阶段处于人脸识别算法研究的活跃期。产生了很多经典的人脸识别算法,如1991年产生的特征脸算法,并建立了研究所用的样本库,成为后期研究的经典范例。
第三阶段处于非线性的人脸识别。涉及光照、表情、姿势、光暗等等变化条件[7]。并且不再局限于二维程度的人脸识别。而是与硬件相匹配的人脸识别三维可变模型。在处理不同环境、表情、姿势下的人脸有极大的优势,并且商用的技术已经非常成熟,在很多应用场景已经完美实现[8]。
人脸识别相关基础在国外的起步很早,在人脸检测、提取、跟踪都已经有了丰富的研究成果。早在上世纪60年以后,美国Texas大学即出现半自动化面部识别系统。如今随着技术成熟,商业化的人脸识别系统层出不穷。国外有大量以人脸识别技术为基础的产品应用于ATM,门禁等等。国外有名的科研机构对人脸识别的研究也非常深入,与时俱进,成果丰富的诸如麻省理工学院,剑桥大学等等,并为此建立测试所用的人脸数据库[9]。
国内的人脸识别起步较晚,约八十年代后,虽然目前来看尚有差距,但是进步飞速。近些年在相关领域的竞赛上表现不错。很多国内知名的科研单位和互联网公司企业也早早探索该领域。如中科院计算所山世光教授开源的SeetaFace,清华大学,中国科学技术大学等等高校成果丰富。更有诸如商汤科技旗下的爆款APPfaceu,旷世科技的face 技术,科大讯飞等等,而百度、腾讯、阿里等互联网标杆企业均对该领域有所部署。
如今也出现的问题是人脸识别大部分只是为已有的业务软件体系上做增强,比如客户人脸校验,人脸检索(比人工高效,摄像头结果过滤),相似人脸推荐等等,并非刚需,前景一般。目前拥有人脸识别技术的公司在已知的各种商业模式中都在实践推广,但主要集中于人脸SDK授权和API服务,可攫取的利润不足。但人脸识别技术将会在更广阔的需求中冲破桎梏。如结合三维信息:二维和三维信息共同参与识别使特征更加稳定精确;多种特征融合:单一特征难以应对复杂情景变化;大规模人脸比对:面向数据量庞大的人脸识别与搜索;以及与深度学习相结合。
1.3 人脸识别技术面临的困难
人脸识别的研究花费了数十年,不断出现新的算法和思路,对一般场景的适配性已经令人满意。然而实际的人脸识别环境非常复杂多变,在诸多次要因素的干扰下,会出现识别率降低得很严重的情况。改进发展人脸识别技术,使得其具有更强的鲁棒性,适应、分辨的能力更强的目标仍然未全面实现。影响人脸识别准确度的主要因素有以下几类:
(1)成像质量。当成像质量太差时,人脸信息采集困难,会丢失关键的特征,降低识别率。对低质量的成像,一般难以通过具体算法还原和识别。在基于人群中的人脸识别需要返回不确定数的人脸识别结果,用视频流的帧处理对服务器的计算环境要求严苛,目前的算法系统所支撑的输出率非常有限。需要大量运算和带宽。当成像质量过高时,会增加图像维数,增加计算量和识别复杂度。
(2)背景。实际情况下人脸并不是单独成像,而是在复杂的背景中。背景的复杂情况会影响识别,增加计算量。所以完整的人脸识别技术不仅仅包括人脸识别过程,还包括人脸预处理,人脸检测,人脸对齐,特征提取等过程,充分降低非人脸信息的干扰。
(3)光照。由于光照非常影响图像的灰度值分布,使得图像的纹理不同于光照变化后,从而降低识别率。简单的算法一般根据灰度值矩阵进行运算,尤其容易受到光照的影响。
(4)表情。人脸作为非刚性体,变化的人脸才能反映情绪,但是表情会很大程度影响人脸轮廓。一般来说,不同人平静表情的差异性还小于一个人夸张的表情。所以通过很精确的算法达到表情干扰下的有效识别也是亟待解决的或者优化的目标。
1.4 本文主要研究内容与组织
本文所阐述的刷脸验证APP主要是基于Android系统,所涉及的内容包括:基于Android平台学习、人脸识别系统概述、PCA算法原理、基于PCA算法的人脸识别、基于API的刷脸验证APP。
- Android开发平台介绍。Android开发是基于Android Studio开发环境,用Java语言写识别过程与运算逻辑,基于PCA算法的APP还用到OpenCv。而布局设计则使用xml语言编写。
- 人脸识别系统概述。包括人脸识别的完整过程,人脸识别领域的系统研究方向,人脸检测与识别的常见算法和优缺点。
- PCA算法原理及实现。主成分分析是在原始数据空间中求得一组线性无关的正交向量,保存重要的正交向量使整体数据的均方差最小,去除噪声和多余信息,以达到降维的目的。PCA算法最重要的思想是将n维特征映射到k维正交空间(klt;n)。基于PCA算法的人脸识别是通过OpenCv将训练图片矩阵化,进行K-L变换,即去均值化,按列合并,求出协方差矩阵,再求该矩阵特征值与特征向量,选取占能量前90%的特征值组成主成分矩阵,用测试矩阵乘主成分矩阵即得降维后的矩阵, 遍历每一张训练样本和测试样本的欧式距离,获得欧式距离最小的训练样本即是匹配结果。
- 基于科大讯飞提供的API接口实现刷脸验证APP。结合科大讯飞Android版SDK的用户指南及demo,设计了一款刷脸才能进入的APP。
第二章 Android开发
Android操作系统是基于Linux系统,源代码向所有Android开发者免费开放[10]。Android系统的开放性使得应用开发的过程简化,开发难度降低,成果丰富,有大量应用程序源代码供交流学习。Android主要用于小型移动终端,后扩展到其他硬件操作平台,如多媒体设备,物联网操作系统等等。目前安卓手机市场占有率世界第一,达85%以上,市面上占有率最高的是7.0版本。最新的版本Android P预览版也已经在今年3月份发布,增加了许多令人耳目一新的AI功能。
Android开发有活动、服务、广播接收器、内容提供器这四大组件,使得开发灵活高效。活动是Android程序的人机交互界面,服务则是后台工作,在退出应用也可以继续工作;广播接收器用于接收系统所发的广播消息;内容提供器使得应用程序可以访问另一个应用程序的数据,或者应用内部的数据间共享[11]。除组件外,Android开发工具提供了各种系统控件,可以在UI设计时更美观,效率更高。而SQLite数据库的存在使存储和读取数据方便。Android设备一般拥有丰富的多媒体应用,均由Android系统提供支持。甚至还对各种传感器支持开发,如距离传感器、光线传感器、重力传感器、加速度传感器、磁场传感器、陀螺仪、GPS、指纹传感器、霍尔传感器、气压传感器等等,某些集成了心率传感器、血压传感器的设备甚至可以作为医疗设备使用[11]。丰富的传感器使Android设备用途及其广泛,也拓宽了Android开发的思路。
对比其他手机操作系统,Android高居领先地位。Android是开放的操作系统,可以直接获得源码,各厂家可以根据需求定制自己的操作系统,扩展新功能。Android系统下的应用是平等的,用户和厂家可以替换和改进系统默认程序和第三方程序的风格。可重用性高的优势体现在除了调用标准API访问系统功能,还可以调用其他程序的功能模块,利用率高。种种优点使得Android阵营出现了各种深度定制的手机操作系统,如MIUI、EMUI、Flyme等等。
2.1 Android发展历程
2003年10月,安迪鲁宾为了开发运用于机器的简单稳定的操作系统,建立了Android公司,并与其他人共同研发改进。
2005年8月17日,Google收购了Android公司。