基于tensorflow的人脸识别签到系统
2.卷积神经网络理论介绍
2.1人工神经网络简介
人工神经网络(Artificial Neural Network,ANN)作为20世纪80年代来人工智能领域中所兴起的研究热点,人工神经网络主要就是模仿人类脑中的神经元网络从而构建实现的一个模型,即对数据信息进行提取、分析、处理,然后再将处理后的数据进行分类的一个过程,而人们把这整个过程构建成为一个模型,所以人工神经网络其实就是对各种各样的数据进行分类识别的一种模型[4]。
人工神经网络主要的架构是由神经元、层、网络这三个部分所组成,其中作为人工神经网络中最基本的单元神经元,它以层的方式相组成,然后每一层中的神经元和前后层的神经元相连接,从而分为输入层、输出层和隐含层,而这三层相互连接就形成一个神经网络。
(1)输入层:由输入单元组成,接收来自外部环境所传进来的信息,进而这些输入单元可以接收输入数据样本中各种不同的特征信息。
(2)隐含层:介于输入层和输出层之间,这层的作用是对输入数据进行分析,其函数联系着输入层和输出层的变量,使其更配适合数据。
(3)输出层:这一层是对最终结果的生成,每一个输出单元对应着某一特定的分类,为整个网络送出外部系统的结果值。
图2-1生物神经元与神经元网络
进十多年来,人们对人工神经网络ANN的研究不断深入,触及到了各行各业的邻域中来,其中在生物学、医学和智能机器人等各方面的领域里,解决了大量难以解决的实际问题,从而人工神经网络表现出了它具有良好的智能特性,为人类社会造福。
2.2卷积神经网络简介
卷积神经网络(Convolutional Neural Network,CNN) 是一种包含卷积运算且结构复杂的前馈神经网络。卷积神经网络中的人工神经元能够在局部覆盖范围内对周围单元做出响应,因此在图像处理方面具有优越性。卷积神经网络作为人工神经网络中的一种,与其结构大同小异,几乎都是有若干个卷积层和全连接层所组成,但与其它人工神经网络相比,卷积神经网络能够更好的对图像进行分析处理[5]。
卷积神经网络CNN的主要分层结构一般包括以下四层[6]:
卷积层(Convolutional layer):在卷积神经网络中,每层的卷积层都是由多个卷积单元组成,每个卷积单元的参数通过反向传播算法来进行自身优化,简单来说就是从输入层中提取到输入信息中的不同特征,假如整个网络中存在着多层卷积层,就可以从低级特征中反复迭代出更为复杂的特征。
线性整流层(Rectified Linear Units layer,Relu layer):绝大多数卷积神经网络都会使用线性整流函数f(x)=max(0,x)用来作为该层的激励函数,它的作用是通过该函数增强整个神经网络的非线性特性和判断函数,而不改变卷积层本身。除了Relu函数外还有其他能增强网络的非线性特性的函数,例如Sigmoid函数f(x)=(1+e-x)-1、双曲正切函数f(x)=tanh(x),f(x)=|tanh(x)|等,但是Relu函数使用更多[7],这大概是因为它在将神经网络训练速度提升数倍的同时,而不会对模型的泛化准确度造成较大影响。
池化层(Pooling Layer):在经过多次数据集特征训练后,会产生一些无用的参数,从而导致训练效率下降,这时候就需要池化来将冗余的参数去除来提高模型训练效率。
损失函数层(loss layer):该层用于确定训练过程如何“惩罚”网络中的预测结果和实际结果间的差异,它通常也是作为网络结构中的最后一层[8]。
图2-2 经典CNN结构示意图
3.开发工具的安装与神经网络搭建
3.1 开发环境
3.1.1 开发工具
表3-1 软件和重要库基本信息表
序号 名称 版本 备注
1 Windows10 家庭中文版64位 操作系统
2 JetBrains PyCharm 2017.3.6 开发工具
3 Jupyter Notebook 3.6 开发工具
4 TensorFlow 1.14.0 CNN框架
5 OpenCV-python 4.1.2.30 图像处理工具库
6 PyMySQL 0.9.3 PyCharm内置数据库
3.1.2 硬件环境
表3-2 硬件信息表
序号 名称 配置 备注
1 CPU Intel® Core™ i5-8300H CPU@2.30GHz
2 存储 4G内存+500G机械硬盘
3.2 开发工具安装与环境搭建
3.2.1 安装开发工具
(一)PyCharm:作为JetBrains所构建的Python IDE有着一整套实用的工具,它可以帮助用户在用Python语言开发项目时提高效率,它有着IDE所具备的调试、项目管理、智能提示和单元测试等功能。PyCharm社区版是免费提供给开发者使用的,本次实验使用它的最大原因是能够用它来建立项目,这样一来就能对整个项目的每一个文件更好的编辑与管理。
安装下载地址:http://www.jetbrains.com/pycharm/download/#section=windows
(二)Jupyter Notebook:它的本质是一个Web应用程序,它是为了方便开开发人员创建和共享文学化程序文档,它支持实时编码、markdown和可视化等,可用于数据的清洗和转换、机器学习和建立数学模型等,所以本次实验使用Jupyter是为了方便设计对特定人脸识别的TensorFlow框架模型,我们可以在Jupyter里看得到每一步代码的实现是否出错,还能多次对比训练出的模型的准确率,得到出所想要的模型。
安装:Windows下直接cmd中pip安装,语句pip install jupyter。
3.2.2 搭建TensorFlow实验环境
从最基础的卷积神经网络进行研究,在解决问题的开始,我们需要了解深度学习的基本方法,其中要重点对卷积神经网络结构中的卷积层和池化层进行研究,搭建好TensorFlow的实验平台并且要好好理解其工作的原理以及框架结构,这是实验的基础也是重中之重的要点[11]。所以本章节为对实验平台的搭建,以TensorFlow框架为基础,通过其训练模型,从而达到实验目的,训练出准确率较高的模型。
3.2.2.1 安装TensorFlow
Pip安装:在python中的模块库都可以通过使用pip进行安装,它的安装就类似于Linux中的命令语句,特别的方便。由于pip是依赖python做存在的,所以在windows上需要安装python,在官网下下载python3后配置好环境变量即可使用pip下载安装python的库。本次实验环境是基于python3的tensorflow-1.14.0版本,所以直接在windows下CMD中输入pip install tensorflow==1.14.0进行pip安装即可。
图3-1 pip安装界面
4.系统分析
4.1 系统需求分析
4.1.1 系统可行性分析
(1)经济可行性:本人脸识别签到系统是我的毕业设计项目,且整个项目都是在本人笔记本电脑上通过开发工具和网上查找资料后所开发制作的,成本上基本为零。
(2)技术可行性分析:系统所使用的技术和框架都是现阶段社会比较流行的,比如python语言、卷积神经网络、TensorFlow框架等。
4.1.2 可行性分析结论
人脸识别签到系统的设计与开发是为了提高企业或是组织签到的效率,它为了减少人力物力,并且能够准确的识别签到人员,大大方便了人们日常生活的签到流程。从经济上,系统开发成本几乎为零,在技术上来看,所使用的技术都是现阶段比较流行的技术框架。所以根据上诉分析,本人脸识别签到系统开发条件满足,实施方案可行。
4.2 系统总体分析
在本次实验研究人脸识别签到系统中,从实践生活学习的实际角度出发,设计主要涵盖以下功能模块:录入学生信息模块、签到主界面模块、出勤信息模块。如下图4-1所示:
图4-1 系统设计分析
4.2.1录入学生信息模块
在录入学生模块实现中,我将完成以下功能,录入学生的基本信息,并打开摄像头拍下多张学生的正面照作为训练的数据,最后在这个模块中可以直接进行模型的训练,将图像数据加入卷积神经网络中进行训练,得出一个全新的模型,用于签到主界面的模块中。
图4-2 录入学生信息模块
5.人脸识别签到系统的设计与实现
5.1界面UI设计
我们可以在PyQt5中通过代码来编写UI界面,也可以在Qt Designer中来对UI界面的设计,它的特点是实现了视觉和逻辑的分离,不用通过代码来进行设计,而是用拖拽控件的方式来进行对UI界面的设计,能够随时查看控件效果可谓十分的方便,所以本次实验的UI界面都是通过Qt Designer进行设计实现[15]。
图5-1 Qt Designer工作台
如图5-1 Qt Designer工作台所示,我们可以通过拖动左边工具栏中的控件进行对系统UI界面的设计。由于Qt Designer生成的是.ui文件,我们可以通过pyuic5工具进行转换成为.py文件,从而加以使用。
5.1.1主界面设计
在主界面中需要有一个标题“人脸识别签到系统”来标明系统名称,一旁还需要四个按钮来进行页面的跳转或是打开新页面,这四个按钮分别是开始签到、注册、缺勤名单、帮助按钮。在Qt Designer中则需要找到四个Push Button用来分别作为上诉四个按钮,然后再用Frame来分别作为标题窗口和提示窗口,从而得到基本的主界面,如图5-2所示:
图5-2 主界面窗口设计
5.3系统识别测试
进入系统主界面后点击开始进行人脸识别签到,系统通过图5-13进行识别对比数据库姓名进行签到是否成功,当在较暗地方、脸上有其他东西时和遮挡部分脸的情况下测试系统识别是否成功。
图5-13部分代码正常签到情况所得到效果如下图:
图5-14正常签到
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)