基于python人脸识别系统.docx
《基于python人脸识别系统.docx》由会员分享,可在线阅读,更多相关《基于python人脸识别系统.docx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于python人脸识别系统基于Python人脸识别系统 Face recognition system based on Python 摘要 随着科技的不断发展,人工智能在人类生活的应用越来越普及,作为当前最受关注的生物特征识别的方法,人脸识别在考勤、边检、安防、运输等领域有着巨大应用前景,是人工智能与计算机视觉领域的探讨热点之一。本文是基于python语言实现的人脸识别系统,利用keras搭建CNN卷积神经网络构造一个18层网络结构的识别模型,实现人脸录入、图像处理、模型训练、识别人脸等功能。主要描述图像处理与模型搭建两个模块。图像处理包括图像的尺寸比例调整、数据归一化等学问,模型搭建包括
2、模型建立、训练、评估。最终识别精确率达到99.6% 。 关键词:人脸识别 图像预处理 模型训练 CNN Abstract With the rapid development of science and technology, artificial intelligence is more and more popular in human life. As the currently most concerned method of biometrics recognition, face recognition has great application prospects in the
3、 fields of time and attendance, border inspection, security, transportation, etc. It is one of the research hotspots in the field of artificial intelligence and computer vision. This paper is a face recognition system based on python. It use keras to build a convolutional neural network to construct
4、 an 18-layer structure recognition model to realize functions such as face input, image processing, model training, and face recognition. It mainly describes two modules of image processing and model building. Image processing includes knowledge such as image size adjustment and data normalization,
5、and model building includes model establishment, training, and evaluation. The final recognition accuracy reached 99.6%. Key words: Face recognition Image preprocessing Model training CNN 书目 第一章 课题背景 1 1.1课题来源 1 1.2 探讨意义 1 1.3 国外探讨现状 2 1.4 国内探讨现状 2 其次章 需求分析 3 2.1技术可行性分析 3 2.2系统需求分析 3 2.2.1程序功能需求分析 3
6、 2.3开发环境需求 4 第三章 系统概要设计 5 3.1各模块功能介绍 6 3.1.1人脸录入模块 6 3.1.2搭建模型模块 6 3.1.3 人脸识别模块 7 第四章 系统具体设计 8 4.1 整体运行流程图 8 4.2 图像预处理设计 8 4.2.1调整图像尺寸 8 4.2.2交叉验证法划分数据集 10 4.2.3数据标签one-hot编码 10 4.2.5像素归一化 11 4.2.6 补充说明 12 4.3 卷积神经网络模型的设计 12 4.3.1卷积神经网络 12 4.3.2模型设计 15 4.3.3模型训练 17 第五章 系统 识别结果 20 结束语 22 参考文献 23 致谢 2
7、4 第一章 课题背景 1.1课题来源 随着线上支付在生活中的快速普及,人们出行不带钱包只带手机渐渐成为一种趋势,然而不带钱包,通常就会忘带身份证。而如今现实生活的方方面面中,像银行、金融借贷、买房、购车、住宿、旅游、购物都须要随身携带身份证。而随着科学技术的快速发展,刷脸时代已经强势进入我们的生活,刷脸支付、刷脸安检、刷脸考勤靠刷脸办事正快速渗透我们的日常生活和工作。这种追求更加便捷生活方式的理念为人脸识别技术创建出很多新的应用场景,并给予它新的生命,使得人脸技术成为近几年的探讨热点。然而,这项技术早在20世纪的60年头便已经有学者绽开探讨,尤其在安防领域,已经研发出不少的应用并投入实际运用。
8、大众对于该技术的理解更多的是在欧美犯罪电影中出现的FBI和CIA,探员通过查询世界各个角落的监控器,将犯罪嫌疑人与人脸识别系统相比对,从而确定犯罪嫌疑人出现过的地点。虽然情节夸大了该项技术的应用,但事实上人脸识别技术早已被很多国家的大量运用在安防领域。它并不是一项新出现的技术,只是缺乏在人们日常生活中的应用场景,使得人脸识别技术直到近几年随着智能化时代的到来才渐渐被大众熟知。在国内,对该项技术的探讨起先于1990年,目前主要应用在考勤、边检、运输、安防等领域。 1.2 探讨意义 随着人工智能在计算机技术领域的快速发展,智能化产品渐渐渗透在人类社会生活中的各个方面,使得社会的运行效率大幅度的提升
9、,人类也渐渐从体力劳动中解脱出来,将更多的时间放在技术创新创建上,而人脸识别作为人工智能中的重要技术之一,是富有应用意义和挑战性的探讨课题之一。相对于其他生物特征识别技术,人脸识别技术因为具有非侵扰性、非强制性、非接触性、便捷性等优点,符合人们对便捷生活方式的追求和对身份识别的快速、精确、平安的要求,使得它在身份识别、自动监控、人机交互等领域拥有巨大的发展潜力。人脸识别技术覆盖了计算机视觉、模式识别、数字图像处理、数学等诸多领域学科内容,虽然对该项技术的探讨已取得一些成果,但在实际应用中仍存在着不足和困难,比如人脸识别的背景环境,脸部表情、妆容、姿态、发型的改变,都会降低识别的精确性,给识别带
10、来困难。降低识别错误率、提高识别速度、实时性要求是人脸识别技术当前迫切须要解决的问题。1.3 国外探讨现状 20世纪60年头,人脸识别技术便已经有人探讨,但始终到80年头后期这段时间内人脸识别技术都只是作为一般性的问题探讨,不能自动完成识别任务,没有发表具有代表性的理论探讨成果。直到90年头后随着计算机运算速度的提高,人脸识别技术发展迎来了重大突破,诞生了很多代表性的算法,“特征脸”法1 樊慧慧. 智能家居环境下动态人脸身份识别系统设计D.2015. 、基于线性判别分析的Fisherface方法, “作差法”,弹性图匹配技术等等,使得人脸识别技术突飞猛进。如今,人脸识别技术已被运用到很多公众场
11、所,尤其是“911”事务后,国外许多大型公众场合已经应用这一技术。美国等欧美国家在人脸识别技术有着较大的成就,早在90年头,美国军方就组织了FERET人脸识别算法测试,对人脸识别技术起到主动的推动。2000年后,人脸识别技术渐渐从学术探讨走向商业应用。如今,经过几十年的发展,人脸识别技术已经被广泛应用到金融、安防等其他众多领域。1.4 国内探讨现状 国内对于人脸识别技术的探讨起先于上世纪80年头2 许丽艳. 人脸识别技术探讨D.天津高校, 2010. ,但到90年头后期才被很多院校和机构普及,相比其他国家起步相对较晚,但是进展快速且成果斐然。如苏光大教授提出的最佳二维人脸理论和MMP-PCA算
12、法、李子青带领的探讨团队提出了基于近红外的人脸识别技术、汤晓鸥试验室发表的DeepID系列算法等等,其中为08年奥运会安保3 曹健. 人脸检测和识别系统的设计与应用D. 南京信息工程高校,2013. 4 人脸识别系统应用奥运开幕式J.中国防伪报道, 2008, 000(009):59. 供应保障的人脸识别系统和智能视频监控系统就是李子青教授在中科院自动化所研发。不只是在学术探讨上,在商业上,也涌现了许多科技公司专注于这项技术的探讨,如商汤科技、依图科技、旷视科技都是国内探讨人脸识别技术的知名企业,且在该领域均取得不错的成果,如依图科技分别在2017和2018的全球人脸识别挑战赛FRPC竞赛中获
13、得冠军,在2018年的竞赛测试结果显示依图科技的识别算法在千万分之一的误报状况下识别精确率接近99,达到接近极限水平。而且依据NIST在2018年依据全球人脸识别算法测试状况发布的排名中,前五名中三名被中国公司包揽5 弘毅. 2019人脸识别技术50强J.互联网周刊,2019(21). 。这些数据表明我国的人脸识别技术在国际上名列前茅。其次章 需求分析 人脸识别技术是近几年人们的探讨热点和探讨焦点,它能应用于很多领域,从一起先的安防到如今的金融、教化、考勤等,目前我国和其他国家有大量的学者在不断的深化探讨。 2.1技术可行性分析 在着手开发之前,我查阅了大量资料,对比目前人脸识别技术的多种算法
14、,卷积神经网络能对极少的预处理过的原始像素,快速识别出特征规律,因此选择卷积神经网络算法做人脸识别。通过搭建一个多层网络模型,对模型输入人脸数据进行训练,使模型能够对实时视频流中出现的人脸进行精确识别。 训练模型须要打算数据集,利用摄像头收集身边人的脸部图片作为数据集,为了更好的验证模型,须要将数据集根据交叉验证原则划分训练集、验证集和测试集三部分。采纳交叉验证是因为手动划分数据集可能会使数据分布不匀称,导致训练出来的模型偏向于数据较多的,造成在测试或在实际预料时数据较少的分类不正确。交叉验证法通过不同比例对样本进行划分,重复运用样本数据,能够得到多组不同的训练集和测试集,使模型训练效果更优。
15、 很多机器学习算法不能干脆对标签数据进行操作。它们要求全部的输入变量和输出变量都为数字形式。one-hot编码把分类数据转化为二进制格式,分类的输入和输出变量都是一样的,供机器学习运用。 图像是由像素组成,彩色图像由3个矩阵所构成,即红(R)、绿(G)、蓝(B)三个颜色通道,每个像素矩阵的取值都0,255区间内的整数,因此当训练数据的值较大时,会导致模型的训练时间增加,速度变慢。因此须要将图片像素归一化,用于提升网络收敛速度,削减网络模型的训练时间。2.2系统需求分析 2.2.1程序功能需求分析 整个程序的最终目的是能识别出人脸。首先通过摄像头获得人脸图片,经过图像预处理后作为模型后期训练的数
16、据,预处理模块的好坏干脆影响着模型的识别精确率。接着利用keras框架搭建卷积神经网络构建一个18层的卷积网络结构,并利用上述处理过的数据供应给模型进行训练,选择其中最优的模型。这两个模块是实现人脸识别功能的基础。所以本设计中所要完成的功能如下所述: (1)人脸录入 这个模块是为了获得图片作为训练数据,主要通过开启摄像头后从视频流中截取人脸图片,并将截图的人脸图片独立保存在文件夹中,文件夹以该人的名字命名;也可以干脆导入人脸图片。(2)图像预处理 该模块主要包括图像的尺寸比例调整、交叉验证、变更维度依次、One-hot编码、归一化等。(3)人脸检测 该模块采纳OpenCV自带的人脸检测工具ha
17、arcascade_frontalface_alt2,检测摄像头的哪个区域为人脸,可用于检测静止图像,视频和摄像头所得到图像中的人脸。(4)模型建立 该模块采纳keras搭建CNN卷积神经网络框架,将预处理过的脸部图像数据作为训练数据,对搭建的神经网络进行模型训练,并评估模型的识别率,得到最终模型。2.3开发环境需求 Anaconda是一个开源的集成各类python工具的集成平台,包含了pyqt等大量包,供应包管理与环境管理功能,能很便利的配置程序设计所需的环境。程序设计采纳Anaconda 3作为开发工具,内置python版本为3.7,通过Anaconda prompt安装tensorflo
18、w,numpy,keras,sklearn等第三方库。值得留意的是不同版本的tensorflow要搭配对应的python版本,安装前最好上网先查询二者对应版本搭配,否则会耗费大量时间在安装上。第三章 系统概要设计 本章节大致介绍了人脸识别系统的整体结构设计流程以及图像处理模块运用的原理。(1)系统整体结构设计如图3. 1所示 图3.1系统结构设计图 (2)图像预处理模块设计如图3.2。 图3.2 图像预处理层次图 3.1各模块功能介绍 3.1.1人脸录入模块 人脸采集模块是为了获得人脸图片作为后期模型的训练数据,人脸图片可以从USB摄像头实时截取,也可以从视频中截取。利用OpenCV的Vide
19、oCapture函数获得摄像头的视频流,利用OpenCV自带的人脸检测工具haarcascade_frontalface_alt2检测摄像头的哪个区域为人脸,进行长宽坐标获得后并截取人脸,将截取到的人脸写入到本地磁盘,作为训练数据。 3.1.2搭建模型模块 该模块的主要功能是进行图像数据处理并建立好模型,是实现人脸识别功能的重点,有以下两个子模块: (1)数据预处理 主要进行图像数据预处理,通过调整图像的尺寸大小和比例缩放、划分数据集、独热编码标签向量化、像素归一化等一系列操作,将样本处理成为可以被卷积神经网络读取的数据类型。 (2)创建模型 采纳keras框架搭建CNN卷积神经网络,搭建一个
20、4层convl+2层maxpool+2层dropout+2层dense+1层Flatten的以softmax函数作为输出的多分类网络结构,采纳预处理后的数据作为样本数据,对模型进行训练;训练选择随机梯度下降法SGD+Momentum作为优化器,以损失函数categorical_crossentropy作为优化目标度量模型拟合程度,选出最优的模型参数,再对数据进行数据增加,通过图片改变扩充数据集,供应给fit_generator函数对模型进行训练,最终将训练后的模型保存在程序书目下。3.1.3 人脸识别模块 同样利用OpenCV的VideoCapture函数打开摄像头,用 OpenCV的人脸检测
21、工具haarcascade_frontalface_alt2,截取摄像头中出现的人脸图片,交予模型识别,并给出识别结果,将识别结果保存在对应的excel文件中。第四章 系统具体设计 本章节主要介绍图像预处理和建立模型这两方面进行具体介绍,对这两模块涉及到的相关原理算法进行叙述。4.1 整体运行流程图 图4.1 系统运行流程图 4.2 图像预处理设计 4.2.1调整图像尺寸 本程序设计的卷积神经网络中加入两层全连接层,全连接层的输入在网络配置时便固定维数,全连接层的核心操作就是矩阵向量乘积,即将输入的特征图矩阵和相应权值矩阵进行乘积运算,矩阵之间的点积运算要求两个矩阵的维数相同,因此固定输入数据
22、的特征图矩阵维数,所以须要对图像数据进行尺寸、比例调整。核心代码如下: def resize_image(image, height = IMAGE_SIZE, width = IMAGE_SIZE): top, bottom, left, right = (0, 0, 0, 0) h, w, _ = image.shape#获得图像尺寸 longest_edge = max(h, w) #对于长宽不相等的图片,找到最长的一边 #计算短边须要增加多上像素宽度使其与长边等长 if h < longest_edge: dh = longest_edge - h top = dh / 2 bo
23、ttom = dh - top elif w < longest_edge: dw = longest_edge - w left = dw / 2 right = dw - left else: pass BLACK = 0, 0, 0 #RGB颜色 #给图像短的两边增加边界成为正方形,cv2.BORDER_CONSTANT指定所加边界颜色为黑色 constant=cv2.copyMakeBorder(image,top , bottom, left, right, cv2.BORDER_CONSTANT, value = BLACK) return cv2.resize(consta
24、nt, (height, width) #调整图像大小并返回 图像大小的调整利用tensorflow库供应的resize()函数,然而假如干脆对图像进行resize,会把图像拉变形(图4.3)。为了使图像resize后仍旧保持原始图片的宽高比,我们须要为图像较短的两边加黑框(图4.4),使图像变成正方形又不失真,最终再利用resize()函数进行图像比例缩放(图4.5)。缩放成64*64的目的是为了削减计算量及内存占用,提升后续网络模型的训练速度。 图4.2 200*300原始图片 图4.3 300*300正方形图像 图4.4 300*300正方形图像 图4.5 64*64正方形图像 4.2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 python 识别 系统
限制150内