收藏 分销(赏)

基于Python和openCV的人脸识别研究与实现.pdf

上传人:曲**** 文档编号:228938 上传时间:2023-03-18 格式:PDF 页数:45 大小:2.20MB
下载 相关 举报
基于Python和openCV的人脸识别研究与实现.pdf_第1页
第1页 / 共45页
基于Python和openCV的人脸识别研究与实现.pdf_第2页
第2页 / 共45页
基于Python和openCV的人脸识别研究与实现.pdf_第3页
第3页 / 共45页
基于Python和openCV的人脸识别研究与实现.pdf_第4页
第4页 / 共45页
基于Python和openCV的人脸识别研究与实现.pdf_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、基于Python和openC耶J人脸识别研究与实现摘要人脸识别技术(Face Reco g nit io n Tech no lo g y)是对输入的图像或者视频进行判断是否存在人脸,若存在人脸,则获取该人脸的特征数据,计算特征值,并将人脸数据与 己有的人脸数据进行比较,从而得出该人脸的身份信息。人脸识别技术相对于其他生物 特征识别技术而言,具有更加快捷方便的特性,用户不需要特意或者直接与设备接触,设备便可自行获取数据。但同时,人脸识别技术和其他生物识别技术相比,更容易被环 境的因素干扰从而出现错误,需要人为干预以及大量的数据支撑。目前,人脸识别技术 在国内外的各中环境中都被广泛使用。关键词:

2、人脸识别;生物特征识别技术;特征值Research and implementation of face recognition based on Python and opencvAbstractFace reco g nit io n t ech no lo g y is t o ju dg e w h et h er t h ere is a f ace in t h e inpu t imag e o r v ideo.If t h ere is a f ace,t h e f eat u re dat a o f t h e f ace w ill be o bt ained,t h

3、 e f eat u re v alu e w ill be calcu lat ed,and t h e f ace dat a w ill be co mpared w it h t h e exist ing f ace dat a t o g et t h e ident it y inf o rmat io n o f t h e f ace.Co mpared w it h o t h er bio met ric t ech no lo g ies,f ace reco g nit io n t ech no lo g y is mo re co nv enient and f

4、ast.Users do no t need t o co nt act w it h t h e dev ice int ent io nally o r direct ly,and t h e dev ice can o bt ain dat a by it self Bu t at t h e same t ime,co mpared w it h o t h er bio met ric t ech no lo g y,f ace reco g nit io n t ech no lo g y is mo re v u lnerable t o env iro nment al int

5、 erf erence and erro rs,w h ich requ ires h u man int erv ent io n and a larg e nu mber o f dat a su ppo rt.At present,f ace reco g nit io n t ech no lo g y h as been w idely u sed in v ario u s scenes at h o me and abro ad.Keywords:Face reco g nit io n;bio met rics;eig env alu es目录1前言.11.1 本设计的目的、意

6、义及应达到的技术要求.11.2 本设计在国内外的发展概况及存在的问题.11.3 本设计应解决的主要问题.22本设计.22.1 各功能介绍.32.1.1 主界面.32.1.2 数据收集及训练.42.1.3 人脸识别.42.1.4 删除数据、查询数据.42.1.5 管理员登录登出以及修改密码.52.2 设*1*十原理及方案选择 62.2.1 人脸识别技术.62.2.2 本设计使用的h aar分类器.72.2.2.1 h aar-lik e 特征.72.2.2.2 h aar 特征计算一积分图.82.2.2.3 特征值计算.82.2.2A 级联分类器.92 2 3 LBPH训练识别 1Q3环境搭建.

7、4系统设计与实现.134.1 程序设计.134.2 数据收集训练.144.4 数据删除、查询.174.5 管理员登录、登出和密码管理.184.6 主程序页面.194.7 程序打包.204.8 遇到的问题及解决.204.9 存在问题和改进方向.214.9.1 人脸识别的技术.214.9.2 程序中存在的问题.215系统测试.225.1 程序启动.225.2 功能测试.235.2.1 管理员测试.235.2.2 数据收集训练测试.245.2.3 人脸识别测试.265.2.4 查询和删除数据测试.266结论.291前言人脸识别技术(Face Reco g nit io n Tech no lo g

8、y)是一种生物特征识别技术。生物识别技术是指通过计算机与光学、声学、生物传感器和生物统计学原理等高科技手段密切 结合,利用人体固有的生理特性(如指纹、脸象、虹膜等)和行为特征(如笔迹、声音、步态等)来进行个人身份的鉴定,人脸识别技术即是通过获得人类面部的特征进行身份 鉴定的技术。其主要功能包括人脸检测,人脸追踪以及人脸比对,即在动态场景与复杂 背景中判断是否有面像存在并分离出这些面像,进行动态目标跟踪,同时在面像库中搜 索人脸数据从而对检测到的人脸进行身份鉴定。目前,人脸识别技术在门禁、监控、相机等各种场景和环境下都有广泛的使用。1.1 本设计的目的、意义及应达到的技术要求人脸识别技术是一项现

9、代人工智能技术中的的热门研究领域,它为人类社会发展的 快速、便捷、安全等方面提供了保障。在当今社会中,从工作刷脸签到到购物刷脸支付 再到公安刑侦,人脸识别技术都扮演了极其重要的角色。在这样的实际背景下,人脸识 别技术的研究的重要性也就不言而喻了。在本设计中,主要实现人脸识别技术中的人脸 检测追踪,人脸信息录入以及人脸身份识别等功能,最终可达到一对一实时人脸信息识 别的效果,实际运用中,准确率可达75谁用。1.2 本设计在国内外的发展概况及存在的问题人脸识别技术是各个科技发达国家都在全力研究的技术之一。人脸识别系统的研究大致在I96 0年左右开始进行。八十年代后,随着计算机科学 技术和光学成像技

10、术的进步,人脸识别技术也得到了提高。在九十年代后期,人脸识别 技术进入了实际应用的初级阶段。进入二十一世纪后,人脸识别技术有了质的飞跃,如 今已经在各个已经在政府、军队、银行、娱乐、电子商务、安全防务的那个领域有了较 为深入的应用。人脸识别技术是发展和使用为人类生活产生了深远的影响,它的普及对于人类提高 工作效率、巩固安保措施、遏制犯罪行动等有极大的帮助。在人脸识别技术带给人类便捷的同时,人脸识别技术也有一些弊端,首先在技术方 面,人脸识别技术相对于其余的生物特征检测,更容易受到环境的影响出现误差而造成 损失,一些人脸识别系统表示识别准确率高达98姒上,但是这些数据更多的是实验室 数据,在实际

11、应用中几乎难以实现,甚至一些系统出错率高达35%如何提高准确率是 人脸识别技术还需要深入解决的问题。除了技术层面,人脸识别技术还有一个道德层面的问题存在,这源于人脸识别技术 的一个优势无接触检测。人脸识别技术是不需要人刻意去接触设备的,这也意味着 可以在被检测者未知的情况是对被检测者进行人脸信息识别,如果是这种情况,那么人 脸识别技术是否就是侵犯了人类的隐私权和肖像权。同时还有数据表示,人脸识别技术 在实际使用中,肤色越黑,识别率越低,在黑色人种中的使用,出错率甚至达到了 35%与此同时,又是数据表明,目前的人脸识别数据库中有75%右的数据是男性,80姒上 来自于白色人种。以上的研究使得人脸识

12、别技术的使用在道德方面是否存在种族歧视、性别歧视等问题上令人担忧。1.3 本设计应解决的主要问题目前,人脸识别技术已经较为成熟,在国内外的各种场景中均有应用。本设计将人脸检测数据收集、人脸识别以及数据管理集成为一个系统。主要实现快 速的进行人脸数据收集,实时进行一对一人脸检测,人脸数据的管理以及查询,便于管 理人员对数据进行管理,同时,普通的用户可以自主进行识别的操作。2本设计本设计是基于Pyt h o n和o pencv的人脸识别系统的开发,使用pyt h o n+o pencv调用 计算机的摄像头设备获取图像,在使用o pencv提供的人脸检测分类器对获得的图像中 的人脸进行识别和数据获取

13、。同时,使用Pyt h o n的标准Tk GUI工具包的接口 Tk int erz 制作程序的用户操作界面,最终呈现主程序界面效果如图2.1所示:图2.1程序主界面22.1 各功能介绍本次人脸识别系统的设计包括数据收集及训练功能,人脸识别功能,删除数据 功能,查询数据功能,以及登录、登出管理员和更改密码功能。其中,数据收集及训练,删除数据以及查询数据需要管理员权限,而登录管理员需要密码,登录后登录管理员按 钮会更换为修改密码。2.1.1 主界面进入程序首先是主界面,并且没有管理员权限。程序开始后会先判断是否有数据,如 无数据进行部分操作时会直接提示当前无数据,如图2.1.1所示:主界面设置有六

14、个按钮,每一个按钮对应一个函数,点击按钮可调用不同功能,在无 管理员权限时点击数据收集及训练、删除数据、查询数据时,会提示暂无管理员权限,如图2.1.2所示:32.1.2 数据收集及训练登录管理员之后可以进行数据收集和训练的操作,点击按钮之后系统会首先要求输 入id,判断id有效且不重复之后可进行人脸数据收集,这里检测人脸使用的是。pencv 提供的分类器h aarcascade_f ro nt alf ace_alt 2.xml 进行人脸检测数据收集,其中的算法和原理在下文中介绍。为了节省空间,在数据收集完成并制作为.yml数据文件之后,会删除掉之前的图像文件。最后将存入的数据id保存到li

15、st mpy 文件中,方便之后的 查找删除操作。本次的人脸识别系统设计,将每一个人脸数据单独存放为一个.yml文件,比起所有数据都加入同一个数据文件中,删除和查找操作更方便和清晰。2.1.3 人脸识别人脸识别功能是本系统中不需要管理员权限可直接运行的功能,开启功能后,程序 调用计算机的摄像头,同样通过分类器h aarcascade_f ro nt alf ace_alt 2.xml 检测图像中的人脸及获取人脸数据,同时计算机读取已有的数据,将已有数据与摄像头上实时获 取到的人脸数据进行对比,当对比结果判断出是已有的人脸时,在图像上显示出该人脸 的信息,并显示判断正确的可能性,如图2.1.3所示

16、:图2.1.3人脸识别最后可以按esc退出人脸识别模块。2.1.4 删除数据、查询数据这两项操作需要管理员权限。查询数据时,可输入id,查看数据是否存在,也可直 接查看所有已存在的id,在系统没有录入任何数据时,会直接提示暂无数据。删除数据 时,获得管理员权限后,可以输入需要删除的数据的id,操作之后会同时删除数据文件 和列表中的id,若无该id,则直接返回无此id,如图2.1.4所示:4图2.1.4删除无效2.1.5 管理员登录登出以及修改密码在刚刚打开程序,进入系统时是任何人都是没有获得管理员权限的,需要点击登录 管理员按钮获得,点击登录管理员之后需要输入密码进行验证,如图2.1.5所示:

17、图2.1.5登录管理员输入密码登录管理员后,可进行数据管理操作,同时登录管理员按钮更改为修改密码按钮如 图2.1.6所示:5图2.1.6登录管理员后按钮变为修改密码此时可以修改密码。在管理员进行管理操作完成之后,需要点击登出管理员关闭管 理员权限,修改密码按钮恢复为登录管理员按钮,同时管理操作无法再进行。2.2 设计原理及方案选择2.2.1 人脸识别技术人脸识别的实质是依靠计算机图像处理技术从输入的媒体中提取人脸的特征点,再 依靠生物统计学的原理进行数学模型的分析和建立,作为人脸特征模板。在检测时,使 用已建立的人脸特征模板和被检测者的人脸中提取出的特征进行特征对比分析,根据分 析结果得出相似

18、度,判断是否为同一个人。人脸识别的方法有很多种,比如:(1)根据人脸几何特征进行识别的方法:几何特征是指人脸上的器官如眼睛,鼻子,嘴巴等之间的距离等几何关系。这种方法的识别的速度快比较快,占用内存资源较小,但是识别率比较低。(2)基于特征脸(PCA)的人脸识别:这种方法是将人脸从三维的空间通过投影降维到 二维空间,将这些投影作为用于识别的特征矢量。这种识别的方式要求相对更多的样本 用于训练,这是基于图像灰度的特征统计。(3)基于神经网络的人脸识别:神经网络的输入包含降低分辨率的人脸图像,局部 的自相关函数、局部纹理的二阶矩等。同样需要大量的训练样本。(4)弹性图匹配的人脸识别:这个方法将人脸使

19、用属性拓扑图代替,拓扑图上的任 意一点都包含特征向,用来记录周围的信息,在匹配时允许画面存在弹性,对存在表情 改变的识别中有较好效果。同时这种方法对于同一人脸只需要单个样本训练即可。(5)线段Hau sdo rf f距离的人脸识别:这种方法是将人脸的灰度图像划分为不同的 线段集,不需要线段集之间线段的进行一一的对应,只通过两个线段集之间的距离来识 别人脸。这个方法可以在不同光照和不同的状态的情况下进行较为准确的识别,但是对 于存在大表情变化的识别效果不佳。(6)支持向量机的人脸识别:这是统计模式识别领域的一个新热点,总的来说就是 将一个低维的线性不可分问题转化为一个高维的线性可分问题。这种方法

20、需要很多的的 训练样本,并且支持向量机训练时间长,目前在实际使用中还不太可能。62.2.2 本设计使用的haar分类器OpenC屣供了多个检测器,安装OpenC正即可使用。检测器的内容主要包括Haar-lik e特征、积分图方法、AdaBo o st、级联。Haar分类 器算法使用h aar-lik e特征进行人脸检测,使用积分图对h aar-lik e 特征求值进行加速,使用AdaBo o st算法来进行强分类器的训练,用以区分人脸和非人脸,最后使用筛选的 方式将强分类器级联到一起,提高准确率。2.2.2.1 haar-like 特征图221矩形模板模板特征值等于白色矩形部分的像素和与和黑色

21、的矩形部分的像素和的差。这些矩 形特征能简单的对脸部的一些特征进行描述,比如:脸部的颜色相对于眼睛的更浅,鼻 子比两边的颜色更浅等等。对于图221上的a、b、d特征数值的计算,和对c的计算公式分别为公式221 和公式2.2.2v=Z白-Z黑(2.2.1)v=E白-2*E黑(2.2.2)在c的特征计算中将黑色部分像素和乘以2,是为了让两种矩形部分中像素数目相 等。我们希望计算当把矩形放到人脸区域时得到的特征值和计算放到非人脸区域得到的 特征值之间的差距越大越好,这样就可以用来更加明显的分辨出是否是人脸。使用特征 相较于单独使用像素点有更加优越的性能,更快的计算速度。矩形特征值受矩形特征模板的类型

22、、位置和大小的影响。矩形特征在图像上的位置、大小都可以改变的,这使得即使矩形的检测窗口非常小也会产生大量的矩形特征,比如 在一个24*24像素大小的检测窗口中,可以得到的矩形特征数量就能高达16万个。要 计算如此庞大数量的特征,就要靠h aar分类器的另一个核心了。72.222 haar 特征计窠-积分图积分图,顾名思义是一种使用积分的思想进行计算的方式。通过积分图,图像只需 要被完整的读取一遍即可求出所有位置的像素,这种算法将计算图像特征值的效率进行 了很大程度的提升。积分图是将图像从起点开始到各个点所围成的矩形区域的像素值的和作为一个数 组保存下来,当需要计算其中一个部分的像素之和时可直接

23、在数组中搜索,不用再重新 进行累加计算。积分图构建如图2.2.2所示:图2.2.2积分图示意积分图每个点的计算方式是这个点的值ii(i,j)等于这个点左上角方向上的每一个 像素的值之和,比如在222中点1的值等于A区域的像素值之和,点4的值等于区域A 和区域D的像素值之和,点6的值等于区域A到F的像素值之和。每个像素区域像素值 为f(ij),则每个点的值为式2.2.3:(ij)=*外)卜乔当(2.2.3)构建积分图时,先采用每行累加的方式进行,即式2.2.4:s(i,j)=s(i,j-l)+f(i,j)(2.2.4)在计算每个点的值,每个点的值等于当行的累计值加上上一行该列点的值,如 式225

24、所示:u(i,j)=s(i,j)+ii(i-l,j)(2.2.5)这种计算方法,目标图像只需要遍历一遍之后便可得到每个点的值。2.2.23 特征值计算通过构建积分图,接下来的特征值计算可以减少很多的工作量,从而提升效率。构建好积分图之后,需要计算特征值的时候就不再需要去求区域像素和,直接用点8进行计算即可,如图2.2.3:图2.2.3计算特征值在图223中将区域E和区域F作为一个矩形,计算它的特征值时,需要用F区域 像素值减去E区域像素值,若没有积分图时,需要逐个计算区域F和区域E的像素值,但是一次检测中有大量这样的特征值需要计算,每次都这样去计算的话,需要消耗大量 的时间和资源,但是有积分图

25、之后计算区域F的像素和就可以直接通过点的值去计算,如:F区域像素和,式2.2.6:S(F)=ii(6)-ii(5)-ii(3)+ii(2)(2.2.6)同理,式2.2.7:S(E)=ii(5)-ii(4)-ii(2)+ii(l)(2.2.7)这样计算之后EF矩形区域特征值,式228:S(f)-S(E)=ii(6)-ii(5)-ii(3)+ii(2)-(ii(5)-ii(4)-ii(2)+ii(l)(2.2.8)通过积分图计算的方式每个特征区域就都可以通过很简单的计算得到,大大提升了 计算特征值的效率,同时也提高了检测目标的速度。不同的特征在同一个的样本中计算会出现不同的结果,这样的结果就可以区

26、分出人 脸是否存在,或者人脸上的眼睛鼻子嘴巴等器官的位置。不同模板计算出来的结果差异 越大,效果也好。由于这样计算出来的特征值上下幅度较大不利于比较,所以检测器中 还会对特征值进行归一化处理,处理后的数据再与阈值比较得出最后的结果,即人脸的 存在与否。2.2.2.4 级联分类器每一个输入的样品中都有非常多的特征值,要通过这些特征值准确的检测和识别出 人脸就需要使用级联分类器了,只有通过级联分类器的每一次判断,最后才会认定为检 测出人脸或者识别出人脸。级联分类模型是树状结构,如图2.2.4所示:9St ag e 0.通过/(St ag e!,通过2图2.2.4级联分类器每一个st ag e都是一

27、个强分类器,只有目标依次通过了每一个强分类器时,才认为 通过此次的检测,强分类器对于负样本的检测效率非常高,能够很大程度的检测出负样 本,在任何一个分类器检测为负样本都会结束本次检测,后面的强分类器不再检测,从 而提高检测效率。一个图像样本中,非目标的区域会占很大的比例,换句话说,一个图 像中很多的检测区域都属于负样本,在第一个分类器时就会被否决,通过这种方式,避 免了很多不必要的资源浪费。每一个强分类器是由若干个弱分类器通过一定的策略组合在一起,一个弱分类器是 一个和图224相差无几的决策树,其中,只拥有一个h aar-lik e 特征的弱分类器称为 最基本的弱分类器,它的决策树只有一层,称

28、为树桩(st u mp)。另外,每个特征对于检测结果的影响是不同,所以在分类器在检测特征时会对特征 进行加权运算。首先会筛选出若干个优秀的特征值,作为最优弱分类器,然后传给 AdaBo o st进行训练。通过训练得出特征的最优阈值,使得这个弱分类器对所有的训练样 本的分类误差最低。2.2.3 LBPH训练识别设计中采用LBPH(Lo cal Binary Pat t emsHist o g rams)局部二进制编码直方图进行 人脸训练和识别,在使用h aar分类器检测出人脸后,用局部二进制编码直方图获得该 人脸的特征并进行训练,训练后可以得到图像数据和图像对应的标签。LBPHS行人脸识 10别

29、的基本思想大致是将每个像素作为中心,计算该像素和其附近的像素灰度值的大小关 系,再将这个关系以二进制进行编码,比该像素灰度值小的像素点编的为0,比该像素 灰度值大像素点的为1,这样就可以得到对整个图像进行LBP编码的图像;接着将LBP 图像划为若干个部分,分别得到每个部分的LB陶码直方图,这样就得到了整个图像的 LBP编码直方图,最后经过比较不同的人脸图像的LBP滋到人脸识别的目的,原始编码 示意图如2.2.5所示:在原始LBP出现后,编码方式不断地优化改进,又有了圆形LBB如图2.2.6:图 2.2.6圆形LBPII圆形LBP在原始LBP的基础上将原本的3*3邻域扩大到了任意邻域,用圆形取代

30、原 有的正方形,在半径内允许有任意数量个的像素点。OpenCV正是采用的这种圆形LBP 算子。本设计就是调用了 OpenCV供的 h aarcascade_f ro nt alf ace_alt 2.xml 检测器,通过摄像头收集图像样本使用局部二进制编码直方图进行对检测器检测出的人脸进行特 征训练,训练完成后保存为yml文件数据。使用时,通过实时读取摄像头的画面,检测 出画面上的人脸,再用LBP算子求出该人脸的特征,最后调用pre dict函数,这个函数 返回两个值,一是识别出的人脸的标签,二是置信度评分。算法有置信度评分阈值,置 信度评分是用来表示目标与模版中的差距,当置信度的值为0时表示

31、完美匹配,置信度 的值小于50时,可以认为识别效果较好。此外Opcncv还提供有其他的h aar检测器,在不同的检测需求下可以调用不同的检测器。3环境搭建人脸识别系统自然需要摄像头,本设计是基于pyt h o n+o pencv的开发实现所以首先 需要搭建pyt h o n的环境。首先安装pyt h o n3.7,现在已经有了 pyt h o n3.8,但是在我实际的使用中,发现一 些在pyt h o n3.7中可以进行的操作在pyt h o n3.8中无法进行。安装好pyt h o n3.7后检查 是否安装成功,如图3.1:D:python3.7ScriptspythonPython 3.7

32、.0(v3.7.0:lbf9cc5093,Jun 27 2018,04:06:47)DISC v.1914 32 bit(Intel)Type help,copyright,credits or license for more iniormation.图3.1检查pyt h o n安装接着继续安装o pencv,我在搭建环境时使用的是pip安装,但是pip因为源文件在 国外,所以下载速度太慢而且容易有异常,经过查阅资料我配置了清华的镜像文件,如 图 3.2:pyxhian3.7ScriptsD:pythori3.?ScriptM pip config set obal.indx*url ht

33、tps:/pypi.tuna, to 方逸杰iniYou a”itsinc pip pip inst ill cperV pyt bo nTu llgct ini 用甘第y-pyt h u”Do mlo adins ff.jyt h o nh dEd.nrg/卬da6 Hs“a/梆/6 U%4cBf 1:记川原9a02。92册加城IBdTbOFSaOEdbdh?阳dt B44csMa卜/g e lid了mm-L 1.2.30-cp3T-37 nrw ijj32.(Mil(24.2疝 io ns ir.3k u/el?aliect in?nw v =1 14.h I f ro m o perKV

34、-pyt h o n)Do w nlcading h t ps:/yf iles.pyt h o nh ct ed.o rg i/|a:k a5es/e/ad/2eS8f 26 b56 f 6 4f?;k 3Slb32f a5512dacet if 1200Sccb(le2d30Dd44dc-:1215/jiLw y-1.17,$s3?-e3E-w i昂口 响!(I1),7 BB)_ _1 优,MaBHHHiif lilBaaaMaHBBIMMHMIIBB I 10.7 MB 234k E tsLas t ailing u llo ct&d v ak 4s-j5:iaw y,o pu riCV

35、-pyt h u nnf v:pt t i r;!:u axsH!u lly inn t o lled nw y-l,17.4 呼”iCWpyt h nn_4.1.2,戏f o a arn i二if)(L pi p e心ri.nii I 1,f I,h o o v nr、;工川笛;9.3.1 la av o HnblmlYu u ah u u l:1-insider.i k*bVlKai-w pip lcd1 t l 1-i.4ixadv pip*iOhuiuiX图3.3安装OpenCV同时还需要pyt h o n图像处理包pillo w 和o pencv扩展包分别如图3.4和图3.5:p:p

36、yrh o n3.7 Script ains t all pl 1 LawL-u k in$in jidnxec:h Upa:/pv t i.t u na.t 2inclu u s.edu.t sn/sinplBmiHct in 白 pillcv1 ir,lnading h t t p5:/pv pi.t imt.t sinf h v A.t h k cnypack s?e/4b/8/U35f 7 aeU4J?.6 4zibcw f bx ded/Pillcr?-b.1-cpa-:p3 rm-inC.w h l(L JLB)”外 I 1.2Kb i.iMB/sIns t alline co l

37、lect ed pack ag es:pillo wSubgsIjILt pillcnr-6.2.1F j“,u af i p v ero jna 10.C-.I.riw nv;v nru ir 13.:I:iv in,iiuTc.u sh Mil*1 xrrniit f ar ni v l t h r.”t h u ri f jip xnu t jil I:w u ik pip pip irt s t idl o panCV-v o nt rib-pyt h anLcu k iiig in indexu a:h t t ps:/pypL t mw i,liinst iw i.t pLTo l

38、iscxiDK o t snCVr-ccnt rib-pyt h o nDaw nlo.irJins h It n:/pypi.t ijnj,t sirt jiJiu i.-?du.n/pAcf c s-7 57 f t eZ9 l/37 3186 b02M7 l,b;94a&307 7 5ji005150b02df G33e4dOe7 7 247 f 2lab407 2 10?/o r eh cv cnnt rib_py-t h(7 n4.1 L 26-t 37 _,:p 3 7 nrn na 2.wli 32.4YF1qu irrTnsni already?it iirf io d:nu

39、npy)=L14.5 in d:j)yt t rjn3.7 X1 ibSri t o-pact ig cC(ircn ijpcnCV-ccmt rib-pjrt Jim)(L 1.t lIns t il ling 11 a.cto:j pack ag e=:o perTV-i5nt rib-pyt h anSu ci 4 1-,八;ills v h-11 I 10.1.I.r-|(,ni 9.J:I|J Jj lb t i,ir.11 siinu il HKHjinirT u rg rndjr展 v i i iht pyi.h nn-ro r)i,nt iil I fu u r“作小”v iw

40、 nru J.图 3.5 安装 OpenCV-co nt rib-pyt h o nnu mpy之类的pyt h o n包在安装pyt h o n的时候已经自动装上了,这样目前需要文件 程序都已经安装好了。4系统设计与实现4.1 程序设计人脸识别,首先需要能够检测出人脸,上文中已经较为详细的介绍了 h aar特征的 原理,这里直接调用了 h aarcascade_f ro nt alf ace_alt 2.xml 检测器。在设计开始时,我是先开始实现各个功能,在各个功能都大致完成之后在写的主程 序,再在主程序中调用各个功能。在功能和调用都没有问题之后开始制作用户操作页面,13最后添加的管理员登

41、录以及一些细小的优化4.2 数据收集训练首先我实现的是调用摄像头进行人脸数据的收集及训练数据功能。这个功能的实现 思路是:在有管理员的条件下,首先输入需要录入者的id信息,这里要求不能与已有 的id重复,也不能输入空白。在符合要求之后将输入的id存入主程序中提供的列表中,并将列表保存到本地,在之后的使用中,若未删除该id和对应的人脸数据,该id可一 直存在;接着打开摄像头,使用h aarcascade_f ro nt alf ace_alt 2.xml 对人脸进行检测,检测到人脸之后会在人脸上画出方框,同时从摄像头获得的图像中按帧读取图片,并将 图片转化为灰度图片,以User.id.编号.jp

42、g的形式格式命名保存在Facedat a文件夹中,方便分类器的特征值获取。为了节约时间,本设计中获取的是200个样本,要提高精确 度可适当增多获取样本数量,但是会增加时间,代码如图4.1:v/h ile Tru e:n从想像头谈取图片su e ess,img=cap.read()才转为蕨度图片g ray=cv 2.cv t Co lo r(img,cv 2.COLOR_BG-R2CEAY)#检刎人腌 f aces=f acedet ect o r.det ect Mu lt iScale(g ray,1.3,5),(x,y,w,h)i f aces:cv 2.rect ang le(ing,(

43、x,y),(x+w,(255,0,0)co u nt 1 4俣存图像cv 2.imw rit e(,Facedat a/User.+str(f ace_id)+.4-s t r(co u nt)+.jcv 2.imsh o w C imag e、,int g)#保持画面的持续。k=cv 2.w ait Key(1)k=27:力通过esc键退出损惊 breake lii co u nt=200,赤潺到2口0个样本后退出携像 break力关闭埸像头 cap.release()cv 2.dest r o yAl 1 ndo w s()图4.1数据获取收集好需要用于训练的图片之后就可以开始训练了。首先

44、导入收集到的图片所在的 文件夹Facedat a,调用h aarcascade_f h)nt alf ace_alt 2.xml 和局部二进制编码直方图进行图片中的人脸检测和特征数据的获取与训练,将训练好的数据存放在f acejrainer 文件夹中,这里因为没有找到合适的方式能够在后续处理.yml文件,所以我将每个人脸 数据都训练为一个单独的.yml文件,这样在后续需要删除时可以直接将文件删除。考虑 到每次训练都需要大量的图片,若不处理会占用大量的储存空间,所以在训练完成后会 将Facedat a文件夹整个删除,然后会重新新建一个Face dat a文件夹供下次使用。最后 将添加id后的列表

45、列表保存到本地。代码如图4.2:14lecGnizer-cv 2.t ace.LB?lFaceReo o g iiizcr_cicat 5()dat e ct o r=cv 2.C as c adeCl as s if ie r(h i i r c ac c ade_ f r o u t s lf n r*_ 2112 ml)-g et Ima;c c/aidL ab c 15(pat h)mag ePat h s=o s.pat h.jo in(pat h.f)f os.Lis t dir(pat h)H f aceSaiiples=ids=1 imag eFat h imazePat h

46、s-PIL_mg-Inag e,o penimag ePat h).co nv ert(L)注化为仄度图像 img _nu mpy=r.p.array i.PIL_mg,iini)id=int Co s.pat h.s plit(inas eFat h)i-ll.s plit C.)11)f aces-de t e ct o r.dct cct Mu lt iScale(it t g _t ixmpy),x,y.v,h):f ace?f ace Saiiple s.appenddu g nu nipv ly、+h,a.x+v)ids.appo nd(id?1-tv,f ace s apples

47、,idsf f h o v mf o(t Lt le=inio,massag e=止江山线 21 If n?M一些 口 盾将,)f ace s,ids=g et InasesAndlabeIs(pat?;)reco g nizer.t rain(accc,np.array(ida)i&co&nizer.v iit eG f h u t il.imlcec C Fa,.?di.)o s.nk dir(7 icedat s)上青空宜珀数据又件英m-np.array(nanc)np.sav eC 11 s t.npy,n)M寄存列表图4.2数据训练4.3人脸识别在人脸识别时同样需要进行人脸检测,所以

48、在开始运行之前需要先引入h aar分类 器和LBPH进行检测和特征提取。因为考虑到人脸识别的过程是需要占用内存资源的,但是如果系统中本身是没有数据的,这时候再去运行人脸识别的话就浪费了内存资源,所以在选择程序的人脸识别功能的开始,会首先判断是系统里是否已经存在了数据,如 果有数据就继续接下来的程序,打开摄像头。如果没有数据的话,就会跳出,当前无数 据!的提示,然后中断本次的所有操作,返回主程序的界面,实现代码如下图4.3:co u nt=-1xt le n(names)=0:err=Tk()err.w it h draw。sh o v mf0(t it le=inf o,inessag/当前无

49、数据!)Ert lllllco r sdig e(len(n3Jies)if names co i,1”】co u nt=co break if GOu nt=T jnd co=len(names)-l):err=Tk()err.w it h draw0sh o v inf o(t it le=inf or,mes sag e=当前无热据!)ret u rn.C X i J X 1 图4.3判断是否有数据在判断为有数据之后,会打开摄像头,导入第一个yml文件,进行人脸检测,检测 出人脸后在人脸上画框。同时,获取摄像头得到的人脸的特征,将其与第一个.yml文件 中的数据对比,若没有得到结果或者得

50、到了置信度高于50的结果,则认为该.yml文件15中的数据与这个人脸的特征数据不对应,即本次的识别失败,紧接着立刻读取下一 个.yml文件中的特征数据,若依然没有读取到符合要求的数据,就会循环读取 f acejrainer 文件夹中的.yml文件,若读取到符合的.yml文件则不会继续再读取下一个.yml文件,并显示出当前人脸的数据,同时以(100-置信度)的形式表示正确可能性在 摄像头窗口显示出来。当摄像头上读取到其他人不与当前的.yml文件数据相符的人脸的 时候,系统会继续往后读取.yml文件,重新开始循环读取的过程。识别进行是可通过按 Esc按键退出,实现代码如图4.4:v h ile T

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服