【深度学习实战项目】基于OPenCV的人脸识别考勤系统软件开发【python源码+UI界面+功能源码详解】 |
您所在的位置:网站首页 › 人脸检验相关询问部门电话是多少 › 【深度学习实战项目】基于OPenCV的人脸识别考勤系统软件开发【python源码+UI界面+功能源码详解】 |
人脸识别功能演示
摘要:人脸识别(Face Recognition)是基于人的脸部特征信息进行身份识别的一种生物识别技术,可以用来确认用户身份。本文详细介绍了人脸识别基本的实现原理,并且基于python与pyqt开发了人脸识别与信息管理软件,主要实现了通过图片或者摄像头的方式进行人脸识别、人员信息录入与管理以及人脸打卡信息管理等功能。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习,完整的代码资源文件获取方式见文末。 目录 人脸识别功能演示1. 前言2. 软件功能介绍及效果演示2.1 登录注册功能2.2 人脸信息录入功能2.3 人脸识别功能2.4 数据管理功能2.5 识别记录功能 3. 人脸识别原理介绍3.1 基本原理3.2 核心功能代码实现 【获取方式】结束语点击跳转至文末《完整相关文件及源码》获取 --- 1. 前言人脸识别技术是一种生物识别技术,可以用来确认用户身份。人脸识别技术相比于传统的身份识别技术有很大的优势,主要体现在方便性上。传统的身份认证方式诸如:密码、PIN码、射频卡片、口令、指纹等,需要用户记住复杂密码或者携带身份认证钥匙。而密码、卡片均存在丢失泄露的风险,相比于人脸识别,交互性于安全性都不够高。人脸识别可以使用摄像头远距离非接触识别,相比于指纹免去了将手指按在识别区域的操作,可由摄像头自动识别。 目前人脸识别技术已经广泛应用于安全、监控、一般身份识别、考勤、走失儿童搜救等领域,对于提升身份认证的效率起到了重要的作用。而且目前还有更深入的人脸识别的研究正在进行,包括性别识别、年龄估计、心情估计等,更高水平和更高准确率的人脸识别技术对于城市安全和非接触式身份认证有巨大的作用。 博主根据人脸识别技术,基于python与Pyqt5开发了一款简洁的人脸识别与人员信息管理软件,可通过图片或者摄像头的方式进行人脸录入以及人员信息管理、人脸打卡等功能。 登录后的软件初始界面如下图所示: 软件主要功能包括以下几个部分: 登录注册模块;人脸特征及人员信息录入模块:用于人员的人脸信息采集与信息录入;人脸识别模块:识别人员是否已录入数据库,如已录入则显示人员信息,支持单人或多人同时识别;人员已录入信息管理模块:对已录入的人员信息进行管理;人脸识别记录模块:进行已录入的人员进行人脸识别的时间信息,可用于人员的打卡管理等。 下面将详细介绍各个模块的基本功能: 2.1 登录注册功能本软件提供了基础的登录注册功能,对于新用户需要先注册账号才可以进行登录。界面如下: 人脸信息录入功能主要是依据图片或者摄像头来进行人脸的特征采集以及人员相关信息的录入。 人脸采集提供了两种方式:一种方式是通过图片进行人脸采集,另一种方式是通过摄像头拍照的方式进行。 图片采集方式如下: 通过图片或者摄像头的方式,将识别到的人脸与数据库中的人脸信息进行匹配,然后将匹配到的人员信息,显示在软件界面中,人脸识别也可以通过图片或者摄像头的方式进行匹配识别。 图片识别方式如下:(多人情况下,可通过下拉框查看每个人的信息) 支持已录入人员信息数据的搜索,修改,删除等操作。 界面如下: 该功能用于记录已经进行人脸识别信息的人员识别记录,支持搜索、与记录删除功能。 界面如下: 多数人脸识别都包含如下几个流程:人脸检测(Face Detection)、人脸对齐(Face Alignment)、人脸表示(Face Representation)和人脸匹配(Face Matching)。 流程图如下图所示: 【4】人脸匹配 Face Mataching:将两幅图片计算出的特征向量进行对比,获得两幅照片的相似得分。根据相似得分,得分高的可判断为同一人,得分低的判断为不同人。 本软件人脸识别功能的实现主要是通过一款免费、开源、实时、离线的Python人脸识别库face_recognition来是实现,它是一款十分简洁的人脸识别库。 face_recognition是基于业内领先的C++开源库dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。因此,安装face_recognition前需要安装dlib库。 face_recognition与dlib库安装的whl文件已经打包至资源文件中。 3.2 核心功能代码实现基于上述人脸识别流程,我们通过Python的人脸识别库face_recognition来进行实现。首先导入所需的库: import face_recognition(1)载入图片,并识别出人脸矩形区域 使用face_recognition.face_locations函数实现人脸区域检测。 image = face_recognition.load_image_file("face.jpg") face_locations = face_recognition.face_locations(image) face_locations为人脸矩形区域的列表:每一个元素为一个矩形框列表信息---顺序为(顶部、右侧、底部、左侧)人脸录入时,选择最大的一张人脸进行信息录入,实现函数如下: def info_entry_face_detect(img): """ 人脸录入时的人脸检测,每次只录入一张人脸,取面积最大的一张人脸 :param img: :return: """ img = img.copy() face_locations = face_recognition.face_locations(img) max_area = 0 location = [0,0,0,0] if len(face_locations) == 0: return img, None # 解析,取面积最大的一张人脸进行录入 for top, right, bottom, left in face_locations: width = right - left height = bottom - top area = width * height if area > max_area: max_area = area location = [top, right, bottom, left] top, right, bottom, left = location cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 3) return img, location(2)对识别出的人脸区域进行对齐与编码 我们可以使用face_recognition.face_encodings函数对人脸区域进行编码。 face_encodings = face_recognition.face_encodings(img, location)face_recognition.face_encodings函数会返回图片中每一张人脸的128维编码列表信息。 其中:img参数为识别的图像,location为图像中的人脸矩形框列表信息。 (3)人脸匹配 matches = face_recognition.compare_faces(known_encodings, face_encoding, tolerance=0.5)face_recognition.compare_faces将人脸编码列表与候选编码进行比较,以查看它们是否匹配。 known_face_encodings – 已知人脸编码的列表 face_encoding– 与列表进行比较的单张脸编码 tolerance – 将人脸之间的距离视为匹配。越低越严格。0.6 是典型的最佳值。 该结果会返回一个列表信息,True表示与图片匹配的人脸编码。 我们可以将图片中识别到的人脸编码信息与数据库中的人脸编码进行匹配查询,从而识别图片中的人员信息,代码如下: # 对每个编码与数据库人脸进行比对 self.face_names = [] know_ids = [] for face_encoding in face_encodings: matches = face_recognition.compare_faces(known_encodings, face_encoding, tolerance=0.5) if True in matches: first_match_index = matches.index(True) name = face_datas[first_match_index][1] know_ids.append(face_datas[first_match_index][0]) else: name = "unknown" self.face_names.append(name)基于上述原理,为了便于展示与学习。博主最终开发出了一套完整的UI界面可以进行人脸识别、人员信息管理系统软件、打卡信息管理等功能的软件。完整的UI界面、测试图片视频、代码文件,均已打包上传,感兴趣的朋友可以通过下载链接获取。 本文涉及到的完整全部程序文件:包括python源码、UI文件等(见下图),获取方式见文末: 注意:该代码采用Pycharm+Python3.8开发,运行界面的主程序为main.py(不含登录界面);login_main.py(含登录界面)。为确保程序顺利运行,请按照requirements.txt配置Python依赖包的版本。具体请参考资源中的环境配置文档。 关注下方名片【阿旭算法与机器学习】,回复【人脸识别】可获取下载方式 结束语以上便是博主开发的关于人脸识别与人员信息管理软件的全部内容,由于博主能力有限,难免有疏漏之处,希望小伙伴能批评指正。 关于本篇文章大家有任何建议或意见,也欢迎在评论区留言交流! 觉得不错的小伙伴,感谢点赞、关注加收藏哦!更多精彩内容持续更新… |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |