超详细|基于MATLAB的人脸考勤系统

超详细|基于MATLAB的人脸考勤系统(深度学习方法)
在这里插入图片描述

随着信息技术、大数据、人工智能技术的发展,人体生物特征的应用已越来越广泛,指纹、虹膜、人脸等生物特征的身份认证技术广泛应用到人们的工作、学习、生活中,带动了新一轮信息安全技术改革。

作者在上一个系列里介绍了三种人脸识别的方法及其程序实现,本文将人脸识别方法应用于考勤管理中,能够通过调用摄像头以及静态图像输入的方式进行图像采集以及人脸识别,并进行数据统计,具有省时、高效、准确性高的特点,提升课堂管理和教学管理

00 目录

1 实验条件
2 系统设计
3 系统实现
4 源码获取
5 展望

关于人脸识别技术的背景以及研究历程在上一篇已经介绍过,这里不再赘述,下面直接开始介绍系统的设计过程。

01 实验条件

系统基于MATLAB开发,在人脸识别上会用到卷积神经网络,因此需要用到深度学习的模块,在人脸检测上由于需要使用摄像头,因此需要安装下面的硬件支持包
在这里插入图片描述

这个安装包在附加功能中可以找到
在这里插入图片描述

在matlab中将这个安装包安装好后在命令行输入imaqhwinfo(‘winvideo’)
在这里插入图片描述

如果红框里显示有设备即安装成功了。

02 系统设计

2.1 系统流程

在这里插入图片描述

基于MATLAB的考勤系统的工作流程如上,主要由摄像头和GUI组成,首先需要输入管理员密码进入考勤系统,可通过摄像头或静态图像采集图像,对于采集的图像,进行人脸检测,检测到人脸后会进行预处理,包括裁剪、尺寸归一化、灰度化、直方图均衡化;之后会用预训练的卷积神经网络进行人脸识别

2.2 CASIA_Face数据库介绍

由于缺少考勤的人脸数据库,因此采用公开的人脸数据库,CASIA-FaceV5亚洲人脸数据集有500人、每个人5张图片,共2500张图片,图片大小为640*480。数据集共有500个文件夹,文件夹名称为:000499;一个文件夹表示一个人,里面有5张图片,图片名称为:文件夹名_0.bmp文件夹名_4.bmp,具体如下图所示,采用其中4张照片作为训练集,一张照片作为测试集进行训练,
在这里插入图片描述
在这里插入图片描述

2.3 人脸检测

本文采用**Viola-Jones(VJ)**算法进行人脸检测,VJ算 法 是 由 学 者 Paul Viola 和
Michael Jones 共同提出的,有着定位速度快的优点。

VJ 算法主要分为三部分。 第一部分,采用积分图像的方法快速提取图像的特征信息;第二部分,利用弱分类器对提取的特征进行分类,减少计算复杂度;第三部分,再采用级联分类器进一步分类,提高人脸定位的精确度。

Viola-Jones人脸检测算法使 用Haar特征值进行目标检测:通过Adaboost算法生成级联分类器,直接对图像的一小块区域进行特征匹配,从而判断该区域内是否有人脸存在.该算法包括训练和检测两部分:训练部分使 用 Adaboost算法从预先收集的正负样本中提取特 征值进行计算,最终生成一个级联分类器;检测部分使用级联分类器,通过检测窗口的移动和缩放,对图像上的人脸进行检测

关于这个算法在这篇博客中讲的挺好,感兴趣的同学可以自行学习,这里就不再细述。
目标检测-Viola-Jones

在MATLAB中给出了对于Viola-Jones算法的调用,十分方便,并且对于人脸检测的精度很高,因此这里采用MATLAB内置的Viola-Jones算法进行人脸检测。
在这里插入图片描述

该程序效果如下:
在这里插入图片描述

2.4 图像预处理

在这里插入图片描述

依据Viola-Jones算法确定的人脸坐标对输入图像进行裁剪,由于不同图像所裁剪的人脸区域尺寸不同,为方便训练卷积神经网络,因此需将裁剪后的人脸图像进行尺寸统一,此后,通过灰度化可以减小输入数据维度,同时也可减少因光照变化导致的灰度变化对正确识别的影响;图像的直方图是图像的重要统计特征,它可以认为是图像的灰度密度函数的近似。灰度直方图是一个离散函数﹐它表示数字图像每一灰度级与该灰度级出现频率的对应关系。直方图均衡化的基本思想是把原始图像的直方图变化为均匀分布的形式,这样就增加了像素灰度值的动态范围从而达到增强图像整体对比度的效果。
在这里插入图片描述

该流程效果如下:
在这里插入图片描述

2.5 模型训练

在对数据库的图像进行预处理后,就可以利用该批数据库进行训练了,本文设计的网络结构以及对应参数如下,在MATLAB中进行分类训练,结果如下,对该模型进行训练后,就可以进行人脸识别了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从训练结果来看,模型的训练集和测试集准确率都还可以,虽然精度不是特别高,但用作二次开发和改进是比较容易的。

03 系统实现

本文利用MATLAB GUI将以上功能集成,设计出如下的考勤系统:

3.1 进入系统

命令行输入guide,选择choose_sys.fig,即可进入系统。
在这里插入图片描述
在这里插入图片描述

在输入管理员账号和密码后,即可进入考勤系统,若没有管理员账号和密码,可以点击注册。
在这里插入图片描述

首次使用时需要对CNN网络进行训练,点击“训练CNN”即可,若需自行添加图像,可将图像数据添加入CASIA_Face文件夹,命名规则需与其它文件一样。
在这里插入图片描述

3.2 识别

识别方法有两个,一个是静态图像识别,一个是实时摄像头识别。

3.2.1 静态图像识别

点击“读取静态图像识别”,即可读取静态图像,自动进行人脸检测-预处理-人脸识别,结果如下:
在这里插入图片描述

如图,GUI中会显示原图像,裁剪后的人脸图,以及库内匹配的人,并且会在GUI中显示识别结果的人的标签,打卡次数以及打卡时间。

对于非人脸库中的图像,库内也能识别,不过准确率不高,可能是因为参与训练的人脸数据本身背景杂乱,不标准,样本少,卷积神经网络精度本身不高,这也是作者以后希望改进的方向,不过也是有少数几个图像可以对非库内图像进行识别,如下:
在这里插入图片描述

3.2.2摄像头自动识别

作者没有载入自己的数据,使用电脑识别手机显示的图像,结果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

摄像头采集到人脸后,会暂停进行人脸识别3秒,此后再进行识别,而采集到非库内人脸时,也会暂停进行人脸识别3秒,并且可以看到对于库内的人脸数据识别准确率是比较高的。

3.3 打卡统计

在一系列的打卡后,可以对打卡记录情况进行统计,点击“打卡统计”,如下
在这里插入图片描述

会产生每个标签人员打卡次数的记录表以及打卡及格线,同时会产生对应的excel数据表格
在这里插入图片描述

04 源码获取

https://mbd.pub/o/bread/ZJmWm5py
(保证运行)

05 展望

本系统实现的是人脸检测、图像处理、卷积神经网络训练、人脸识别等功能,对于人脸库的识别有良好的效果,但仍然有许多问题,比如对于非库内人脸识别效果不佳,容易将非库内人脸识别为库内人脸等问题,但本系统的注释完全、清晰,能够方便各位同学对系统进行二次开发和改进。

猜你喜欢

转载自blog.csdn.net/sfejojno/article/details/130841085
今日推荐