深度学习的人脸识别系统(源码)

人脸是计算机视觉图像之一,因此人脸在计算机视觉、模式识别等多个领域都具有研究意义。人脸识别目前已经被应用于各个领域,比如去银行取钱直接刷脸,公司门禁等等。现在我们学校的学生考勤是用学生卡来实现,并且代打卡现象严重。而把人脸识别应用到考勤中,记录考勤时人脸图像,并给出识别结果,加强了考勤的准确性,完整性。本文利用python语言,并结合使用keras,opencv编写一个基于深度学习的人脸识别系统。可以在这个系统里添加个人的数据集,并通过训练得到分类器,最后通过调用摄像头来识别人脸,从而达到识别考勤的目的。关键词 人脸识别,Python,keras,opencv
目 录
1 引言 1
1.1 课题研究的背景及意义 1
1.2 国内外现状 1
1.3 课题的研究内容 2
2 相关开发技术介绍 2
2.1 神经网络技术 2
2.2 卷积神经网络层次结构 5
2.3 卷积神经网络层次计算 5
2.4 Python语言 11
2.5 Keras框架 11
2.6 Opencv框架 11
2.7 Numpy框架 11
3 系统分析 12
3.1 系统可行性分析 12
4 系统概要设计 12
4.1 系统功能概述 12
5 系统详细设计 13
5.1 数据的采集 13
5.2 人脸采集并灰化 17
5.3 训练模板 18
5.4 人脸识别 20
5.5 身份信息记录 21
6 系统测试 21
6.1 测试目的 21
6.2 测试流程 21
6.3 测试用例 22
6.4 测试总结 25
结 论 27
致 谢 28
参 考 文 献 29
1 引言
1.1 课题研究的背景及意义
时代在进步,科技飞速发展,如何让生活变得更加便利,更加安全已经成为重中之 *好棒文|www.hbsrm.com +Q: @351916072@ 
重。所以我们加快了对人工智能的研发,不仅仅是为了解放劳累且重复的工作,还为了出行的便利和安全[1]。
据了解,人体特征识别技术是利用个人生物特征进行识别的技术。因为个人生物特征具有唯一性,其具有很强的安全性和个体差异性,因此常常用来验证是不是本人。人脸识别系统是对个人特征进行提取,当人用该系统进行验证时,系统会提取本人的人脸特征与已经存在的特征进行比对,若一致则是本人,反之不是本人。从而匹配。当今时代比较流行的身份认证有以下几类。
专属物品:个人身份证,个人学生证等等;
专属知识:密码,密钥等等;
每个人的生物特征:虹膜、个人人脸、指纹、语音等等个人生物特征[23]。
前两类身份认证比较传统,适用范围广泛,但是不得不承认的是缺点很明显。比如类别一每次出行都需要带上,不仅笨重,还增加了出行的负担,而且容易丢失,还容易被别人仿冒。再比如类别二容易遗忘,或者别知道你的密码就会有很大的安全隐患。因此随着科技的发展,诞生了类别三,并且已经在当今社会上小范围的应用了,比如用人脸识别、指纹识别等来解锁或者学生考勤,再比如用人脸去银行取钱之类的都已经能够实现了。而且不像之前的两类那么的易失落,易忘却,容易被别人冒仿。因此其生物特征具有唯一性,安全性极高,所以被普及并且被大范围的应用只是时间与科技的问题。
1.2 国内外现状
对于人工智能发展状况,在市场应用的状况上表现的并不明显,主要差距表现在学术水平以及学习研究的氛围上。在国内,虽然我们也具有一些高科技公司能与国外相竞争不落下风,市场应用也很广泛,但是缺乏人工智能的核心人才。而在国外,不仅仅有高科技公司,市场广泛,还具有很多的核心人才。而造成这些差异的原因主要是国外与国内在高校上的差异,人工智能的研究不是说你说研究就好了,他需要深耕,需要一个良好的研究环境。然而我们得承认的是我们目前的社会环境略显浮躁,大多数人是静不下来研究人工智能相关方面。人工智能需要静下心来来慢慢的思考研究才能取得巨大的发现[4]。
总而言之,不论是在国内还是在外国,人工智能的深度依然需要深挖,远远没有达到社会的需要。
1.3 课题的研究内容
一个研究课题下来,最重要的是把课题理解妥当。我分为两个层次来理解这个课题。第一,是一个人脸识别系统,就是说我们做出来的系统能够识别人脸。第二,是要求深度学习。那么我们就要和机器学习区分开了[5]。
对于如何设计系统的整体,首先要考虑如何训练好分类器,我打算用卷积神经网络模型来写这个训练器,然后才是怎么实现人脸检测,人脸识别,并筛选出哪一个人没有出勤[67]。
对于这个系统的构思设计在技术方面,首先要考虑这个系统是否是安全的,其次才是应用到的知识。这个系统用到了python,keras框架,opencv,numpy几个相对比较安全,稳定,灵活的框架。
2 相关开发技术介绍
2.1 神经网络技术
2.1.1 神经元
什么是神经网络?在我看来,神经网络是由多个神经元链接组合在一起的模型。为每一个神经元都赋予一个权重,这些神经元输出的时候需要用到激活函数[89]。不同的权值以及使用激活函数得不同都会带来神经网络最终输出结果的不同。
神经元在神经网络中是怎么表现的呢?如图2.1单个神经元

图2.1 单个神经元
该模型计算基本是wn+b的格式,其中各个参数的意义是:
n表示输入向量;
参数W表示神经元之间的加权值,就是每一个输入的神经元会都配有一个权重[10];
b表示偏置值bias;
G(z)表示激活函数
a是用来输出的
举个列子,这周公司组织旅游,那么去还是不去这是一个问题,假设取决于两个因素,这两个因素就是两个输入因素,分别用n1,n2表示,并且每个因素的重要程度不同,而这个重要程度就是权重,用w1,w2表示。而公司旅游重要的因素是有没有你喜欢的人陪你去,然后才会考虑去哪里。所以,我们这样理解这些关系:

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/894.html

好棒文