版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页基于机器学习的人脸识别算法的设计与实现承诺人签名:日期:年月日基于机器学习的人脸识别算法的设计与实现摘要人脸识别技术是一种新型的生物特征认证技术。人脸识别技术也是一个非常活跃的研究领域,涵盖了许多领域,例如数字图像处理。随着人们对应用程序需求的增长,面部识别技术趋向于大量使用,使用微芯片和标准化。人脸检测是快速准确识别人脸的先决条件。其目的是检测图像背景下的人脸,并将其与数据中的人脸进行比较,以实现人脸识别。本文以python为开发技术,前端实时检测摄像头人脸,人脸识别主要是使用mtcnn做人脸提取,使用facenet做人脸特征提取,通过余弦相似度分类进行人脸识别。系统界面简洁、识别迅速、使用方便。本文首先介绍了人脸识别系统的现状及其发展背景,然后讨论了系统设计目标,系统要求和总体设计计划,并详细讨论了人脸识别系统的详细设计和实现。系统最后进行面部识别。并对系统进行特定的测试。关键词:人脸识别;python;机器学习
DesignandimplementationoffacerecognitionalgorithmbasedonmachinelearningABSTRACTFacerecognitiontechnologyisanewtypeofbiometricauthenticationtechnology.Facerecognitiontechnologyisalsoaveryactiveresearcharea,coveringmanyfields,suchasdigitalimageprocessing.Asthedemandforapplicationprogramsgrows,facialrecognitiontechnologytendstobeusedinlargequantities,usingmicrochipsandstandardization.Facedetectionisaprerequisiteforrapidandaccuratefacerecognition.Itspurposeistodetectthefaceinthebackgroundoftheimageandcompareitwiththefaceinthedatatoachievefacerecognition.Thisarticleusespythonasthedevelopmenttechnology.Thefrontenddetectsthecamera'sfaceinrealtime.Facerecognitionmainlyusesmtcnnforfaceextraction,andfacenetforfacefeatureextraction,andusescosinesimilarityclassificationforfacerecognition.Thesysteminterfaceissimple,quicktoidentify,andeasytouse.Thisarticlefirstintroducesthecurrentstatusanddevelopmentbackgroundofthefacerecognitionsystem,thendiscussesthesystemdesigngoals,systemrequirementsandoveralldesignplan,anddiscussesthedetaileddesignandimplementationofthefacerecognitionsystemindetail.Thesystemfinallyperformsfacialrecognition.Andconductspecifictestsonthesystem.Keywords:Facerecognition;Python;Machinelearning目录TOC\o"1-3"\h\u122第一章概述 6316051.1课题背景及意义 678011.2国内外研究现状 6168341.3本课题主要工作 76750第二章系统开发环境 8212062.1python技术 814002.2图像检测简介 9124461基于直线检测的方法 983142基于阈值化的方法 935033基于灰度边缘检测方法 975862.3人脸识别简介 10320732.3.1人脸识别阶段 10115872.3.2人脸识别方法 10307782.4深度学习算法及CNN 1028564第三章系统分析 1215263.1可行性分析 12322353.1.1技术可行性 1249693.1.2操作可行性 1237873.1.3经济可行性 1233953.1.4法律可行性 1249763.2需求分析 13168563.2.1功能需求分析 13252843.2.2性能需求分析 13283593.3开发环境分析 1325817(1)开发硬件平台: 1316641(2)开发软件平台: 132913第四章系统设计与实现 144904.1系统设计原则 141725(1)数据安全性 1417071(2)易用性 1425743(3)柔软性 147930(4)扩展性 14276524.2系统流程设计 14150294.2.1系统开发流程 14279424.2.2人脸识别流程 15313554.3系统功能设计 1692014.4接口设计 16135354.4.1外部接口 1653934.4.2内部接口 16191344.5系统实现 16146894.5.1人脸检测 16182174.5.2人脸识别 18139984.5.3人脸识别效果 1927573第五章系统测试 2159655.1测试环境与条件 21297435.2功能测试 21299575.3测试结果分析 245782总结与展望 254581谢辞 2630301参考文献 276402附录 28第一章概述1.1课题背景及意义现在,随着科技的不断发展,我们的生活变得越来越便利也越来越智能,无论是支付宝微信支付,在边境出入关口,在政府机构办理业务等等,我们都能够使用指纹和人脸这些生物特征技术。并且伴随着讲究的不断深入,大大降低了识别技术的成本,人们开始逐渐接受这些技术[15]。其中最为突出,最为广泛,热议度最高的当属于人脸识别技术了[3]。人脸识别,顾名思义就是在图片和视频中检测有没有人脸。当发现一个人的脸时,会获取其他面部特征(眼睛,嘴巴,鼻子等),并根据此信息将该人与已知人脸的数据库进行比较。标识一个人的身份。人脸检测是使用计算机确定输入图像中所有人脸的位置和大小的过程。面部识别系统是由面部识别系统引入的,该系统可以包括面部图像,输出是面部和面部图像的存在之和,描述了位置,大小,参数化位置Do和方向信息[1]。假定检测面部的问题始于识别面部的研究。全自动面部识别系统包括与两项主要技术的链接:面部检测和提取以及面部识别。完成自动面部识别的第一个要求是确定一个人的面部。人脸识别是自动人脸识别过程的第一步,它基于自动人脸识别技术。自动人脸识别系统的速度和准确性起着重要作用。人脸识别系统可以应用于考勤、安全、金融等领域,应用广泛,大大提高了工作效率,提高了服务水平,身份认证变得更加科学、规范、系统、简单。1.2国内外研究现状面部识别的研究始于1960年代末和1970年代初。第一个研究人员是布莱索,他建立了一个人脸识别系统,但这个系统是半自动的,识别的主要依据是座位识别的主要特征,如人脸特征点的距离和比例。20世纪90年代,计算机软硬件发展迅速,人们对人脸识别的要求越来越高,对人脸识别的鲁棒性也提出了更高的要求[2]。许多学者开始研究基于整体的识别方法,并成为当时人脸识别研究的趋势。最具代表性的特征脸方法和弹性图匹配方法。在1990年代中期,整体识别和成分分析相结合的面部识别方式开始涌现。研究人员也开始认识到,他们不仅必须充分利用来自各种面孔的面部识别信息,而且还必须融合诸如形状拓扑特征,局部灰度功能和全局比例分布之类的特征。当时,许多新的算法开始出现,但都是将一些原有的算法拼接在一起,对算法本身并没有提升和优化。在1990年代后期,面部识别技术得到发展并开始商业化,许多产品开始投放市场。但是,由于算法的单一和落后,其识别的误差还是很大,并且运行速度还有待提高。直到来到2000年,才有所进步,但是与人们的需求相比存在一些差异,这主要是由于外部环境的影响,例如光照,姿势和距离的影响。识别效果差。当前,面部识别技术只能在不需要高识别精度的某些情况下使用。总的来说,这项工作的面部识别涵盖了各个领域,例如计算机视觉,数字图像处理和人工智能,但是根据这项研究,无论实际计算机的类型如何,在现代网络和计算机通信中它都可以满足也需要快速的系统开发。从一种观点看,研究的价值很高。随着计算机网络的扩散,诸如计算机信息的图片和视频之类的多媒体信息的比例不断增加,这项研究将不可避免地导致快速,长期的发展。1.3本课题主要工作本文主要分为五个章节,具体结构如下:第一章节为概述部分。主要分析了该课题的研究背景以及研究意义。了解了现阶段国内外的人脸识别的发展情况。提出本文主要的工作内容。第二章是对开发的环境进行分析,以及对于采用的人脸识别方式进行分析第三章人脸识别开发的可行性分析和对需求分析第四章是对人脸识别系统开发流程的说明。第五章对人脸识别功能实现的测试总结以及对后续改进的展望。第二章系统开发环境2.1python技术Python是一种开发语言,一种用于计算机程序设计的开发语言,并且允许面向对象的编程。Python由GuidovanRossum开发。Python具有许多功能,例如简洁的语法,免费的源代码和种类很多的数据库和第三方库[5]。由于这些优点,您可以非常快速地与其他语言结合以实现各种功能模块。许多人都被昵称为“胶水”。使用Python快速编程的原型是许多程序员当前使用的一种方法。在任何有特殊要求的地方固定都很方便。PyQt是一个工具包,主要可以创建带有图形界面的程序。Qt库是一个功能强大的库。PyQt实现了一组Python模块。PyQt受人青睐的原因是因为其拥有数据庞大的类和功能。不仅如此,其跨平台开发的特点也是其受青睐的原因,例如UNIX,Microsoft,Apple。此外,PyQt具有双重证书,可提供跨平台性能。在使用Python安装平台之前,用户必须设置环境变量以加载和运行取决于另一个平台的不同版本运行。Python特点1.阅读起来简单:由于Python代码简洁,而且定义也非常清晰,所以阅读起来更加简单。2.维护起来方便:Python的维护简单方便。3.标准库多:Python自身带有许多免费的,开源的,功能强大的数据库。4.具有方便的互动模式:有了互动模式的支持,开发者可以从代码就可以看到结果,这样开发者对程序的测试与调试,变的更方便。5.可移植性好:Python可以跨平台运行。6.扩展性非常好的:如果有关键的代码,你可以用特殊的语言进行编写,也能够在系统中调试运行。7.数据库接口多:Python可以与市面上大多数的数据库连接。8.可嵌入性强:为了提高实用性,Python可以嵌入到多种语言中。增强程序的适用能力。当然python相对于其他语言也有自己的缺点,在运行速度这一方面,他虽然能够满足用户的需求,但是相对一些经典语言(C,C++,JAVA等)还有点慢。由于是新型的语言,在使用的推广度上,用户还是没有那么多。但是由于python的优势比较明显,现在越来越多的用户开始对它进行关注。最后就是目前市面上关于python的中文资料比较少。在查找和深入研究上有些限制[9]。2.2图像检测简介图像检测,顾名思义,就是通过某种算法,把图像中的需要处理那部分图像进行定位与获取。这也是图像识别的最重要的一步。一般都是采用图形分割技术,图形分割技术又与图形的特征提取和图像处理密不可分[4]。图像检测的方法有很多种,这里简单介绍以下几种较常用的方式:1基于直线检测的方法顾名思义,通过检测图像中的直线(通常是图像周围的所有边缘)来识别直线。通常使用的检测方法是霍夫变化和其他方法。原理是按形状查找图像。但是,在实际应用中,许多因素都会影响定位效果,例如光线不均匀,灰尘和尘埃,图像模糊或曝光过度。当然,霍夫算法也有其缺点。它仅检测直线,不考虑图像形状的将来变化。同样,霍夫的空间不能一次匹配一个原始图像空间。不能指定霍夫空间中的特征点。图像轮廓的初始位置不能避免在直线上产生干扰的问题,并且在直线上存在干扰的情况下,无法提取帧[7]。2基于阈值化的方法这种方法的主要特点是可以对图像应用阈值,以获得具有单个字符和背景的二进制图像。尽管目前提出了各种关键策略,但是简单算法对二值化的影响很小,但是复杂算法由于计算时间长和计算复杂性而限制了计算时间。在现实生活中由于上述原因,这类方法没有取得太大的普及。3基于灰度边缘检测方法此类方法一般使用两种方式,一种方式是利用图像区域局部对比度明显,另一种方式为灰度有规律变化的纹理特征,通过这两种方式相结合来定位。(1)基于灰度直方图的门限化边缘检测通过灰色直方图检测阈值极限是最常见和最简单的方法。这种边缘检测方法的原理是搜索对象。背景图像在被摄体上有很好的边缘。该图像的灰度直方图为2个峰值。(2)基于微分的边缘检测①一阶差分边缘检测人像的边缘点将显示像素灰度值急剧变化的特征,具有相对较大的差值。当差值方向和边界方向相互垂直时,此时差值最大。因此,只要对f(i,j)的所有方向上的差值进行第二次阈值化,就可以通过处理来检测边缘像素点,从而获得边缘图像。②二阶差分边缘检测与一阶差分边缘检测一样,人像的边缘点会表现出像素点灰度值急剧变化的特征。图像的灰度值将用于沿着x,y或者进行二次差分,然后通过差分后的一些属性来检测边缘。③根据边缘的位置,图像的灰度值变化很大。相对应的连续函数的坡度最大。常用的算法有Roberts运算符,Prewitt运算符和Sobel。另一种更直观的方法是使用当前像素附近的一些像素值合成表面,并计算像素连续表面的斜率。最大的梯度就是肖像的边缘。2.3人脸识别简介2.3.1人脸识别阶段人脸识别作为图像处理的一次尝试,目前有了很大发展和突破。主要流程包含:首先利用机器分析,对特征信息进行提取,然后进行查找和匹配,从而达到识别人脸的目的。目前人脸识别技术已经渗透到我们的生活,比如人脸支付、人脸门禁、人脸购物等等。伴随着科技的不断发展和人们需求不断地增加,人脸识别技术也在不断地成熟和稳定,其发展大概分为三个阶段。(1)第一阶段人脸识别的创始人Bledose,他把人脸进行特征提取,比如组成人脸的眼睛、鼻子等作为参数,人脸识别系统的雏形得到了建立。(2)第二阶段因为在收集分析信息方面人们变得变得更加简单,在199几年初,图像处理的关键发展方向已经从一些基础的处理转向了整体人脸识别。并且由于计算机技术得到不断的突破。人脸识别的方法更加呈现百花齐放的状态例如:灰度处理,人脸模型等等。(3)第三阶段人脸识别技术是在1990年代后期开发的,随着市场需求的持续增长,它已成为关注的焦点。在世界上每个国家,我们都在争夺人脸识别技术的发展,但是基于成熟的技术,人脸识别技术也存在严重的缺陷。直到现在,人脸识别技术仍然对世界感兴趣,并且还在不断发展。2.3.2人脸识别方法人脸识别的方法有很多有根据眼耳口鼻的形状和它们之间的距离来识别,此外有将图片进行压缩并且正交变换来进行识别,其次有通过机器学习用函数来进行训练识别。此外还有一些常用的模型识别方法,如NM,HNM等。2.4深度学习算法及CNN 人工神经网络是一个动态系统,是一个自适应的非线性动态系统。每个神经元在单独分开来看的时候其自身的功能和结构对于其他来说是简单的,但如果我们将由大量神经元进行组合连接,其呈现的东西是十分强大的。人工神经网络之所以称之为人工神经网络,主要是因为它能反映人脑功能的一些基本特征。虽然这只是对人脑功能的抽象化呈现和模拟。但是对于普通的计算机来说,他不是单单地执行代码所能呈现的功能,一步一步往下操作,它能在执行代码程序的过程中不断去适应环境,自我地去学习,优化自身,总结学习上的规律。因此人工神经网络在这几个方面上更接近人脑。在人工神经网络在一开始像一个初生的婴儿一样是一张白纸,他要通过不断地学习才能进行工作。比如说在设定“一”代表“1”,“二”代表“2”以此类推,人工神经网络便要去学习。在现实生活中神经网络的优势更多地体现在分类的问题上,比如图书推荐,酒店推荐等等。像LR或者linearSVM这些分类算法在面对一些非线性分类的时候,LR通常需要靠特征工程做特征映射,而SVM需要选择核。这些操作往往会增加计算量,延缓运行速度。而神经网络在具有三层或三层以上结构的时后,它能够很好地实现非线性可分。并且计算量会相比LR或者linearSVM少得多。之前的人工神经网络存在一个问题:就是数据的传递都是一整个传递,这导致越往后所需要处理的像素参数会越来越多。直到卷积神经网络(简称ConvNet或CNN)的出现来=才解决此类图像处理问题[11]。CNN:CNN也称被为卷积神经网络。他拥有两个不同功能的神经元。一个是C,另一个是S。C代表的是卷积。主要用于特征提取。S代表子采样,实际上是池化操作。LevelC是特征提取的Level[12]。每个神经元都只和上层的一部分相连接,在这一部分确定后,其他未连接的部分也会被映射下来。网络中的每个处理级别都包含多个功能图。每个对象都映射在一个平面上,并且平面上的所有神经元具有相同的权重。同时,它主要包含可用于特征分类的函数,可以是S型激活函数或RELU函数。Sigmoid的优点是输出范围有限,并且在传输过程中不容易分散数据[2]。CNN算法成功的关键是通过减少参数数量并证明使用局部连接方法和权重分配方法的图像处理优势,从而接近当前的生物神经网络。除了减少参数数量外,CNN还使用特征提取。这使您可以直接插入启用了复杂图像预处理的原始图像。因此,目前,基于CNN的特征提取正在取代在人工视觉领域已经积累了10多年的各种特殊模型或技术,并且该领域几乎存在标准的预处理方法。以前,功能是手动开发的,因为对于各种可识别的对象有许多有用的功能,并且它们高度依赖于经验。现在,CNN可以轻松做到这一点,从而避免了在特征提取和分类过程中数据恢复的复杂性。第三章系统分析3.1可行性分析人脸识别系统主要目标是实现对人脸的检测和识别。在确定了任务之后,我们从以下四方面进行可行性分析。3.1.1技术可行性(1)硬件可行性分析硬件一般主要是指我们计算机的配置,目前无论是我们的家用电脑还是实验室的电脑,在配置方面都基本能够满足我们的开发使用,而且系统的开发软件对计算机要求并不算太高,因此普通的硬件便能完成系统的开发。(2)软件可行性分析人脸识别系统主要采用python为开发技术,前端实时检测摄像头人脸
,人脸识别主要是使用mtcnn做人脸提取,使用facenet做人脸特征提取,通过通过余弦相似度分类进行人脸识别。Python是一个相对成熟的语言,由于其简单容易使用、标准库第三方库多、开源,功能强大,可扩展性高等等一系列的优点,能够帮助开发者更加高效简单的进行开发工作。可以看出,该系统的开发是没有问题的。3.1.2操作可行性面部识别系统的界面通过简单易用的通用界面窗口实现。用户只要能够正常使用就可以登录并使用计算机。并且利用Python语言能简化开发。该系统的特点是易于使用,易于管理和出色的交互性,并且使用非常简单。所以开发这个系统是完全可行的。3.1.3经济可行性该系统是提供用户面部识别的系统,并且由于是通过调用相关库来实现的,因此整个系统的系统开发和花费时间不会太大和太长。整个过程的开发是独立且独立进行的,要解决所有开发问题,可以仅使用一台计算机和上述各种软件。面部认证系统所需的硬件和软件环境在市场上很容易获得,程序的开发主要是控制系统的开发和维护。因此,该程序不需要太多的工作和资金,并且系统不是很复杂,并且开发周期短且便宜。3.1.4法律可行性该面部识别系统是独自开发的系统,在实际使用中非常重要的贡献。使用的开发环境软件和数据库是开源的。没有复制其他人的代码或程序。这在法律上是可行的。3.2需求分析所谓需求分析就是,需求人员通过与客户的沟通,所获取的信息,然后把这些信息通过需求说明书的方式展示给用户和开发人员。在一开始,任梦对于需求的分析时不太重视甚至是不太认同的,例如当时美国IBM公司为英国电信公司开发一套信息管理系统,在需求不明确的情况下开始开发,最初的工期为一年,由于需求获取不清晰导致工期推迟了半年多,造成巨大损失。而导致这一切后果的原因就是需求获取不及时、不清楚、不全面。3.2.1功能需求分析1.人脸检测:在MTCNN人脸检测模型中,从照片中提取出对应的人脸2.特征提取:把人脸图像输入到FaceNet,计算Embedding的特征向量3.人脸识别:判断两者之间的余弦距离,若复合要求,则判定为同一人否则便不是3.2.2性能需求分析一个系统的性能的好坏,直接决定了用户的体验度。而性能的好坏又取决于系统的架构的好与坏。一个优秀的系统架构一般包含以下几个方面:(1)模块化设计明确。一个大的系统,分为很多小的模块,每个模块的划分清晰明确,每个模块的功能明确,且模块之间可以灵活的调用,实现低耦合高内聚。(2)模块的划分,分为很多种类,要保证通用模块实现灵活的调用,特殊模块,可以随时根据系统功能等的变更及时进行更改。让系统的灵活性更高。(3)稳定、安全、高效的数据建模。数据是整个系统的仓库,只有一个稳定、安全、高效的仓库,才能为系统提供好的数据存取和变更。(4)整体结构稳定而又灵活。系统的整体架构在初期部署的时候,一定要有高度,不但结构清晰,运行稳定,当运行出现问题的时候,能够提供快速的解决方案。3.3开发环境分析(1)开发硬件平台:CPU:Intel5内存:4G以上硬盘:80G以上(2)开发软件平台:操作系统:Windows10开发软件:pycharm开发语言:python第四章系统设计与实现进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数据等。而且我们通过总体设计,大致可以划分出了程序的模块,以及功能。但是只是一个初步的分类,并没有真正的实现。整体设计,只是一个初步设计,而且,对于一个项目,我们可以进行多个整体设计,通过对比,包括性能的对比、成本的对比、效益的对比,来最终确定一个最优的设计方案,选择优秀的整体设计可以降低开发成本,增加公司效益,从这一点来讲,整体设计还是非常重要的。4.1系统设计原则(1)数据安全性系统的开发涉及到很多数据,包括用户数据或者是系统数据等,无论是哪种数据都需要确保数据的安全性,在系统设计时必须要采取安全防范措施,以解决潜在的安全问题。(2)易用性系统最终会交付给客户,用户通过其权限进行系统的使用,能不能用,以及是否好用,都决定了客户对系统甚至是开发公司的印象。好用的系统能够大大提高操作员的工作效率,从而提升用户的好感度和忠诚度。(3)柔软性柔软性包含范围较广,主要是能够处理各种突发的情况,也就是我们所说的应急能力。由于任何人都无法保证系统的绝对安全,当系统出现错误时,能够及时的进行补救。(4)扩展性系统的可扩展性对于我们来说是必要的,这样便于满足不同的要求,以及减少支出。4.2系统流程设计4.2.1系统开发流程 在进行人脸识别系统开发时,最先开始的肯定是对于需求的分析,在需求分析之后便是对于系统总体的设计(比如结构上,功能上,数据上)其次便是功能模块上(数据库等)的设计,最后便是系统的测试。本系统的开发流程如图4.1所示图4.1系统开发流程图4.2.2人脸识别流程用户在使用人脸识别时,首先进行人脸的检测,如果发现人脸然后进行识别。流程如图4.2所示。图4.2人脸识别流程图1在MTCNN人脸检测模型中,从照片中提取出对应的人脸。2.把人脸图像输入到FaceNet,计算Embedding的特征向量。3.人脸识别:判断两者之间的余弦距离,若复合要求,则判定为同一人否则便不是,例如当特征距离小于1的时候认为是同一个人,特征距离大于1的时候认为是不同人。4.3系统功能设计根据第三章功能分析,得出人脸识别系统的功能结构,如图4.3所示:图4.3系统功能结构图4.4接口设计4.4.1外部接口(1)用户界面用户界面即为Windows窗口。用户通过对话框上的菜单,按钮,文本框等元素与系统进行沟通。(2)软件接口无。(3)硬件接口包括传统的与键盘,鼠标,显示器,摄像头的接口,用来输入和输出。4.4.2内部接口内部接口,使用mtcnn来进行人脸的检测,FaceNet特征提取。4.5系统实现4.5.1人脸检测MTCNN是一个多任务卷积神经网络,他将人脸的区域检测和人脸的关键点检测放在一起来提高性能。特别是在三个CNN阶段中,从粗略到准确地处理预测人脸和脸部标记点的任务[12]。1:使用P-Net是一个全卷积网络,用来生成候选窗和边框回归向量(boundingboxregressionvectors)。使用Boundingboxregression的方法来校正这些候选窗,使用非极大值抑制(NMS)合并重叠的候选框。全卷积网络和FasterR-CNN中的RPN一脉相承。2:使用R-Net改善候选窗。将通过P-Net的候选窗输入R-Net中,拒绝掉大部分false的窗口,继续使用Boundingboxregression和NMS合并。3:最后使用O-Net输出最终的人脸框和特征点位置。和第二步类似,但是不同的是生成5个特征点位置。网络结构如图4.4.图4.4mtcnn结构首先将收集到的人脸信息存储在一个共同的文件夹之中,方便为后续的人脸检测提供便利。图4.5已经储存的人脸在人脸导入完成之后,对已经存在的人脸进行人脸的检测和注册,并且会进行两次检测,提高检测率,当图片不符合要求时,会提示注册失败,请更换图片的字样。图4.6人脸的检测和注册成功4.5.2人脸识别FaceNet用来对比人脸之间的匹配度。其主要思想在多维空间中显示人脸图像,并通过空间距离表达人脸的相似性。如果检测的人脸和识别的人脸的空间距离较小则为同一人脸,反之则为不同的人脸。如此,在平面图像中的脸部信息可以通过空间映射来进行表现,并且可以进行对比,达成人脸识别的功能。FaceNet是一种在机器学习的环境下的对人脸信息点进行映射的方法,并使用三重子损失特征来形成神经网络。FaceNet的网络结构如下图4.5所示,其中Batch表示的是已经输入的人脸样本,DEEParchiteture是指一种深度学习的框架,然后用L2将图像的操作映射到一个超球面上,经过之前的一系列操作生成深度学习之后的特征向量,最后三张图片输入的loss。图4.5facenet网络结构运行人脸识别代码,在原人脸已经检测和注册的情况下,运行代码后,系统自动打开摄像头,并且识别框内人脸,当实时的人脸和已注册人脸相匹配时,会产生人脸金字塔。具体效果如下图:图4.8实时人脸识别匹配效果4.5.3人脸识别效果运行系统。然后进行人脸的检测识别,界面如图4.6。此外,为验证此人脸识别效果,我在网上找了两个开元库,对算法的人脸识别率进行了检测。分别提取了库中30%的数据进行检验识别率为100%。并且生成混淆矩阵。检验效果如下:图4.9ORL_embedding识别效果图4.10YALE_embedding识别效果第五章系统测试在程序开发完成之后,测试便是很重要的一步,测试的质量与产品开发有关。必须通过测试满足客户对软件质量,性能和可靠性的需求。测试过程必须遵循严格的卓越标准和标准化的原则。该测试的主要目的是检查系统运行期间是否发生错误,并调试错误,直到程序完全执行为止。但是,软件测试可以最大程度地减少错误,并且从理论上讲不能消除这些错误。但是,错误越少,系统错误的可能性就越小,用户可以更方便,更安全地使用它。5.1测试环境与条件处理器:Intel5内存:4GB硬盘:80G以上操作系统:Win105.2功能测试当系统中拥有已注册图像的人脸数据时,可以和动态的视频相匹配,不仅如此,也能通过电脑摄像头实时的进行人脸的匹配。图4.8已注册的人脸图像适用性测试:利用python语言能在pycharm正常运行且正常匹配人脸。测试结果如下图:图4,9匹配人人脸图4.10摄像头实时人脸识别准确性测试:在两个公开数据集YALE_embedding和ORL_embedding上进行算法的实验,并用混淆矩阵表示其精度,验证集有30%,识别率为100%。结果如下图:图4.11ORL_embedding识别率图4.12YALE_embedding识别率可操作性测试:在pycharm点击运行按钮能正常运行检测,识别,识别率等功能。本人脸识别系统功能测试如表6.1所示:表6.1功能测试5.3测试结果分析经过对总体测试分析,能够正确实现人脸的检测,检测之后能正确识别,且支持实时识别,且识别率有保障。总结与展望本系统通过对python和人脸识别技术简介,并且在技术,工作环境等方面说明了人脸识别系统的可行性,本文结论及研究成果如下:实现了基于机器学习的人脸识别系统。通过本次人脸识别系统的研究与实现,我接触到了一门新的编程语言:python,从一开始的理论知识,到后面的实践,我都体会到了其重要性,因为这是第一次我如此完整的从需求分析,设计,到测试来进行开发,所以仍然会有许多不足的地方,也会有许多考虑不到的地方。对于我本人来说我本人是没有很多太深的了解的,所以在开始设计的时候总会出现一些简单却又十分繁琐的问题,例如测不到人脸、识别率不高以及数据库连接有问题已经无法实现参数的传递等等,不过随着自己对于人脸识别的不断深入地学习以及通过在网上寻找有关资料下最后都得到了解决,在此过程中,不仅加深了我对于人脸识别专业知识上的理解,也提高了自己独自解决Bug的能力,令我感受更深的是,虽然书上的理论知识虽然是设计的必要条件,但是书上的知识也是死的,如何将死的东西变成活的就需要看自己对于姿势的理解,每个人对于题目的理解,编程的思路和对数据的处理都是不同的,这时候便体现出实践的重要性,因为实践才是检验真理的唯一标准。这次毕业设计,我不单单是完成了学校的任务,更重要的的是我提升了我自己,这更是一次宝贵的经验,为我之后的发展有很大的帮助。通过这次人脸识别系统的开发,我参考了人脸识别和机器学习的文章和例子,人脸识别这个热门话题下,有许多参差不齐的文章
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桩基分包施工合同模板
- 厦门冷藏配送合同范例
- 求购超载半挂车合同范例
- 2024个人借款合同标准版格式
- 二零二四年度电气安装工程合同(含设备品牌和安装要求)
- 二零二四年度餐厅品牌连锁与旅行社合作发展合同
- 2024年度电梯安装工程售后服务与支持合同3篇
- 共享玩具合同范例
- 2024年度采购合同范本:设备购买与供应条款2篇
- 新签国际商业合同范例
- 西门子PLC编程详解演示教学课件
- 建筑与市政危大工程清单
- 道医养生要义(修改版) - 副本课件
- 医院护工培训-教学课件
- 中考李清照《渔家傲》理解性默写(含答案)
- 河海大学5结构力学全部核心考点讲义
- 《家庭暴力中的正当防卫问题分析(论文)9500字》
- 灵芝的历史文化与现代研究
- 采煤教学课件
- 湖北省荆门市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 绘本“老鼠娶新娘”完整版PPT
评论
0/150
提交评论