本项目设计并实现了一个应用于小型企业员工考勤的刷脸考勤系统,整个系统使用Python语言开发,并利用Pyqt5作为桌面端系统界面的开发工具,以SQL Server作为数据库管理系统,最终集成所有刷脸考勤所需的功能模块并以可视化界面的方式供系统管理员即负责考勤的公司特定人员进行操作。

本篇博客会交代一下本项目总体实现的功能模块和效果图,后面会分多篇博客分模块讲解本项目的具体实现,方便大家各取所需。

文件目录如下:


开发环境如下:

本系统采用的开发平台是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


功能模块拆分如下:

  1. 员工信息录入、显示、查询、删除和修改功能:考勤管理员根据员工ID添加、编辑、删除员工信息,并可根据ID、姓名模糊查询并显示所有查询到的员工的信息;
  2. 员工人脸图像采集功能:输入员工ID和姓名与数据库匹配成功后即开始采集该员工一定数量的脸部图像,并且在采集时实时完成对人脸的裁剪和对齐操作,确保存入对应文件夹的都是整齐的人脸图像;
  3. 模型训练和测试功能:实时显示分类模型训练进度和实时的准确率和损失函数的值,在训练完成后自动保存该模型并提供训练集和验证集上每轮的准确率和损失函数值的曲线方便验证模型分类效果;
  4. 员工考勤信息管理功能:考勤管理员可以查看所有员工在各次考勤中的签到情况,双击员工ID或姓名单元格可查看该员工的所有考勤情况,双击某次考勤的截止时间单元格可以查看该次考勤中所有员工的签到情况。并且所有在考勤截止时间前签到的员工信息会以绿色背景标注,方便查看和统计;
  5. 考勤信息导出功能:考勤管理员可将整个考勤信息表以Excel表格的格式保存到桌面,方便进一步处理;
  6. 考勤时间段设置功能:考勤管理员设置签到截止时间,系统自动新增对应数据库字段用于记录并开始该次刷脸考勤;
  7. 员工签到表显示功能:显示已签到员工列表,并用不同颜色区分迟到和未迟到员工;
  8. 语音播报功能:员工签到成功时语言播报该员工姓名,方便员工确认,并在播报同时完成数据库录入;
  9. 刷脸考勤功能:加载已训练的分类模型,对摄像头截取的人脸图像进行分类预测并根据预测的标签从数据库查询对应员工姓名以进行语音播报和考勤信息录入。

项目各功能实际运行演示,有图有真相:

整个系统采用堆叠式界面设计,其中每个子界面都可单独运行和显示,在这里堆叠于一个主界面中方便使用,详细流程如下:
(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 签到界面


基于深度卷积神经网络的人脸识别考勤系统-VGG-PYTHON-QT(1)相关推荐

  1. 基于深度卷积神经网络进行人脸识别的原理是什么?

    原文:https://www.zhihu.com/question/60759296 基于深度卷积神经网络进行人脸识别的原理是什么? 这里的人脸识别包括但不限于:人脸检测,人脸对齐,身份验证识别,和表 ...

  2. 基于JSP/SERVLET实现的人脸识别考勤系统

    人脸识别考勤系统使用说明书 此系统是人脸识别考勤系统的后台管理系统,考勤数据从人脸识别机器上获取,自动识别员工信息记录考勤.系统基于JSP/SERVLET来开发实现,开发工具采用IDEA或ECLIPS ...

  3. (开源)简单的人脸识别考勤系统(python+opencv+dilb)

    简单的毕业设计,python+opencv+dlib,注意配置环境,打开工程文件直接运行.演示视频前往B站(开源)人脸识别签到系统_哔哩哔哩_bilibili 源文件及使用说明百度网盘下载链接: ht ...

  4. (论文阅读)基于融合深度卷积神经网络的人脸识别方法研究-褚玉晓

    一.基于融合深度卷积神经网络人脸识别方法设计 1.PCA算法提取人脸特征 主要成分分析法(Principal Component Analysis,PCA) 第一步,计算人脸图像的平均值并执行归一化的 ...

  5. 基于CNN卷积神经网络的人脸识别

    一.利用卷积神经网络进行人脸检测,称作CFF(卷积人脸搜索) 卷积神经网络人脸识别的大致流程: 1)对本地人脸进行特征提取 2)打开摄像头(opencv) 3)从cap获取信息 4)找人脸 5)对人脸 ...

  6. 基于MTCNN卷积神经网络的人脸识别

    该文作者开源了测试代码,源代码可以在我之前的文章中或者Github中去下载,我对源代码的数据输入部分做了一些改动以更方便的实现人脸检测,即将  facedetect_mtcnn.py主函数文件更改为如 ...

  7. 深度学习(十五)基于级联卷积神经网络的人脸特征点定位

    基于级联卷积神经网络的人脸特征点定位 原文地址:http://blog.csdn.net/hjimce/article/details/49955149 作者:hjimce 一.相关理论 本篇博文主要 ...

  8. 基于卷积神经网络的人脸识别(自我拍摄获取数据集)

    基于卷积神经网络的人脸识别 完整代码.数据请见:https://download.csdn.net/download/weixin_43521269/12837110 人脸识别,是基于人的脸部特征信息 ...

  9. python人脸识别系统界面设计_基于卷积神经网络的人脸识别系统的设计(Python)

    基于卷积神经网络的人脸识别系统的设计(Python)(论文10000字,外文翻译,参考代码,流程图,人脸图像库) 摘要:随着社会的进步与发展,个人信息的保护变得十分重要.传统的密码保护方式已经不再满足 ...

最新文章

  1. Pytorch——YOLOv3
  2. Java泛型:类型擦除
  3. 现代密码学3.7--CCA安全
  4. 社区计算机义务维修策划书,计协义务维修策划书(模板).doc
  5. git 32位_编译64位的BorderlessGaming
  6. telnet远程登录协议
  7. 计算机开机出现ROM,电脑无法开机提示exiting pxe rom的解决办法
  8. 5ecsgo正在发送客户端_MQTT X 桌面客户端使用指南
  9. FishC笔记—14 讲 字符串:各种奇葩的内置方法
  10. Django中render、render_to_response、HttpResponse、JsonResponse、Response的使用
  11. Struts2(Maven),小白版
  12. ECSHOP整合第三方登录,QQ登录、新浪微博登录、支付宝登
  13. 设计模式学习之—我是一个粉刷匠(装饰模式)
  14. shell 的大于等于小于等
  15. IKEv2的密钥计算方式
  16. 【沃顿商学院学习笔记】领导力——Business Impact:03商业如何驱动影响力的案例Some Cases
  17. 图像处理篇二:图像颜色转换(OpenCV、PIL)
  18. WechatPay-API-v3接口规则
  19. sftp命令上传本地文件到服务器,使用sftp命令上传文件夹方法
  20. 关于80端口和tomcat默认8080端口

热门文章

  1. “Word文件设置了多级列表,却还是不能创建目录”的解决办法
  2. 西安某1000M3浮顶油罐设计(成品油库1000m³油罐设计与制造工艺)
  3. JDBC四个核心对象及其常用方法
  4. 大二学科不挂科 速冲方法推荐(数据结构+计组+操作系统+算法+数据库+计网)
  5. 十三五期间,北京智慧交通建设内容有哪些?怎么建?
  6. 前端小白-HTML简介
  7. android 程序a启动程序b的权限,android app微信分享
  8. 树莓派无法识别摄像头+树莓派中opencv调用视频流人脸检测
  9. /proc/sysrq-trigger
  10. C 语言为什么不会过时?