本项目设计并实现了一个应用于小型企业员工考勤的刷脸考勤系统,整个系统使用Python语言开发,并利用Pyqt5作为桌面端系统界面的开发工具,以SQL Server作为数据库管理系统,最终集成所有刷脸考勤所需的功能模块并以可视化界面的方式供系统管理员即负责考勤的公司特定人员进行操作。
本篇博客会交代一下本项目总体实现的功能模块和效果图,后面会分多篇博客分模块讲解本项目的具体实现,方便大家各取所需,需要项目源代码的可以留下具体联系方式进行沟通。Q是
2242707307
文件目录如下:
开发环境如下:
本系统采用的开发平台是Pycharm,后端开发语言使用Python-3.7.9,数据库使用SQLServer,桌面端界面使用Pyqt5框架。其中Python使用到的主要依赖包如下:
Python依赖包及版本号
依赖包 | 版本号 |
dlib | 19.17.99 |
keras | 2.4.3 |
numpy | 1.19.5 |
markdown | 3.3.4 |
opencv-python | 3.4.3+contrib |
pip | 20.3.3 |
pyqt5 | 5.15.2 |
tensorflow-gpu | 2.1.0 |
pymysql | 2.1.5 |
功能模块拆分如下:
- 员工信息录入、显示、查询、删除和修改功能:考勤管理员根据员工ID添加、编辑、删除员工信息,并可根据ID、姓名模糊查询并显示所有查询到的员工的信息;
- 员工人脸图像采集功能:输入员工ID和姓名与数据库匹配成功后即开始采集该员工一定数量的脸部图像,并且在采集时实时完成对人脸的裁剪和对齐操作,确保存入对应文件夹的都是整齐的人脸图像;
- 模型训练和测试功能:实时显示分类模型训练进度和实时的准确率和损失函数的值,在训练完成后自动保存该模型并提供训练集和验证集上每轮的准确率和损失函数值的曲线方便验证模型分类效果;
- 员工考勤信息管理功能:考勤管理员可以查看所有员工在各次考勤中的签到情况,双击员工ID或姓名单元格可查看该员工的所有考勤情况,双击某次考勤的截止时间单元格可以查看该次考勤中所有员工的签到情况。并且所有在考勤截止时间前签到的员工信息会以绿色背景标注,方便查看和统计;
- 考勤信息导出功能:考勤管理员可将整个考勤信息表以Excel表格的格式保存到桌面,方便进一步处理;
- 考勤时间段设置功能:考勤管理员设置签到截止时间,系统自动新增对应数据库字段用于记录并开始该次刷脸考勤;
- 员工签到表显示功能:显示已签到员工列表,并用不同颜色区分迟到和未迟到员工;
- 语音播报功能:员工签到成功时语言播报该员工姓名,方便员工确认,并在播报同时完成数据库录入;
- 刷脸考勤功能:加载已训练的分类模型,对摄像头截取的人脸图像进行分类预测并根据预测的标签从数据库查询对应员工姓名以进行语音播报和考勤信息录入。
项目各功能实际运行演示,有图有真相:
整个系统采用堆叠式界面设计,其中每个子界面都可单独运行和显示,在这里堆叠于一个主界面中方便使用,详细流程如下:
(1)考勤管理员登录: 限制只有管理员身份可以登录本系统,同时会提示ID不存在或密码错误以完善用户体验。如图1所示:
图1 管理员登录界面
(2)员工信息管理:实现考勤管理员对所有员工信息的添加、显示、编辑、查询、删除等操作。考勤管理员双击左侧员工信息表中任意员工信息行,即可将该行信息映射到右侧表单中,管理员可以任意地修改员工姓名、身份信息,当系统管理员修改该员工身份为管理员身份时,会重置该员工登录密码为“admin”用于登录此管理员端系统,界面如图2所示:
图2 员工信息管理界面
(3)员工信息模糊搜索:在搜索栏,系统会同时对员工ID和员工姓名进行模糊搜索,将所有符合的员工信息显示在界面上,双击任意员工信息即会将该员工信息映射到右侧表单中方便编辑和查看,如图3所示:
图3 员工信息查询界面
(4)人脸图像采集:首先由考勤管理员或员工自己输入员工ID和姓名确认数据库中存在该员工,然后打开摄像头,点击开始采集即开始实时采集人脸图像并同时进行人脸对齐,并在右侧显示采集进度条方便提醒采集进度,将图像保存
到本地对应文件夹。采集图像界面如图4和5所示:
图4 采集图像界面
图5 采集图像时界面
(5)人脸识别模型训练:点击训练即可自动开始训练分类模型,并实时显示训练进度,训练完成后系统会将每轮训练获得的训练集和验证集的准确率值和损失函数值绘制成曲线,以直观地验证模型的分类效果,如图6所示。点击测试按钮即可对训练所得的分类模型在测试集上进行测试,并最终得到测试集准确率以评估模型分类效果。模型训练界面如图7所示:
图6 Acc and Loss曲线
图7 管理员端模型训练界面
(6)考勤信息统计:显示所有员工的考勤信息,前两列为员工的身份ID和姓名,之后每列记录员工的签到时间,表头标签即为该次签到的截止日期和时间。点击员工ID或姓名可单独显示该员工的所有考勤记录,点击日期可单独获得该次的所有考核名单,并显示人数信息,以绿色标识准时考勤,方便考勤管理员查看。并可支持导出所有考勤信息为Excel文件,进一步方便管理员查看和统计。如图8和图9所示:
图8 考勤信息统计界面(按单个用户统计考勤信息)
图9 考勤信息统计界面(按截止时间统计考勤信息)
(7)考勤截止时间设置:在设置考勤截止时间时提供时间选择器,由签到管理员或签到员设置考勤截止时间,设置完成后就不可再修改,且考勤截止时间默认必须为当前时间后的一个小时以后,以免管理员设置出不合理或错误的考勤截止时间。当考勤截止时间完全相同时会判定为同一次考勤,即将签到信息记录在同一数据库字段下。如图10所示:
图10 设置签到截止时间
(8)语音播报功能:系统设有语音播报勾选按钮,选中后当有员工签到信息被录入数据库时即会语音播报“签到成功”及该员工姓名,反之则不播报,方便员工考勤签到。
(9)人脸识别功能:通过摄像头实时检测员工人脸图像,并交给提前训练获得的图像分类模型,获得预测结果并显示,若连续4次识别结果为同一人且该员工未签到则将该员工的签到时间录入数据库。刷脸签到界面如图11所示。
(10)考勤信息更新功能:显示已签到的员工的签到时间和ID等信息,且每次考勤,每人只会录入一次,即使检测到重复也不会修改签到时间,即只保存该员工最早的一次签到时间。
图11 签到界面