基于Python的人脸识别系统的设计_第1页
基于Python的人脸识别系统的设计_第2页
基于Python的人脸识别系统的设计_第3页
基于Python的人脸识别系统的设计_第4页
基于Python的人脸识别系统的设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要人脸识别是本世纪的一个热门技术话题之一。随着科技飞速发展。人脸识别技术已渗透进社会中的各个领域,例如:军事、医疗、教育、娱乐等。类似于人脸识别支付、人脸识别登陆、人脸识别认证等功能,我们几乎每天都在使用。本设计主要运用Python语言、Opencv(计算机视觉库)、Tkinter(Python的TkGUI工具包)制作的一个含有人脸识别的一个信息系统。其工作原理为:以含有人脸的图片为素材,从图片中提取人脸数据的特征值作为识别的标准后,与人脸系统库中人脸比对,从而识别出图片中的人物,并执行与该人物相关的一系列功能。关键词:人脸识别OpencvGUI检测AbstractFacerecognitionisoneofthehottechnicaltopicsinthiscentury.Withtherapiddevelopmentoftechnology,Facerecognitiontechnologyhasbeeninvariousfieldsinsociety,suchasmilitary,medical,education,entertainment,etc.Similartofacerecognitionpayment,facerecognitionlogin,facerecognitionauthenticationandotherfunctions,weuseitalmosteveryday.ThisdesignmainlyusesthePythonlanguage,Opencv(Thevisionlibraryofcomputer),andTkinter(PythonTkGUItoolkit)todesignaninformationsystemcontainingfacerecognition. Workingprinciple:Itusesthepicturecontainingthefaceasthematerial,extractsthefeaturevalueofthefacedatainthepictureastherecognitionstandard,andthencomparesitwiththefaceinthefacesystemlibrary.Thus,thepersoninthepictureisrecognized,andperformaseriesoffunctionsrelatedtothecharacter.□□Keywords:FacerecognitionOpencvGUIDetection广东东软学院本科生毕业设计(论文)目录TOC\o"1-3"\h\u第一章绪言 第一章绪言1.1选题目的与意义如今时代发展飞速,从汽车到火车,再从飞机到火箭,科技的进步令人瞠目结舌。从农耕社会到现在的信息社会,我们的生活也逐步迈向小康。但凡事都有其两面性。在科技进步下,带来了信息化的社会,但就是在这个信息化的社会下,防止信息的泄露也演变成了国际性的难题之一。据不完全统计,全世界80%以上的人,他们的个人信息都保存在服务器中;92%以上的企业信息都保存在服务器主机内。出于安全性的考虑,国家机密资料更是有很大一部分都需要用加密硬盘进行保存。这些数据可充分体现出人们对信息安全性的重视。如今,人们都喜欢使用电子设备存储信息。第一、现在的电子设备越来越小巧,可随身携带;第二、电子设备体积虽小却能装载下大容量的东西;第三、电子设备不仅存储空间大,其存储的内容更是多种多样,不但可以存储文本、图片、视频,还可以存储三维模型、软件等。真因为电子设备的存在,同时也大大提高了信息在人与人之间传递的速率。从另一个方位思考,可发现这些信息同时也蕴含了极高的价值,例如个人的隐私信息、公司的机密信息、国家的机密信息等,所以,人们都很希望这些信息得到严密的保护,希望信息能够层层加密,就像是保险箱一样。也正因人们的需求太大,大大促进了如今的信息技术行业。如今的加密方式的种类也很多,我们使用得最多的就是密码加密,这是利用了混淆技术原理[8],把一些可识别的信息经过某些手段处理后,变成无法识别的信息。这种密码加密方式仅适用于一些使用率较少的秘密信息,对于一些使用率较高的秘密就显得不太合适,因为这些秘密每天都要被使用,所以这样每天反复的输入密码,会显得十分繁琐,同时还加剧密码泄露风险。总而言之,类似于密码保护等身份识别工具已经无法满足社会的要求[15],研究新的身份识别工具是一个必然的趋势。本次毕业设计选择了人脸识别,以保证用户的真实性,从而进一步提高管理效率以及管理水平。人脸识别技术早在20世纪60年代已有很多科学家在研究了。但是碍于当时的计算机处理速度,人脸识别这一技术才没办法发挥它的真正的“实力”。在80年代后,计算机的硬件方面大大提高,其处理速度方面也大大提升,人脸识别技术又被广大科学家重新研究,因此,人脸识别有了重大突破,进入真正的自动识别阶段。这一技术经过一段时间的成长后,在90年代后期,便涉及到各个领域,例如军事、教育、医学等。从人脸识别的发展历程上可以看出,人脸识别技术的发展饱经风雨,但是也影响不了它飞速发展的速度。从20世纪60年代至今不过就是几十年的时间,人脸识别技术已从简单的二维平面模型识别到现在的三维立体模型识别、多姿态识别等。人脸识别技术在学术上的解释是:人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。为什么能通过人脸识别某个人的身份呢?是因为每个人脸都有一个共性——都是由眼、鼻、口组成,并且它们的大致位置是不变的。但是在这些共性中又存在许多的不同点。例如:有些人是双眼皮有些人,是单眼皮;每个人的瞳距不一样;每个人嘴巴大小不一样;每个人鼻子的大小不一样等。就算是双胞胎都是会存在些许差别。人脸识别技术就是根据这些共性与差异辨别出身份的。1.2研究现状人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术[16]。并且已涉及生活的各个领域,例如:军事、教育、购物等。其发展具有很大的潜力,就算在这个技术还未成熟的时候,在一些科技电影中就对这一项技术描述得淋漓尽致,也对其进行“华丽的预言”。正因这一技术的潜力极大,所以,我国也出台了许多相关政策支持这一技术的研发。2015年以来,我国相继出台了《安全防范视频监控人脸识别系统技术要求》、《信息安全技术网络人脸识别认证系统安全技术要求》等法律法规,为人脸识别技术在社会的发展,以及在各个领域的普及奠定了非常重要的基础[1]。在2017年的人工智能被写入全国政府报告的同年7月,国务院发布了《新一代人工智能发展规划》,同年的12月,工信部出台了《促进新一代人工智能产业发展三年行动计划(2018-2020年)》[1]。由于人脸识别也属于人工智能的一部分,所以在这几个出台的规划中,也对人脸识别的有效检出率以及正确识别率作出了一些标准规定。显而易见,人脸识别的发展是必然的,是这个时代的选择。人脸识别最早在20世纪60年代就已有科学家在研究了,只不过是受制于当时的科技技术不够先进,计算机处理速度缓慢,才导致人脸识别这一技术迟迟无法面向社会。后来计算机的发展渐渐有了起色,人类也因此进入了计算机的信息时代,计算机的各个方面都突飞猛进地增长,有了良好的硬件基础后,人脸识别这一技术也伴随着计算机的增长而逐渐走向成熟。人脸识别的整个发展过程可以分为五个阶段,它们分别是机械识别阶段、半自动化识别阶段、非接触式识别阶段及互联网应用阶段。与其他生物识别方式相比,人脸识别优势在于更具有自然性、具有不被察觉性等特点[16]。但与此同时人脸识别的研究难度也会比其它生物识别方式高。第一、人的脸部异变性比较大,换句话说就是外形的容易变化,容易影响识别的准确率。第二、环境的光度也会影响识别的准确率,由于如今的人脸识别大多数还是使用图像处理的方式识别,光的角度对于图像人脸的识别精确度的会有一定的影响。第三、人脸包含了许多姿态,例如开心、难过、憔悴、笑等,也给人脸识别造成了更大的研究难度。人脸识别其优势虽明显,未来必将会成为生物识别的主导技术之一,但其对于技术的要求也非常高。如果人脸识别在精度问题上能够得到有力的解决的话,人脸识别估计会替代指纹识别,成为市场应用规模最大的生物识别技术之一。从申请专利数量来看,2007-2017年,我国人脸识别专利申请数量总体上呈上升的趋势,尤其是2014年后,计算机人脸识别专利申请数量大幅增多,到2017年,人脸识别专利申请数量达到2847项。从公开专利数量来看,2007-2017年,我国人脸识别专利公开数量总体上呈稳定趋势。2017年,我国人脸识别专利公开数量为2698项,达到近年来最大值;截至2018年7月,专利公开数量为2163项。从专利数据上可知,人脸识别技术的发展趋势一直在快速增长。同时也说明了,人脸识别技术还可能继续成为下一个世纪的热门技术之一。在市面上的与人脸识别技术相关的书籍、文献、资料也不少,所以当前人脸识别技术的研究现状是非常不错的。1.3主要内容本文将以设计人脸识别系统为主,对人脸识别技术进行深度的研究、学习。在设计开展之前,首先介绍一下人脸识别的相关知识、具体原理、以及算法知识。人脸识别算法有许多种,本文将不一一具体说明。在人脸识别算法知识中,会以阐述几何特征人脸识别算法为主。几何特征人脸识别算法也是本次设计的核心。除此之外,本文还会着重对以下几点进行了较为深入的探讨:(1)采集人脸图像过程(2)人脸检测过程(3)人脸信息对比过程第二章人脸识别的相关理论和技术2.1脸部识别原理计算机识别人脸与人识别人脸的方式存在很大的差异。人是通过肉眼的视觉影像获取到这个人物的脸部信息,进而识别出这个人的身份信息。如果是个双胞胎的话,还可以通过这个人的肢体动作感知来区分。但对于计算机而言,就会显得相对困难,因为计算机不像人一样有感知,计算机需要将这些信息转化成数据,再对这些数据进行一系列的处理后,才能达到识别的效果。所以,人脸识别会涉及许多领域的知识点,其中最主要的就是图像处理。计算机需要通过大量数据才能识别出一个人脸。在这个地球上一共有70多亿人,因此一个精确的人脸识别背后需要大数据的支撑。在人脸识别算法中,有一个基于卷积神经网络人脸上识别算法,它拥有极其庞大的人脸库,涉及到大数据、深度学习、以及人工智能等相关知识。经过多重考察后,最后选用了Opencv作为设计的工具。因为利用Opencv对图像操作非常方便。Opencv可对图像进行剪辑、加载、拷贝等操作,还可以对图像进行基本的处理、例如去噪点、色彩处理等。不仅如此Opencv里还有摄像头的功能,方便本次设计制作以视频流为基准的人脸识别。而且OpenCV还可以进行一些线性代数上的计算,以内置函数模块实现计算特征值、特征向量、特征矩阵等。OpenCV还提供了图像连通域、霍夫变换、图像轮廓处理、连通分支的分析、多项式的逼近、图像的模板匹配、曲线拟合、狄劳尼三角化等目标识别,以及多种特征提取方法、HMM模型[4]。人脸识别的过程主要分为采集人脸图像、人脸检测、人脸信息比对三个过程。2.1.1采集人脸图像采集人脸图像的渠道有很多种(下面列举三种常用的):①利用电子机器摄像头拍摄②互相网上的人脸识别库③扫描仪采集对象是一些含有人脸的2D图像、3D图像、视频等。不同的类型的图像,识别的方式也会有所不同。例如:3D人脸图像识别就有两种,一种是在三维的基础上,另一种则是在2D图像的基础上。3D图像识别之所以可以在2D图像识别的基础上识别,是因为3D图像只是比2D多出一个维度的数据,所以可以通过处理2D图像再加上一个深度数据的方式来识别3D的人脸图像。以目前的调查数据显示,3D的人脸识别准确度会比2D的人脸识别准确度会更精准。

2.1.2人脸检测人脸检测是人脸识别的前提和基础[12]。这个过程主要检测的是图像中是否含有人脸。由于人的脸部器官之间大致位置关系是固定的,并且这些脸部器官也会有所差异,例如瞳距、大小、角度等。可以通过这些共性与非共性的集合,在人脸图像寻找出一个特征点,通过这些能够标识人脸的的特征点数据追踪到人脸图像中的人脸位置,人脸图像是由多个像素点组合而成,计算机一般会用数据去记录每个像素点,对这些像素点进行分析之后就可以得到人脸数据特征矩阵,从而得到特征值与特征向量等数据。如今的人脸识别技术已成熟,所以市面上已有不少人脸检测工具,Opencv就是其中之一,在人脸检测这一模块可以使用OpenCV中的人脸模型去定位人脸位置之后再对人脸进行进一步的解析。但需要注意,在图像检测中,一般会先使用灰度处理过图像后,再进行人脸检测,因为这样能够提高人脸识别的性能。当然,彩色也是可以的。本次设计将使用的是灰度处理过的图像进行识别。人脸检测这一部分主要有图像的预处理、特征提取与选择两部分。①预处理影响图像的因素会有很多,例如:光线亮度、拍摄角度等。当图像被影响了之后就容易产生许多噪点,这些噪点会影响我们人脸识别的各种检测。所以图像处理是很有必要的。一般是把图像中的噪点去除掉,还有把图像灰度化。②特征提取特征提取是整个人脸识别里面很关键的一部分。很多识别方法都是以特征点为参照的基准才能达到检测/识别的效果。在OpenCV里,含有许多器官的特征值,利用这些特征值可以定位出图像中是否含有人脸,如果含有人脸的话,就会返回给系统其上下左右四个点的位置。再利用这四个点就找出人脸的具体位置了。2.1.3人脸信息对比(人脸识别)仅仅识别出人脸还不够,还需要识别出具体的人物。所以就需要人脸信息对比。人脸识别肯定离不开脸部识别算法。在开发设计过程中,可以自己去设计属于自己的人脸识别算法,但这样设计难度也会随之增加,也可以利用开源的人脸识别库,调用其中的脸部算法函数,这样会方便自己的初次学习,而且自己写的脸部识别算法还可能不如别人的算法好,导致系统设计缺陷多。而且人脸识别的算法质量对人脸识别的准确率会有一定的影响。人脸识别的算法有很多,主要的就是几何特征识别、以统计学为原理的PCA识别算法、神经网络识别算法、局部特征算法、弹性匹配算法等。本次人脸识别设计采用的算法是几何特征识别算法,利用OpenCV与face_recognition的结合制作的人脸识别系统。这部分主要检测图像中的人脸到底是谁。如果要应用在市场应用上,在这个过程中需要建立一个人脸数据库。在图像检测完毕后,将图像中的人脸与人脸数据库的人脸进行比对,从而识别出这个人脸。一般人脸信息相似度不会设置为百分之100,脸部表情也会影响人的脸部的相似度,一般设置相似度为60%左右。2.2人脸识别算法在众多人脸识别算法中,特征分析也是人脸识别的核心之一。经过多个的人脸模型的训练后,所有的特征点组合起来后就能建立出人的脸部模型。通过这个脸部模型就可以定位到人脸图像中的人脸位置。但是还不能识别出这个人脸到底属于谁,还需要对识别出来的人脸作进一步再分析,以某一相似值为标准,与人脸库中的人脸信息作对比。其中,主要的识别算法有:几何特征识别法、局部特征识别法、特征脸识别法(PCA)、神经网络识别法(CNN)、弹性匹配识别方法、线段Hausdorff距离(LHD)识别法、支持向量机(SVM)的识别法[2]。2.2.1几何特征识别法基于几何特征的提取方法主要是人脸的主要器官进行定位[3]。由于脸部器官的结构、大小等的不同,所以可以对脸部以几何进行描述,构成脸部的几何特征。这些几何特征主要包括特征点的位置、特征点之间的距离、特征点之间的角度等[3]。通过对这些特征点进行解析,利用特征点与特征点之间的距离构造出特征向量[16],再利用该特征向量进行人脸识别[11][15]。本次设计的特征值提取是基于灰度图像的一个特征值提取。假设输入的图像g(x,y),其大小为e*f。图像g在点(x,y)的灰度值I(x,y)。那么,该图像的V(x)垂直积分投影函数,H(y)平积分投影函数如下[5]:(公式2-1)(公式2-2)垂直积分投影函数是指输入图像的一个垂直区域的灰度值之和,它表示图像的灰度值在垂直方向上的变化。水平积分投影函数则是指输入图像水平区域的灰度值之和,表示图像的灰度值在水平方向上的变化。这是一个经过灰度处理后的人脸图像(如图2.1):图2.1灰度处理后的人脸图像其垂直积分投影函数如下图所示:图2.2垂直积分投影函数其水平积分投影函数如下图所示:图2.3水平积分投影函数像素点越暗,其灰度值就越低。相反,像素点越亮,其灰度值越高。根据垂直积分投影函数与水平积分投影函数,可以定位出人脸部的眼睛位置。因为人的眼睛一共有两个,并且具有对称性,所以在水平积分投影函数的两个波谷就是眼睛的位置的。紧接着就是定位出鼻子的位置,鼻子在两个眼睛的中间,并且灰度值比较高,也就是灰度值最大的那个点,就是脸部的鼻子的特征点。紧接着就能定位出嘴巴的位置,就是在积分函数投影的灰度值比较小,并且在眼睛附近的地方。每个脸部器官都取3个特征点,共12个,并且构造出其标准特征向量。2.2.2特征脸识别法(PCA)PCA(PrincipalComponentAnalysis)方法也就是主成分分析法。该方法是一种以K-L变换为基础的统计分析方法[5]。每一个人脸都是由许多成分组成的,例如:痘痘,皮肤,黑色素等,在这些成分中有些成分是主要的,例如:眼睛形状,嘴巴的形状等,并且这些主成分组合起来可以唯一标识出特定的人,在这种情况下,就可以不加以考虑除了主成分之外的元素,这样可以大大减少程序的运算量。在识别人脸的过程中,首先要把主要人脸部分截取出来,再进行识别。截取出来的人脸图像可以看作一个高维度数据的产物,通过对这个高维数据进行分析得到一个低维数据,方便程序计算。虽然在这个过程中图像存在细微的亏损,但是其主成分是不发生改变的。利用这些主成分特征值与现在的人脸对比,进而达到识别的效果。在这一算法中,图像训练是这一算法中很重要的一部分。多个低维数据,可以反推出一个标准的新的人脸图像(如图2.4),根据这个图像就能准确得识别出当前人脸对应人脸库中的哪个人脸,进而达到识别的效果。图2.4反推的新的人脸图像PCA的主要步骤如下:先把人脸数据样本截取出来。将人脸图像的高维图像矩阵进行排序、计算,得出低维的数据矩阵。计算公式如下[5]:(公式2-3)紧接着计算出其协方差矩阵,公式如下[5]:(公式2-4)将计算出来的K个最大特征值与其对应的特征向量进行组合,变成新的变换矩阵,接着采用K-L变换式对计算出来的变换矩阵进行计算,就可以得到该图像的低维特征向量。最后利用这些低维数据反推出新的图像投影到子空间中,就可以得到该人脸的人脸模型,利用这个模型的数据就可以达到人脸识别的目的。2.2.3线段Hausdorff距离识别法(LHD)心理学研究表明,人在识别类似素描的边缘图上的速度和准确度丝毫不比识别灰度图的能力差[13]。LHD识别就是基于人脸图像的灰度图轮廓,识别的是两个线段集合之间的距离,通过计算Hausdorff距离进行识别两张人脸之间的相似度[14],再根据相似度的大小来判断是否为同一个人。由于线段集之间的线段不存在对应关系,所以,LHD识别对微小变化的处理远比其他识别算法要好,但是其缺点是在大表情下的处理会存在较大的缺陷。在本次设计中没有用到此算法。2.2.4支持向量机(SVM)的识别法支持向量机(SupportVectorMachine,SVM)目前是CorinnaCortes和Vapnik等人在研究统计学习理论的基础上提出的新的方法[6][10]。SVM算法主要分为线性与非线性两种方法,在进行识别时基本上不受样本的质量与数量的影响[9]。通过在训练集合里提取出特征向量值,结合一定的算法得到结果。在本次设计中没有用到此算法。2.3本章小结本章主要概述了人脸识别的具体过程和不同人脸识别算法的原理。人脸检测是所有算法的前提、基础。一般情况下,都是检测出人脸位置,以该图像区域为基础进行人脸识别。不同的人脸算法的依据也是不一样的,例如:PCA识别是依据统计学的,线段Hausdorff距离识别是依据心理学的某些原理。不仅如此,由于原理的改变,其运算的时长也不一样,所需的空间也会不一样。综上所述,要想设计出一个性能较好的人脸识别系统,必须完善其人脸识别算法,可通过研究不一样的算法,综合其优点改善。第三章人脸识别系统的软件设计3.1人脸识别的算法设计本次设计尝试了2种人脸识别方法。一种是PAC算法,另一种几何特征算法,这两种算法都有其优点和缺点,最后经过多次考量之后,决定选择用简单的几何特征算法。因为PAC需要训练大量的人脸图像训练样本,经过统计、分析之后,得到一个人脸模型,再由这个人脸模型与当前人脸对比,才识别出人脸。这个过程相对复杂,导致最后在嵌入进窗口界面的时候,容易出现卡顿严重,所以最后选用的是几何特征识别的方式。本次人脸识别系统设计是主要基于Opencv、face_recognition两个库。几何特征识别流程(如图3.1):图3.1几何特征识别流程PCA算法识别流程:在用PCA识别算法中,可使用sklearn模块进行计算,这样会大大提高识别的效率。①降维过程(如图3.2):图3.2降维过程②训练与识别流程(如图3.3):在用PCA识别算法的时候,可使用sklearn模块进行计算,这样可以大大提高识别的效率。图3.3训练与识别流程(1)PCA识别样本训练的部分代码:#获取训练集train_face,train_face_number,test_face,test_face_number=loadDataSet(3)#PCA训练训练集,用pca将数据降到30维pca=PCA(n_components=30).fit(train_face)#返回测试集和训练集降维后的数据集x_train_pca=pca.transform(train_face)x_test_pca=pca.transform(test_face)#逻辑回归训练classirfier=LogisticRegression()lr=classirfier.fit(x_train_pca,train_face_number)#保存模型joblib.dump(lr,'lr.model')#计算精确度和召回率accuray=classirfier.score(x_test_pca,test_face_number)recall=accuray*0.7(2)PCA识别的部分代码:#预测的人脸predict=img2vector(string)#加载模型LR=joblib.load('lr.model')predict_people=LR.predict(pca.transform(predict))string1=str("编号:%s精确度:%f召回率:%f"%(predict_people,accuray,recall))3.2软件功能的设计本次人脸识别系统的功能主要以登陆为主,分为密码登陆与人脸登陆两个部分。密码登陆部分流程(如图3.4):图3.4密码登陆部分流程人脸登陆部分流程(如图3.5):图3.5人脸登陆部分流程3.3软件功能的实现详细代码见附录。第一步:环境配置下载PyCharm,配置好python3.6的环境。安装opencv库、tkinter库、face_recognition这些库的环境安装相对复杂,需要的时间会比较长。第二步:各个子模块准备(人脸定位、人脸识别、界面设计、摄像头)人脸定位子模块:利用opencv库加载一张含有人脸的图像,将图像里的成分进行解析,利用人脸器官的特征值,定位出人脸的大致位置后,对图像进行标记,最后显示标记过的人脸图像,达到人脸定位的效果,具体的人脸定位过程(如图3.6)。图3.6人脸定位过程人脸定位的部分代码与注释:#1.加载人脸模型face=cv2.CascadeClassifier('alt.xml')#2.调整图片灰度(灰度可以提高性能)gary=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)#3.检查人脸faces=face.detectMultiScale(gary)#标记人脸for(x,y,w,h)infaces:#里面有四个参数1.写图片2.坐标原点3.识别大小4.颜色/线宽img=cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),10)运行效果(如图3.7):图3.7运行效果人脸识别子模块:将定位出的人脸图像进行解析,得出一个人脸编码数据,这些数据对应的是人脸的器官的特性,以数据的方式记录脸部器官的特性。定位出来的人脸与另外一张人脸图像的人脸信息进行匹配,由于各种外界因素,两张图片中的相似度不可能是100%,一般60%左右即可,为了确保识别的精确度,本次设计是70%。本次设计可以采用数据库的方式对人脸数据进行装载。人脸识别部分代码与注释:#对图片中人脸进行编码me_face_encoding=face_recognition.face_encodings(me)[0]he_face_encoding=face_recognition.face_encodings(he)[0]#准备人脸库的人脸编码know_face_encoding=[me_face_encoding,he_face_encoding]#准备人脸库中人脸对应姓名#know_face_names=['me','he']#发现图片中当前图像中的人脸位置locations=face_recognition.face_locations(img)face_encodings=face_recognition.face_encodings(img,locations)for(top,right,bottom,left),face_encodinginzip(locations,face_encodings):#比较人脸matchs=face_pare_faces(know_face_encoding,face_encoding)name='unknow'formatch,know_nameinzip(matchs,know_face_names):ifmatch:name=know_name运行效果(如图3.8):图3.8运行效果界面设计子模块:利用tkinter库设计登陆界面、人脸识别界面、以及软件主界面。摄像头子模块:利用摄像头捕获图像,把每一帧图像都进行人脸识别处理。③子模块组合摄像头子模块+人脸识别界面:在这个过程中,识别的算法越复杂,视频的流畅度就会越低。根窗口与子窗口之间的关系处理不当,容易造成视频模块无法嵌入。摄像头子模块+人脸识别界面+人脸识别:本次设计采用的是几何特征人脸识别,这一算法的识别运算量虽少,但是也会降低了视频的流畅性。运行效果(如图3.9):图3.9运行效果3.4本章小结本章主要通过具体流程,生动形象地阐述人脸系统设计开发的全过程,在设计开发期间,针对不同的模块进行了合理的改善。特别在子模块的组合过程中,由于嵌入在一起会出现卡顿严重、某些模块无法嵌入到界面等问题,寻找了各种各样的解决办法才得以解决。所以在设计过程中需要特别注意。第四章功能测试和系统调试4.1人脸识别系统的功能测试与结果密码登陆功能测试:①账号不存在运行效果(如图4.1):图4.1账号不存在运行效果②账号存在、密码错误运行效果(如图4.2):图4.2账号存在、密码错误运行效果③账号存在、密码正确运行效果(如图4.3):图4.3账号存在、密码正确运行效果人脸登陆功能测试:①人脸登陆界面(如图4.4)图4.4人脸登陆界面②人脸登陆测试(如图4.5):图4.5人脸登陆测试4.2实验结果测试与对比经过多次的测试对比,该人脸识别功能已达到实现的效果,但是识别的精度还有待提高。经过研究多种人脸识别发现是人脸识别算法的问题。若想达到更精确的效果,可尝试换一种新的人脸识别方式。在测试过程中,资源释放不到位、电脑配置不够高,导致程序的人脸识别部分的运转时长不高。该程序还有提高的空间。总结与展望课题工作总结本次论文主要详细描述了人脸识别的过程,以及人脸识别的两种算法,几何特征识别与PCA识别。本想在设计中加入数据库,由于时间流逝的速度之快,已经到了毕业设计的期限的尾声,就没有加入进去了。在这两个多月的学习制作中,本人从中学习到了许多知识,特别是对于人脸识别这一模块学习。在这段时间里,阅读、研究过许许多多的文献、书籍,备受感触。人脸识别实现起来的难度并没有想象中那么大,但这仅仅是因为本次设计采用的是简单的识别方式,这样的识别效果特别差,达不到提高安全性的效果,离研究目标还有一定距离。本次设计的成品并不成熟,还需要加以完善。要想利用人脸数据保护资料,对人脸识别算法的学习还需要更深一步。虽然完成了本次毕业设计的制作,但是对于本次作品本人并不满意,无论是美观上、还是功能上,还存在很大的漏洞。对人脸识别的算法学习还未达到预期的效果,对数据处理、分析的能力还不足。所以人脸识别算法还需要继续花费时间研究,本次作品还需要进行改善。在这段时光里,遇到了非常多的难题。例如环境搭建不成功、界面模块嵌入不成功、识别失误等。本次设计所用到的环境要求比较高,每个工具依赖的环境也比较复杂,在搭建环境这个过程中,花费了大量的时间。在制作界面的过程中也困难重重,本次作品是本人用python做的第一个项目,许多东西都是边学边做的,但很幸运的是,本人的导师、师兄都很热心地协助,并解决了问题,也正是因为有他们的在背后默默的支持,本人才更加有热情、动力去学习。未来展望在未来的一段时间里,本人将继续对人脸识别进行更深一步的学习。在这段时间里,已对人脸识别这一技术花费了大量的时间才有一定的了解。并不想就此放弃之前的努力,继续坚持学习下去,或许能被本人发现彩虹呢!无论以后的学习有多困难,都要坚持学习下去,让自己每天进步一小步。古人云:滴水成河、粒米成箩。就算如今的知识量薄弱,但经过时间的洗涤,一定能得到很大的进步。参考文献[1]李夏风.人脸识别市场的发展现状与变化[J].中国安防,2020(Z1):39-42.[2]艾英山,张德贤.人脸识别方法的综述与展望[J].计算机与数字工程,2005(10):24-27.[3]曹海燕.基于几何特征的人脸识别算法研究[D].曲阜师范大学,2015.[4]卜秋月.基于OpenCV的人脸识别系统的设计与实现[D].吉林大学.[5]黄泉龙.基于PCA的人脸识别研究[D].西安电子科技大学,2012.[6]李艳;张琛;倪丽萍;何畏;潘莉.基于分形维数权重的大学生心理资本分类研究.合肥工业大学.2015[7]汪勉;赵景秀;韩君君;程洁;赵娟;曹曼曼.基于快速Hough变换检测圆的人眼精确定位方法的研究.电子技术杂志,2008[8]卢开澄.计算机密码学[M].清华大学出版社,1990.[9]徐金梧.冶金生产过程质量监控理论与方法.北京冶金工业出版社,2015.05[10]李振龙;韩建龙;赵晓华;朱明浩;董文会。基于K近邻和支持向量机的醉酒驾驶识别方法的对比分析。交通运输系统工程与信息。2015[11]邹国锋,傅桂霞,李海涛,高明亮,王科俊.多姿态人脸识别综述[J].模式识别与人工智能,2015,28(07):613-625.[12]廖广军.复杂条件下的人脸检测与识别应用研究[D].华南理工大学,2014.[13]杜成,苏光大,林行刚,顾华.改进的线段Hausdorff距离人脸识别方法[J].光电子·激光,2005(01):89-93.[14]李嵩,刘党辉,沈兰荪.基于ASM和线段Hausdorff距离的人脸识别[J].计算机应用,2008(05):1217-1220.[15]郭雅楠.基于SVM和ELM的人脸识别方法[D].太原理工大学,2015.[16]刘婷.基于局部特征分析的人脸识别方法[J].信息与电脑(,2019,31(21):114-115+118.致谢本次毕业设计工作能够完成,特别需要感谢本人的导师佟向坤老师。在她的悉心教导下,本次的毕业设计才得以完成。在大学的四年的学习过程中,佟老师对本人的关心和指导,让本人受益匪浅。特别值得一提的是,每次在找不到问题的解决方式的时候,与佟老师沟通一下,这一问题就很神奇地莫名其妙地解开了。除此之外,还要感谢在这段时间陪伴在身边的家人们、朋友们、师兄师姐们。他们就像荧幕前背后的柱子,每当荧幕快要倒下的时候,都提醒荧幕要坚持下去。在危难之际,幸亏有他们伸出援助之手,。在这个满是荆棘的人生道路上,正因为有这些良师益友,本人才能奋力前进、坚持不懈。他们的支持是本人的精神支柱、以及前进的动力。附录importtkinterfromtkinterimport*importtkinter.messageboximportcv2importosimporttimefromPILimportImage,ImageTkclassface_app:def__init__(self):self.camera=None#摄像头初始化self.root=Tk()self.root.title('用户登陆')self.root.geometry('%dx%d'%(400,250))self.createFirstPage()#创建第一页mainloop()defcreateFirstPage(self):self.page1=Frame(self.root)self.page1.pack()self.page1.canvas=Canvas(self.page1,width=400,height=250,bd=0,highlightthickness=0)self.page1.imgpath='backgroud.jpg'self.page1.img=Image.open(self.page1.imgpath)self.page1.photo=ImageTk.PhotoImage(self.page1.img)self.page1.canvas.create_image(200,140,image=self.page1.photo)self.page1.canvas.pack()Label(self.page1,bg='AntiqueWhite',text='ManagementInformationSystem',font=('Arial',14)).place(x=45,y=65)Label(self.page1,bg='white',text='user:',font=('Arial',14)).place(x=50,y=100)Label(self.page1,bg='white',text='password:',font=('Arial',14)).place(x=50,y=150)#lineeditself.leinEdit_u=Entry(self.page1,show=None,font=('Arial',12))self.leinEdit_u.place(x=150,y=100)self.leinEdit_p=Entry(self.page1,show='*',font=('Arial',12))self.leinEdit_p.place(x=150,y=150)self.b_register=Button(self.page1,text='(FACE)Singin',bg='AntiqueWhite',font=('Arial',10),command=self.def_b_register).place(x=240,y=220)self.b_sign_in=Button(self.page1,text='Singin',bg='AntiqueWhite',font=('Arial',10),command=self.b_sign_in).place(x=280,y=180)defdef_b_register(self):self.window_face=Toplevel()#!!!!!!!!!!self.window_face.title('FaceWindow')self.window_face.geometry('800x800')self.page2=Frame(self.window_face)self.page2.pack()self.open_c=Button(self.page2,width=18,height=2,text='OPENCAMERA',bg='red',font=("宋",12),relief='raise',command=self.def_open_c).pack(side=TOP,padx=25,pady=10)self.find_c=Button(self.page2,width=18,height=2,text='Queryinformation',bg='white',font=("宋",12),relief='raise').pack(side=TOP,padx=110,pady=10)#command=self.checkDataView)self.close_c=Button(self.page2,width=18,height=2,text='CloseCAMERA',bg='gray',font=("宋",12),relief='raise',command=self.quitMain).pack(side=TOP,padx=25,pady=10)mainloop()#开启摄像头defdef_open_c(self):self.page2.pack_forget()#隐藏page2self.camera=cv2.VideoCapture(0)#定义摄像头self.page3=Frame(self.window_face)#开始新的Frameself.page3.pack()#画布局Label(self.page3,text='Welcometofacerecognition!',font=('粗体',20)).pack()#画一个文字介绍self.data=Label(self.page3)#初始化一个视频数据流self.data.pack(padx=5,pady=5)#画上去#返回按钮self.buttonclose=Button(self.page3,width=18,height=2,text='BACK',bg='gray',font=("宋",12),relief='raise',command=self.backFirst)self.buttonclose.pack(padx=25,pady=10)#按钮画上去#img=cv2.imread("sister.jpg")X#self.data=Label(self.page3,width=500,height=500,text='BACK',bg='red',imgae=img).pack()Xself.video_loop(self.data)#打开摄像头的重点#持续监听摄像头defvideo_loop(self,panela):success,img=self.camera.read()#从摄像头读取照片ifsuccess:cv2image=cv2.cvtColor(img,cv2.COLOR_BGR2RGBA)#转换颜色从BGR到RGBAcurrent_image=Image.fromarray(cv2image)#将图像转换成Image对象imgtk=ImageTk.PhotoImage(image=current_image)panela.imgtk=imgtkpanela.config(image=imgtk)self.root.after(1,lambda:self.video_loop(panela))defb_sign_in(self):flag=1ifself.leinEdit_u.get()=='':#判断用户是否输入通行证账号flag=0tkinter.messagebox.showerror(title='抱歉!',message='输入通行证账号不能为空!')else:if(self.leinEdit_u.get()=='84486')&(flag==1):#若用户已经输入账号且从用户信息中遍历到账号if(str.upper(self.leinEdit_p.get())=='123456'):tkinter.messagebox.showerror(title='congratulations!',message='密码正确')self.Main_Layout()else:tkinter.messagebox.showerror(title='抱歉!',message='密码错误')else:tkinter.messagebox.showerror(title='抱歉!',message='账号不存在')defMain_Layout(self):self.root.destroy()self.window=Tk()self.window.title('主窗口')self.window.geometry('%dx%d'%(800,800))defbackFirst(self):self.page3.pack_forget()self.page2.pack()#释放摄像头资源self.camera.release()#cv2.destroyAllWindows()#defquitMain(self):self.window_face.destroy()if__name__=='__main__':demo=face_app()

HYPERLINK如何给电脑重做系统给电脑重做系统,自己学学,可少花钱,哈哈[图]

一、准备工作:

如何重装电脑系统

首先,在启动电脑的时候按住DELETE键进入BIOS,选择AdvancedBIOSFeatures选项,按Enter键进入设置程序。选择FirstBootDevice选项,然后按键盘上的PageUp或PageDown键将该项设置为CD-ROM,这样就可以把系统改为光盘启动。

其次,退回到主菜单,保存BIOS设置。(保存方法是按下F10,然后再按Y键即可)

1.准备好WindowsXPProfessional简体中文版安装光盘,并检查光驱是否支持自启动。

2.可能的情况下,在运行安装程序前用磁盘扫描程序扫描所有硬盘检查硬盘错误并进行修复,否则安装程序运行时如检查到有硬盘错误即会很麻烦。

3.用纸张记录安装文件的产品密匙(安装序列号)。

4.可能的情况下,用驱动程序备份工具(如:驱动精灵2004V1.9Beta.exe)将原WindowsXP下的所有驱动程序备份到硬盘上(如∶F:Drive)。最好能记下主板、网卡、显卡等主要硬件的型号及生产厂家,预先下载驱动程序备用。

5.如果你想在安装过程中格式化C盘或D盘(建议安装过程中格式化C盘),请备份C盘或D盘有用的数据。

二、用光盘启动系统:

(如果你已经知道方法请转到下一步),重新启动系统并把光驱设为第一启动盘,保存设置并重启。将XP安装光盘放入光驱,重新启动电脑。刚启动时,当出现如下图所示时快速按下回车键,否则不能启动XP系统光盘安装。如果你不知道具体做法请参考与这相同的-->如何进入纯DOS系统:

光盘自启动后,如无意外即可见到安装界面,将出现如下图1所示

查看原图

全中文提示,“要现在安装WindowsXP,请按ENTER”,按回车键后,出现如下图2所示

查看原图

许可协议,这里没有选择的余地,按“F8”后如下图3

HYPERLINK

查看原图

这里用“向下或向上”方向键选择安装系统所用的分区,如果你已格式化C盘请选择C分区,选择好分区后按“Enter”键回车,出现下图4所示

查看原图

这里对所选分区可以进行格式化,从而转换文件系统格,或保存现有文件系统,有多种选择的余地,但要注意的是NTFS格式可节约磁盘空间提高安全性和减小磁盘碎片但同时存在很多问题MacOS和98/Me下看不到NTFS格式的分区,在这里选“用FAT文件系统格式化磁盘分区(快),按“Enter”键回车,出现下图5所示

查看原图

格式化C盘的警告,按F键将准备格式化c盘,出现下图6所示

HYPERLINK

查看原图

由于所选分区C的空间大于2048M(即2G),FAT文件系统不支持大于2048M的磁盘分区,所以安装程序会用FAT32文件系统格式对C盘进行格式化,按“Enter”键回车,出现下图7所示

查看原图图7中正在格式化C分区;只有用光盘启动或安装启动软盘启动XP安装程序,才能在安装过程中提供格式化分区选项;如果用MS-DOS启动盘启动进入DOS下,运行i386\winnt进行安装XP时,安装XP时没有格式化分区选项。格式化C分区完成后,出现下图8所示

被过滤广告

查看原图

图8中开始复制文件,文件复制完后,安装程序开始初始化Windows配置。然后系统将会自动在15秒后重新启动。重新启动后,出现下图9所示

HYPERLINK

查看原图

9

查看原图

过5分钟后,当提示还需33分钟时将出现如下图10

HYPERLINK

查看原图

区域和语言设置选用默认值就可以了,直接点“下一步”按钮,出现如下图11

查看原图

这里输入你想好的姓名和单位,这里的姓名是你以后注册的用户名,点“下一步”按钮,出现如下图12

HYPERLINK

查看原图

如果你没有预先记下产品密钥(安装序列号)就大件事啦!这里输入安装序列号,点“下一步”按钮,出现如下图13

HYPERLINK

查看原图

安装程序自动为你创建又长又难看的计算机名称,自己可任意更改,输入两次系统管理员密码,请记住这个密码,Administrator系统管理员在系统中具有最高权限,平时登陆系统不需要这个帐号。接着点“下一步”出现如下图14

查看原图

日期和时间设置不用讲,选北京时间,点“下一步”出现如下图15

HYPERLINK

查看原图

开始安装,复制系统文件、安装网络系统,很快出现如下图16

查看原图

让你选择网络安装所用的方式,选典型设置点“下一步”出现如下图17

HYPERLINK

查看原图

点“下一步”出现如下图18

HYPERLINK

查看原图

继续安装,到这里后就不用你参与了,安装程序会自动完成全过程。安装完成后自动重新启动,出现启动画面,如下图19

HYPERLINK

查看原图

第一次启动需要较长时间,请耐心等候,接下来是欢迎使用画面,提示设置系统,如下图20

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

HYPERLINK

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

查看原图

这里建立的宽带拨号连接,不会在桌面上建立拨号连接快捷方式,且默认的拨号连接名称为“我的ISP”(自定义除外);进入桌面后通过连接向导建立的宽带拨号连接,在桌面上会建立拨号连接快捷方式,且默认的拨号连接名称为“宽带连接”(自定义除外)。如果你不想在这里建立宽带拨号连接,请点击“跳过”按钮。

在这里我先创建一个宽带连接,选第一项“数字用户线(ADSL)或电缆调制解调器”,点击“下一步”按钮,如下图22所示

HYPERLINK

查看原图

目前使用的电信或联通(ADSL)住宅用户都有帐号和密码的,所以我选“是,我使用用户名和密码连接”,点击“下一步”按钮,如下图23所示

查看原图

输入电信或联通提供的帐号和密码,在“你的ISP的服务名”处输入你喜欢的名称,该名称作为拨号连接快捷菜单的名称,如果留空系统会自动创建名为“我的ISP”作为该连接的名称,点击“下一步”按钮,如下图24所示

查看原图

已经建立了拨号连接,微软当然想你现在就激活XP啦,不过即使不激活也有30天的试用期,又何必急呢?选择“否,请等候几天提醒我”,点击“下一步”按钮,如下图25所示

HYPERLINK

查看原图

输入一个你平时用来登陆计算机的用户名,点下一步出现如下图26

HYPERLINK

查看原图

点击完成,就结束安装。系统将注销并重新以新用户身份登陆。登陆桌面后如下图27

HYPERLINK

查看原图

六、找回常见的图标

在桌面上点开始-->连接到-->宽带连接,如下图32

查看原图

左键点“宽带连接”不放手,将其拖到桌面空白处,可见到桌面上多了一个“宽带连接”快捷方式。结果如下图33

HYPERLINK

查看原图

然后,右键在桌面空白处点击,在弹出的菜单中选“属性”,即打开显示“属性窗口”如下图34

查看原图

在图中单击“桌面”选项卡,出现如下图35

HYPERLINK

查看原图

在图中的左下部点击“自定义桌面”按钮,出现如下图36

查看原图

在图中的上部,将“我的文档”、“我的电脑”、“网上邻居”和“InternetExplorer”四个项目前面的空格上打钩,然后点“确定”,再“确定”,你将会看到桌面上多了你想要的图标。如下图37

键盘上每个键作用!!!

F1帮助

F2改名

F3搜索

F4地址

F5刷新

F6切换

F10菜单

CTRL+A全选

CTRL+C复制

CTRL+X剪切

CTRL+V粘贴

CTRL+Z撤消

CTRL+O打开

SHIFT+DELETE永久删除

DELETE删除

ALT+ENTER属性

ALT+F4关闭

CTRL+F4关闭

ALT+TAB切换

ALT+ESC切换

ALT+空格键窗口菜单

CTRL+ESC开始菜单

拖动某一项时按CTRL复制所选项目

拖动某一项时按CTRL+SHIFT创建快捷方式

将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放

Ctrl+1,2,3...切换到从左边数起第1,2,3...个标签

Ctrl+A全部选中当前页面内容

Ctrl+C复制当前选中内容

Ctrl+D打开“添加收藏”面版(把当前页面添加到收藏夹中)

Ctrl+E打开或关闭“搜索”侧边栏(各种搜索引擎可选)

Ctrl+F打开“查找”面版

Ctrl+G打开或关闭“简易收集”面板

Ctrl+H打开“历史”侧边栏

Ctrl+I打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复

Ctrl+K关闭除当前和锁定标签外的所有标签

Ctrl+L打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)

Ctrl+N新建一个空白窗口(可更改,Maxthon选项→标签→新建)

Ctrl+O打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)

Ctrl+P打开“打印”面板(可以打印网页,图片什么的...)

Ctrl+Q打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表)

Ctrl+R刷新当前页面

Ctrl+S打开“保存网页”面板(可以将当前页面所有内容保存下来)

Ctrl+T垂直平铺所有窗口

Ctrl+V粘贴当前剪贴板内的内容

Ctrl+W关闭当前标签(窗口)

Ctrl+X剪切当前选中内容(一般只用于文本操作)

Ctrl+Y重做刚才动作(一般只用于文本操作)

Ctrl+Z撤消刚才动作(一般只用于文本操作)

Ctrl+F4关闭当前标签(窗口)

Ctrl+F5刷新当前页面

Ctrl+F6按页面打开的先后时间顺序向前切换标签(窗口)

Ctrl+F11隐藏或显示菜单栏

Ctrl+Tab以小菜单方式向下切换标签(窗口)

Ctrl+Enter域名自动完成[url=].**.com[/url](内容可更改,Maxthon选项→地址栏→常规)/另:当输入焦点在搜索栏中时,为高亮关键字

Ctrl+拖曳保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,Maxthon选项→保存)

Ctrl+小键盘'+'当前页面放大20%

Ctrl+小键盘'-'当前页面缩小20%

Ctrl+小键盘'*'恢复当前页面的缩放为原始大小

Ctrl+Alt+S自动保存当前页面所有内容到指定文件夹(保存路径可更改,Maxthon选项→保存)

Ctrl+Shift+小键盘'+'所有页面放大20%

Ctrl+Shift+小键盘'-'所有页面缩小20%

Ctrl+Shift+F输入焦点移到搜索栏

Ctrl+Shift+G关闭“简易收集”面板

Ctrl+Shift+H打开并激活到你设置的主页

Ctrl+Shift+N在新窗口中打开剪贴板中的地址,如果剪贴板中为文字,则调用搜索引擎搜索该文字(搜索引擎可选择,Maxthon选项→搜索)

Ctrl+Shift+S打开“保存网页”面板(可以将当前页面所有内容保存下来,等同于Ctrl+S)

Ctrl+Shift+W关闭除锁定标签外的全部标签(窗口)

Ctrl+Shift+F6按页面打开的先后时间顺序向后切换标签

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论