




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于人脸识别的动态识别签到系统设计与实现DesignandImplementationofDynamicRecognitionCheck-inSystemBasedonFaceRecognition内容摘要目标检测(ObjectDetection)是近年来计算机科学的研究重点,他可以通过识别目标的几何特征,将复杂的场景分割并针对特定的目标进行识别,关键点在于准确度以及实时性。人脸识别(Facerecognition)则是目标检测中,让人最为看重的一个子类。一旦我们的人脸识别技术足够成熟,意味着我们不再需要其他物理的钥匙或者是数码的密钥,而是用一张脸,就可以满足日常生活中的一切。世界上可能有很多相似的人脸,但是绝对没有完全相同的两个人。当人脸识别技术足够成熟,我们完全可以将人脸识别作为身份分类的一个重要指标。 在深度学习的刺激下,人脸识别有了巨大突破,机器也变得会“思考”。这意味着人脸识别的安全等级将会提高,可以适用于更多安全要求更高的场景,同时人脸识别的研究也可以推动更多神经网络、图像处理等的领域发展。关键词:□目标检测□人脸识别□深度学习Abstract□ObjectdetectionistheresearchfocusofComputerScienceinrecentyears.Itcanrecognizethegeometriccharacteristicsofthetarget,segmentthecomplexsceneandrecognizethespecifictarget.Thekeypointistheaccuracyandreal-time.Facerecognitionisoneofthemostimportantsubcategoriesintargetdetection.Onceourfacerecognitiontechnologyismatureenough,itmeansthatwenolongerneedotherphysicalkeysordigitalkeys,butwithaface,wecanmeeteverythinginourdailylife.Theremaybemanysimilarfacesintheworld,butthereareabsolutelynotwoidenticalpeople.Whenfacerecognitiontechnologyismatureenough,wecantakefacerecognitionasanimportantindexofidentityclassification.Underthestimulationofdeeplearning,facerecognitionhasmadeagreatbreakthrough,andmachineshavebecome"thinking".Thismeansthatthesecurityleveloffacerecognitionwillbeimproved,whichcanbeappliedtomoresceneswithhighersecurityrequirements.Atthesametime,theresearchoffacerecognitioncanalsopromotethedevelopmentofmoreneuralnetworks,imageprocessingandotherfields.Keywords:□objectdetection□facerecognition□recognitionspeed目录第一章:绪论 第一章:绪论1.1研究背景及意义传统的目标检测技术主要是通过几何特征对图像进行切割,进而对切割出的素材进行几何分析,根据特征将其分类。但是实际使用中,各种物品杂乱无章重叠摆放,部分物品特征会被覆盖导致目标检测准确率较低,实用型并不高。而人工智能的到来,为我们展示了不一样的世界。目前,各种人工智能设备早已被大众所接受,各种IOT设备也已经被量产。物联网完全可以凭借AI这杆利刃,更上一层楼。人工智能所带来的不仅仅是全新的人机交互体验,同时他也带来了更多技术工种的就业机会,人工智能可以跨越多行业相结合,也就意味着需要更多的人才去进行智能训练,人工智能就如同当初的自动化革命一般为我们的社会注入新的血液。人脸识别技术早在几十年前的科幻电影中就已经出现,跟着机器学习的脚步,它也走出电影来到了我们的生活中。传统的物理密钥、密码都存在被盗取的风险,而人脸不一样,就算是双胞胎之间也不存在一摸一样的五官角度,因此人脸识别是我们进行身份管理最安全的一项技术。当人脸识别技术越来越普及,我们的数据集会越来越丰富,通过更多的训练,可以让机器更加的智能,更好的适应我们的生活所需。在机器学习研究前期,机器算法都比较简单。在处理较为单一的场景下,有很优秀的表现。但当涉及到较为复杂的数据衍变时,简单的算法结构的输出结果准确率极低。例如处理自然信号。在1980年,深度学习出现了。它的概念是在对\t"/item/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/_blank"人工神经网络的过程中所提出的,它的设计出发点在于建立一个机器人脑,通过模拟人体大脑的工作过程,来研发出一整套神经网络来处理和解析获取的复杂数据,例如影、视、音等。深度学习是通过对输入信号分解并组合低层次的特征,然后用来表示目标的特征或者是类别,并将特征输出。由于各种外界因素的影响,人脸识别的准度和精度还是不能满足所有场景的需求。人脸识别在二维上的发展可能比较完善,但是我们还可以通过三维图像综合识别,也可以通过引入时间概念,通过对不同时间段的识别来确定识别对象的身份。因此,人脸识别的道路,还有很长。1.2如何实现人脸识别1.2.1基于几何特征的人脸识别几何特征主要为五官的模型差距以及五官之间的距离以及几何关系。该算法在理论上容易理解,识别的速度快,原理简单,所占用的内存相对较少,遗憾的是识别率较低,不够准确。1.2.2基于特征脸(PCA)的人脸识别方法 特征脸方法是基于K-LT所提出的人脸识别方法,K-LT全称是Karhunen-Loèvetranslation,他是一个最优正交变换,此前用于压缩图像文件。通过对N维图像进行K-LT变换,获取到一组低次分量。在其中选取重要的分量,然后扩张为线性空间并进行投影,所投影出来空间的即为我们判定是否为相同人脸的一个特征量。特征脸方法的缺点在于它需要大量的训练样本,才能保证识别精度的一个准确性,并且完全是通过图像灰度对特征进行统计的。特征脸方法也有许多不同的版本,适应在不同要求的场景下,但大体上原理都是一致的。1.2.3神经网络的人脸识别方法神经网络的特点在于输入变量类型更多,他会根据输入值的不同,通过不同的智能算法进行分析,不同于传统的识别方法一般都需要完整的人脸,但是神经网络可以通过部分人脸进行分析,并得出结论。当然,结论可能无法直接利用,却可以筛选掉一些不符合的人,从而减少我们投入的人工。同时,缺点也十分明显,需要较多的训练样本来对神经网络进行适应性学习,训练样本的数量跟识别的精准度是成正比的。1.2.4弹性图匹配的人脸识别方法弹性图匹配的思路是从生物学的角度出发,定义基本脸型,通过二维拓扑表现出来。同时,该拓扑上图像所有顶点都作为该脸图的特征量,可以用来表示该点周围的线性关系。其中弹性二字的意思是,允许图像对比时具有一定的弹性变法,这样可以克服微表情变化所带来的识别障碍。通过几何因素与灰度化特征相结合,弹性图匹配被广泛应用在流式处理的在线识别产品上。更重要的是,它并不需要大量的训练样品进行适应性训练。1.2.5LHD的人脸识别方法LHD是一群心理学家所提出的识别方法,他们认为人类对于轮廓线条的识别精准度以及速度上并不差,因此他们提出了LHD。它从灰度化的人脸图中,提取其中的轮廓线,用LDH来表示不同线条之间的距离关系。更重要的是,LDH没有建议两个线段之间的唯一对应关系,因此它可以从多个方面验证单一线段是否发生了某种可容忍的变化,用来表示对不同人脸之间的相似程度。从结果来看,LHD绕过了光照条件以及姿态变化,因此在这方面他显示了较良好的识别性能,但是由于轮廓无法体现人脸表情,因此它在表情处理方面识别效果并不如人所意。1.2.6SVM的人脸识别方法SVM中文名是支持向量机,在近几年,他也进入了智能识别领域的研究者眼中。通过支持向量机,用学习机的泛化能力换取更高的计算性能。SVM在识别过程中可以帮助我们将识别人脸分解为多个特征变量,进而根据特征变量来对人脸特征进行比对得出人脸识别的结果。通过SVM可以提高人脸识别的识别率,但同大多数识别方法一样,SVM需要大量的训练样本,而在实际应用中训练样本数量往往不足。并且SVM的训练过程耗时长,算法种类也有各有千秋,因此该方法并没有一个统一的定论。1.3本文的主要工作本文从目标检测出发,针对人脸识别进行研究,讲述了人脸识别的研究意义以及发展方向。着重介绍了深度学习对于人脸识别研究的巨大帮助,深度学习让人脸识别能够更加智能的识别,增加识别的速度以及精度。人脸识别目前已经广泛应用在企业打卡签到以及部分智能家居产品上了,但部分特殊的场景还是没有采用人脸识别,而是利用更精密的识别手段诸如瞳孔或者物理密钥这种形式。这主要是由于人脸识别的缺点比较显而易见,它存在被欺骗的可能性。同时,针对脸部丰富的表情变化以及外界环境光照等不可预见的因素,人脸识别可能会受到影响、或许是识别速度过慢或者是无法正常识别等问题。 本文简单地实现了一个动态人脸识别的签到系统,识别流程大抵是先对素材库中的人脸预处理,以包含人脸特征的二维数组这种形式缓存下来,在打开摄像头进行识别的时候提取关键帧的人脸并处理为测试数据,将其与缓存中的素材集进行对比,根据相对应的阈值找到素材库中对应的人名,保存在签到名单中。当摄像头关闭时将签到名单保存为TXT在项目根目录中。对于预处理素材库中的素材这一步,被处理过的素材会缓存在内存中,因此当素材过多时对内存资源要求较高。本文一共分为四个章节:第一章:绪论,针对人脸识别与深度学习的结合,人脸识别焕发了活力,介绍了人脸识别的多种方式及其效率以及人脸识别对科技生活的巨大帮助。第二章:拥有深度学习新特性的人脸识别与传统的人脸识别相比的优势所在。第三章:通过face_recognition实现了一个动态的人脸识别签到系统,拥有在线添加素材、实时人脸识别、导出签到人员表等功能。第四章:如何突破现在人脸识别效率与准确率无法并取的现状。第五章:结论与展望。第二章:人脸识别的新特性-深度学习2.1深度学习我们将深度学习分为“深度”“学习”两个过程来理解:学习的词义解释是指通过阅读、听讲、思考、研究、实践等途径获得知识或技能的过程。在深度学习中,其实也差不多,只是我们的输入值不再是通过听讲、思考等动作,而是换成了机器能够读取的一个个数据集。而深度的意思是,从输入值到输出值这个过程中,所要经历的各个计算过程,它们各自联系,由浅入深,最终输出我们想要的数据。而这个计算过程,有好有坏,有的效率高输出值缺不准确;有的效率低,输出值却准确。因此,我们可以形象的称这个过程为“学习策略”,好的学习策略虽然需要花费大量时间去规划,但是他的结果是足够准确的;不好的学习策略会导致错误,会让学习过程走更多的弯路。学术界尝试模拟人脑,完成一套计算机能够理解的学习策略,他被称之为“神经网络”。在人的大脑皮层中,是由一个一个神经元所组成的一个大的神经网,所以神经网络也是模仿这个概念去设计。如图中的输入值,x1、x2、x3,在经过包括输入层的四层结构之后,输出了我们所期望看到的结果,这就是一个简单的神经网络。其中L1跟l4分别是输入层和输出层,l2、l3则是隐藏的处理层,越是复杂的运算,所需要的处理层就越多,同时每个处理层所包含的参数也就越多,因此也就导致整个神经网络的规模呈现一个非线性的扩大。总结一下,深度学习就是是通过多层次的计算以及分析,通过由浅入深,获取所需要的输出值的过程。而神经网络,则是我们通过分析整个运算,所规划的由各种参数与处理层所组成的一个大型的计算网络,我们可以通过这个计算网络实现输入值到输出值的一个转变。2.2深度学习与人脸识别的二次结合传统的人脸识别模型一般为图2-2,通过对比提取到的cnn特征作为判断的依据,而当深度学习与人脸识别二次结合,人脸识别走出了另一条全新的道路。深度学习可以在通过多次训练后,训练出一种类人脑的一种思维方式,只要样本数足够多的,理论上可以像大脑一般准确分析思考。他会根据多个数据集的结果,微调每个数据对于最后结果的判定占比。如图2-2-2,图像之间的数值就是欧式空间中的距离,该数据越低,证明两张照片为同个人的可能性越高,训练的样本数越高,照片之间的距离参数也会改变,趋近于真相。图2-2-1图2-2-22.2.1VGG模型最初VGG并不是用作为图像分类识别训练的神经网络,它是由牛津大学科学工程系发布,用来探究图像分类过程中网络深度是如何影响识别的准确率以及精度的。最初的VGG-16(VGG-Very-Deep-16CNN),从全称中我们也可以看出发布者对于VGG-16的研究深度标准之高,VGG不同于传统的卷积网络模型,他的卷积层与池化层并不是一一对应的关系,规定整个模型中有5个池化层,他们分别与一部分卷积层相关联,可以从图2-2-3中看到池化层的分配关系。VGG按卷积层的数量划分命名,最少的由3个全连接层+8个卷积层组成,命名为VGG11;最多则由3个全连接层+16个卷积层组成,命名为VGG19。图2-2-3当然,作为一个曾在ImageNet上大放光彩的模型,它并没有那么简单。它的结构设计也并不是一成不变,我们完全可以用全卷积网络的概念对他进行改造,将首个全连接层改为7x7其余的全连接层改为1x1。在VGG之前,没有其他的神经网络模型能够做到在突破10层的情况下,保证效果良好,不受影响。VGG虽然突破了网络深度,却没有彻底解决网络深度所带来的一系列问题。当网络层数过多以后,同样会出现梯度性能下降等问题。总的来说VGG在刚提出的时候也是受到推崇,但是随着时间的流逝,越来越多的更加优秀的训练模型被提出,VGG也就不那么耀眼了。2.2.2优图祖母模型祖母模型提出之初,就已经决定了要成为一个百宝箱,它并不特别指代一种深层的神经网络模型,它是一个具有相同结构特征的神经网络模型的集合。在不同的应用场景下,优图祖母模型可以提供不同的神经网络模型,完成所需要实现的效果。因此,也有人叫它优图祖母模型族。目前,最流行的深层神经网络模型(图2-2-4)从结构上划分一共有三种:1.单支型(如AlexNet,VGGNet);2.双分支型(如ResNet);3.多分支型(如GoogleNet)。直线型结构设计最为简单,但当网络深度过深会出现性能爆炸或性能消退等问题,同时由于结构单一,他也缺乏改造性。局部多分支型具有较强的计算能力和较高的计算效率,但其设计也最为复杂,设计所耗费的人力物力较多。结合以上两点,祖优图最终采用双分支型这种折中的架构来构建祖母模型族。双分支型本身具有很强的学习能力,也有许多采用该结构的训练集在比赛中获奖;其次他的结构设计较为简单,前期人力消耗可控,最大的特点之一就是识别能力与神经网络的深度是一个正相关的一个关系,这意味着我们在针对不同的应用场景的多个模型进行识别训练的时候,完全可以通过控制网络深度来应对不同的需求。为了满足用户的识别需求,一般会要求获取用户最大的数据集进行训练,以保证神经网络模型的可用性。图2-2-4祖母模型在近期也在识别流程上进行了一次较大的变动:流程的变更主要是由于迁移学习的提出,迁移学习是人工智能领域所提出,用来解决不同的处理场景下训练时长过长的问题,而神经网络模型完全可以通过迁移学习,减少训练所花费的时间。简单点来讲,就是将整个训练过程分为:1、预训练(pre-train);2、精细化调整(fine-tune)。针对人脸识别场景,咱们只要将已被训练完成的优图祖母模型针对新场景上的新数据进行精细化调整,就满足新场景的一个识别需求。2.3本章总结本章介绍了VGG以及优图祖母模型两种人脸识别模型,VGG和优图祖母模型。VGG是由牛津大学科学工程系发布,用来探究图像分类过程中网络深度是如何影响识别的准确率以及精度的。在研究过程中,人们用其进行识别训练,凭借着VGG结构清晰简洁的优点,取得了不错的成效。同时,通过使用多个小型滤波器代替正常的滤波器,获得了更好的性能,这也就印证了:通过不断加深网络结构可以提升性能。但是VGG对计算资源的要求是非常高的,由于使用了大量的参数,它比其他的深度学习模型需要占用更多内存。其中,大部分参数来自全连接层。但是,根据部分实验结果的效果看来,就算去除掉所有的全连接层,他的性能也没有太大的影响,这样就显著的降低了参数的数量。优图提出的祖母模型在我看来,是未来深度学习的一个主流。优图祖母模型的核心,就是通过大量的,各式各样的样本,来训练出一个庞大的数据集集合。该集合可以用于多处使用(如人脸识别、目标检测、动态跟踪、自动驾驶等),并且近年迁移学习提出让祖母模型族成型的可能性大大提升,进行基础模型的预训练,在特定任务上对模型进行精细化调整。这样一来,大大优化了祖母模型对于特定场景训练的流程,减少训练时长,可以完成更多的训练。目前,优图祖母模型也已经投入应用中,并且取得了不错的成果,我们可以在腾讯云的AI人脸识别产品中对第三代优图祖母模型进行测试。:动态人脸识别签到系统实现3.1实现思路首先,一个可以上线的签到系统最少要有以下三个功能:1、人像素材上传2、通过摄像头设备对比素材库进行识别3、保存签到成功的人像名单其中1、3我通过Python的一些自带库实现了,核心的识别功能我选择了github上的一个开源项目FaceRecognition,通过对其进行二次开发实现了动态人脸识别签到系统实现。3.2算法实现3.2.1环境依赖 根据FaceRecognition的开发文档,该项目的运行环境支持linux/树莓派,但是我的设备系统环境为win10,通过查找资料后,我找到了一个可以在win10上运行的安装方式:1、安装Anaconda2、通过Anaconda安装CMake3、安装dilb4、成功安装facerecognition3.2.2实现普通的人脸识别 想实现人脸识别,首先要解决的就是如何找到画面上的所有人脸。在人脸识别的初期,这个问题是第一个被提出的,一时间有出现了许多识别的算法。 根据不同的知识体系出发,大抵上可以分为人工智能、神经网络、图像处理、模式识别等多种识别方法,虽然出发点并不一致,但最终都是采用了特征脸方法来实现人脸识别。 特征脸方法利用分析法,将人脸图像分解并提取特征样本。它实际上就相当于将人脸化为一组组向量,然后将提取的特征样本与参考库中所提取的特征样本进行比对,根据匹配的特征样本数取最高来找到识别度最高的人脸。由于特征样本在返回时,还具有人脸的一定特征,因此我们也叫特征样本为“特征脸”。图3-2-1 从图3-2-1中我们可以看到,我们可以将一副人脸图像分解成一组权值向量,然后利用向量为单位找到距离最小对应的人脸图像的身份作为测试人脸图像的身份。这如同派出所使用的素描画嫌疑人画像的过程,以一个基础脸型为出发点,然后画出不同的眼睛、嘴巴等五官给目击者确认,逐渐拼凑出一张疑似嫌疑人的一张图像。电脑实现的过程大抵是一致的,只是他的五官是以特征样本的抽象形式体现的。 而在faceRecognition中,通过load_image_file()函数,可以把实现图片导入,而后只需要把导入的图片数据传入face_locations()识别图片中的人脸的位置,该函数的返回值为一个列表,其包含多个元组,代表着人脸的位置信息。接下来,我将展示演示所用到的图片素材:素材3.2.1实现的代码如下:importface_recognition
image=face_recognition.load_image_file("素材3.2.1.jpg")
face_locations=face_recognition.face_locations(image)
print(face_locations)让我们来看下执行的结果: 我们可以观察到,执行结果返回了六个元组,每个元组中的数据代表的正是每张脸的位置信息,四个像素级的位置点把人脸圈起来了。这样一样,我们也就成功的找到了所有的人脸。 接下来的问题,就在于如何进行人脸比对。而人脸识别的实现则是依赖“弹性图匹配”这种方法。弹性图匹配的思路是忽略人与人之间五官特征的角度和长度,更多的将关注点放在图像变换后的不变性,所以它还有另一个名字“橡皮泥几何学”。它以一个人脸拓扑概括所有的人脸,根据这个拓扑结构划分基准点。图3-2-2 每次进行识别,我们需要对识别图像人脸进行拓扑建模,获取特征向量。同时,读取素材库中已有的人脸所对应的特征向量进行比对,找到相似程度最高的一张图。然后以此图建立拓扑,进行更多特征向量的比对,进而找到测试人脸的身份。 在faceRecognition中,只需要将需要对比的两张照片所对应的编码作为参数传入face_pare_faces(),该函数会返回值的类型为boolean,该值为TRUE则证明大概率为同个人,为FALSE则大概率不是同一个人。该函数的判定阙值可以在传入编码时使用tolerance关键字加上阙值限制作为第三个参数进行修改,目前合理的阙值大概为0.73左右,可以尽可能的做出准确的判断。接下来,我展示下演示所用的素材:实现的代码如下:importface_recognition
known_image=face_recognition.load_image_file("素材3.2.2.jpg")known_image=face_recognition.load_image_file("unknown.jpg")
unknown2_image=face_recognition.load_image_file("unknown2.jpg")
lhf_encoding=face_recognition.face_encodings(known_image)[0]
unknown_encoding=face_recognition.face_encodings(unknown_image)[0]
unknown2_encoding=face_recognition.face_encodings(unknown2_image)[0]
results=face_pare_faces([lhf_encoding],unknown_encoding)
results2=face_pare_faces([lhf_encoding],unknown2_encoding)
print(results)
print(results2)执行的结果如下:我们可以看到,第一次对比的结果集为TRUE素材的选取一张为我高二时的相片、一张为我大三时的照片,经过五年时间的成长,依旧可以识别成功;而第二次对比的结果集为FALSE,素材的选取为明星吴彦祖,对比的结果也是正确的。 至此,已经成功实现了静态的人脸检测、识别的功能。3.3完善动态人脸识别签到系统3.3.1从视频流中取帧进行识别 在这个方面,我选用了opencv处理视频流流,之后通过获取视频流的每一帧通过3.2中的人脸识别相关代码进行识别,在原帧中圈出检测到的人脸并且在框中标出识别的结果,具体实现的代码如下:defaction():
video_capture=cv2.VideoCapture(0)
#引用素材库生成流
addpeople.Reading()
addpeople.change()#测试根据list生成流
known_face_encodings=addpeople.known_face_encodings#赋值
known_face_names=addpeople.known_face_names#赋值
#Initializesomevariables
face_locations=[]
face_encodings=[]
face_names=[]
process_this_frame=True
s=set()
arrivename=[]
whileTrue:
#Grabasingleframeofvideo
ret,frame=video_capture.read()
#Resizeframeofvideoto1/4sizeforfasterfacerecognitionprocessing
small_frame=cv2.resize(frame,(0,0),fx=0.25,fy=0.25)
#ConverttheimagefromBGRcolor(whichOpenCVuses)toRGBcolor(whichface_recognitionuses)
rgb_small_frame=small_frame[:,:,::-1]
#Onlyprocesseveryotherframeofvideotosavetime
ifprocess_this_frame:
#Findallthefacesandfaceencodingsinthecurrentframeofvideo
face_locations=face_recognition.face_locations(rgb_small_frame)
face_encodings=face_recognition.face_encodings(rgb_small_frame,face_locations)
face_names=[]
forface_encodinginface_encodings:
#阙值设置在这里
matches=face_pare_faces(known_face_encodings,face_encoding,tolerance=0.75)
name="Unknown"
ifTrueinmatches:
first_match_index=matches.index(True)
name=known_face_names[first_match_index]
face_names.append(name)
process_this_frame=notprocess_this_frame
#Displaytheresults
for(top,right,bottom,left),nameinzip(face_locations,face_names):
#Scalebackupfacelocationssincetheframewedetectedinwasscaledto1/4size
top*=4
right*=4
bottom*=4
left*=4
#Listidentifiedq
ifname!="Unknown":
s.add(name)
arrivename.append(name)
else:
pass
#Drawaboxaroundtheface
cv2.rectangle(frame,(left,top),(right,bottom),(0,0,255),2)
#Drawalabelwithanamebelowtheface
cv2.rectangle(frame,(left,bottom-35),(right,bottom),(0,0,255),cv2.FILLED)
font=cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame,name,(left+6,bottom-6),font,1.0,(255,255,255),1)
#Displaytheresultingimage
cv2.imshow('Video',frame)
#按Q推出ifcv2.waitKey(1)&0xFF==ord('q'):
print(s)
savelist.save(arrivename)
break
#Releasehandletothewebcam
video_capture.release()
cv2.destroyAllWindows()实现的效果如下:其中lhf为我上传的图片名,通过扫描素材库文件名获取。3.3.2实现上传素材、导出签到表通过selectPath读取素材的路径之后通过提交按钮对原素材进行素材提交,相关代码如下:defsubmit():
str=path.get()
addr2=str.replace('/',r'\\')
print(addr2)
f=open(addr2,'rb')
f_str=base64.b64encode(f.read())
f.close()
str=f_str
file_str=open('Materialbank\\%s.jpg'%TEXT.get(),'wb')
file_str.write(base64.b64decode(str))
file_str.close()将识别的列表进行去重之后保存在TXT文件中,实现了签到表的导出,相关代码如下:defsave(arrivename):
arrivename2=list(set(arrivename))
data=open("text.txt",'w+')
print(arrivename2,file=data)
data.close()3.3.3使用演示 运行项目,我们可以看到使用的UI界面(图3-3-1),填写完上传的资料后,可以通过路径选择按钮对想要上传的原图像进行上传(图3-3-2),上传的新文件的名字为资料的名字,后缀为JPG格式,完成素材上传后,点击打开摄像头后即可开始签到过程,需在摄像头前等待1~2s后在人像脸上标注出名字后(图3-3-3),完成签到。等到所有成员完成签到后,按“Q”退出摄像头界面后,系统会将成功签到的人员列表存放在根目录中,名字为text.txt(图3-3-4),至此整个程序的演示结束。图3-3-1图3-3-2图3-3-3图3-3-43.4本章小结本章主要展示了我在开发过程中的思路以及所利用的一些demo测试,并最终实现了一个简单的人脸识别项目。程序是利用python进行开发,使用了facerecognition项目。从最初的环境搭建到整个开发过程中,所遇到的一些问题以及解决方案都在本章中有体现。在视屏处理方面,我使用的是opencv,利用截取关键帧来实现从视屏流到人脸截图这种形式的转变,最终利用人脸图进行识别并返回结果,标出人脸身份。整个流程思路好还是比较清晰的,最终实现的效果比较简陋,但基础的功能也还可以。由于素材库缓存的原因,该程序对内存资源有一定的要求,因此如果有复现的需求,需要保证内存在8G,并且素材库素材不可过多;如果有大型应用场景,建议采用分布式的架构,将素材分布于不同的节点上,这样既能保证性能又能满足使用的需求。目前,市面上的大型IT企业都有自己的人脸识别产品,并且已经投入使用了。我的程序无法与他们相提并论,但是对于初学者来说,可以经由这个项目入手,对于理解人脸识别或者是深入学习更多的物品识别等会有一定的好处。开发所利用的Demo以及项目使用的代码在本章中都有展示,UI界面较简陋,可以自行改进。第四章:总结与展望4.1论文总结人脸识别技术是一种生物识别技术,自二十多年前的科幻剧中就有了它的出现,相对于其他生物识别技术,他的效果更直观、使用更简便,并且相对于物理密钥或者是电子密钥来说,他不具备有被盗窃的可能性。但人脸识别技术在提出之初也被种种问题所环绕:1、相似的人脸是否会解锁;2、拿着图片解锁;3、会不会因为化妆或者年龄变大而无法解锁等。这些问题截至目前,也基本上已经解决了。因此,现阶段的研究方向更多的是从两方面出发:1、提高识别的精准度;2、在复杂环境下保证识别可行性。目前的检测方法有许多,但是整体的安全等级还是不足以满足特定场景的需求,因此我们需要将更多的识别因素加入到人脸识别中,如:时间,空间等。更多的因素的加入会导致资源占用更高,但是随着云计算的发展,计算资源并不是一个难以解决的问题,通过深度学习模型来训练一套安全系数更高的人脸识别体系。我们的人脸识别系统会越来越智能,我们可以通过人脸识别完成更多的身份管理,在未来的世界中,我们不再需要一个身份证,脸就是我们的通行证。本文介绍了VGG模型,现在我们下载VGGface模型中,已经具备有一个较为成熟的识别体系了,在经过特定图片集的训练后,其的识别准确率也不低。但是我们在使用时,还是应该根据自己的使用环境,对其进行适应性训练,这样可以满足我们更高的精准度需求。本文还介绍了优图祖母模型族的宏图,当前优图祖母模型已经第三代了,满足大多数场景下的应用了,我们可以在腾讯云的AI栏目里测试祖母模型,感受百宝袋的各种智能算法。本文使用了一个简单的开源项目face_recognition,实现了一个动态识别人脸的签到系统,通过摄像头输入视频流,以帧为单位与素材库中的图片进行对比,当匹配几率高于0.75时,则系统认证为同一个人。在素材库不多时,该系统在一定程度上是可信的。但是一旦素材库过多,就会导致识别结果可信度降低。因此,在人脸识别的道路上,该项目还做不真正的普及使用,但是在机器学习的帮助下,我相信有朝一日可以真正的实现智能化识别人脸。4.2展望本文通过探讨传统目标检测和基于深度学习的人脸识别算法展开,在开发过程中学习到了不少的东西,但程序还是存在不少的缺点,为了解决这些问题,今后将从以下几个方面对程序进行改进:1、寻找和替换更合理的算法,改善识别的精准度以及速度。 2、尝试替换视频流的输入格式,以2S为间隔,同时将在该区间内的所有帧与素材库进行对比,当所有对比的结果加起来达到某个阈值时,才认为两者匹配。这样一来,可以大大加强识别的可信度。3、设计合理的UI界面,提升用户的视觉效果体验。随着云计算等计算平台的发展,计算资源已经不再成为难题,未来会有更多优秀的识别算法被提出,一“脸”行天下,就在不远的未来。参考文献基于深度学习的人脸识别技术研究钱程基于神经网络学习的统计机器翻译研究杨南基于局部特征和进化算法的人脸识别李根优图祖母模型的「进化」/jjjndk1314/article/details/80579552VGG卷积神经网络模型解析/gloomyfish/2105427计算机到底是怎么识别人脸的腾讯科技致谢四年前,我对大学迷茫而恐惧;四年后,我如红日初升,意气风发;四年前,觉得求学异乡是离亲别友;四年后,我和志同道合的伙伴谈笑风生;四年前,我认为小安是福、随遇而安;四年后,我身似山河,敢问天地试锋芒;斗转星移,大学四年似乎改变了一切。唯一不变的,是我对“改变”的追求。一谢师长,言传身教。大学四年,学的东西杂且多,虽无法做到样样精通,时至今日也敢于出口说自己大都有所涉猎。对我影响最大的是赵元成老师,是他引领我接触到云计算这个行业,并在我蹒跚学步的过程中引领我前行。时至今日,我也决定在这个行业继续往下走。恩师于我,授我渔鱼,高山景行,师之范者。二谢亲友,予我欢情。在我最不懂事的时候,家人的鼓励让我我成为一名大学生。我曾以为大学也不过是求学的四年,与六年小学三年初中三年高中并无大区别。但是,经历过才知道,大学四年求学并不是最重要的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水泥基础施工方案
- 桥梁排水施工方案
- 管道拆除施工方案
- 1994年赴美考察散记
- 2025年村委会林地承包与木材加工销售合同
- 二零二五年度实习生实习期间实习成果转化与应用协议
- 二零二五年度测绘成果应用安全保护协议
- 二零二五年度风投优先股投资合作中的知识产权保护合同
- 二零二五年度股权投资顾问服务创新条款
- 2025股东股权协议:新能源汽车动力电池研发与生产
- 全脑血管造影术的护理查房
- 直系亲属股权无偿转让合同(2篇)
- 内镜下内痔治疗
- 2025年四年级下学期语文教学计划
- 消防工程施工组织设计方案
- 电子教案-电工基础
- 施工单位安全员述职报告
- 2024年国家公务员考试《申论》真题(地市级)及答案解析
- 批判性思维能力测量表(CDTI-CV)-彭美慈
- 《现代家政导论》电子教案 4.1模块四项目一家政教育认知
- 一年级数学个位数加减法口算练习题大全(连加法-连减法-连加减法直接打印版)
评论
0/150
提交评论