本博客为人脸识别系统项目简介
项目GitHub完整源代码地址:Su-Face-Recognition: A face recognition for user logining
一、运行环境
本系统能够运行在基于PC操作系统Windows环境下,要求Windows操作系统安装Python 3.9 及以上环境,且已安装MySQL数据库。
Python3.9 安装:Python 3.9安装教程
MySQL 安装 :MySQL 8.0.26 安装教程
二、开发环境
1、开发语言
本项目使用Python作为主要的开发语言。
2、开发工具
前端:Qt-Designer
后端:PyCharm
数据库:Navicat
包管理工具:Anacoda
PyCharm安装:PyCharm安装教程
Anacoda安装:Anaconda安装教程
Qt-Designer安装:Qt Designer安装教程
Qt-Designer使用:Qt Designer工具使用
Navicat安装:Navicat 安装教程
3、主要开发技术
(1)Dlib
Dlib是一个机器学习的开源库,包含了机器学习的很多算法,使用起来很方便,直接包含头文件即可,并且不依赖于其他库(自带图像编解码库源码)。Dlib可以帮助创建很多复杂的机器学习方面的软件来帮助解决实际问题。目前Dlib已经被广泛的用在行业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。
Python3.9以上安装Dlib:【Python】dlib 无需编译安装 dlib-19.23.0-cp39-cp39-win_amd64.whl_dlib cp39-CSDN博客
(2)OpenCV
OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法,其使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。OpenCV的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。OpenCV 还提供了机器学习模块,可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。
OpenCV安装:OpenCV安装教程
(3)face_recognition
face_recognition是一个强大、简单、易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统。face_recognition中的人脸识别模型来自开源的机器学习库Dlib,其中的大部分模型用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。
安装前置条件:已安装dlib
face_recognition安装:face_recognition安装教程
face_recognition中文教程:face_recognition GitHub
(4)PyQt5
Qt是一套C++库和开发工具,包括平台 图形用户界面、网络、线程、正则表达式、SQL 数据库、SVG、OpenGL、XML、用户和应用程序 设置、定位和定位服务、短程通信(NFC)和蓝牙)、网页浏览、3D 动画、图表、3D数据可视化和 与应用商店接口。
而PyQt是一个GUI部件工具包,是Qt的一个Python接口,是最强大、最流行的跨平台GUI库之一。PyQt5 将Qt中的1000多个类实现为一组Python模块。
PyQt安装:PyQt5安装教程
PyQt5官网:QtWidgets — PyQt Documentation v5.15.4
(5)百度AI开放平台
百度AI开放平台提供全球领先的语音、图像、NLP等多项人工智能技术,开放对话式人工智能系统、智能驾驶系统两大行业生态。其中的人脸识别技术基于深度学习,能够准确识别图片和视频流中的人脸信息,包含人脸检测与属性分析、人脸对比、人脸搜索、活体检测、人脸特效等能力。灵活应用于金融、泛安防、安全生产等行业场景,满足身份核验、人脸考勤、闸机通行、互动娱乐等业务需求。
百度AI开放平台:人脸识别__百度智能云
三、功能概述
本项目开发一套基于人脸识别技术的用户登录注册系统,可以分割为两大部分,分别是用户端程序、管理员端程序。
用户端程序的功能包括用户注册、用户登录、用户登出3个主要功能,以及活体检测、人脸比对、精细分割、关键点检测4个辅助功能。
管理员端程序的功能包括管理员登录、用户注销、用户解锁、历史记录4个主要功能。
1、以用户身份进入系统
(1)用户注册
用户点击注册,将个人信息输入系统后,包括账号、密码、性别以及更多信息,系统自动捕获并计算当前用户的人脸信息,保存到数据库中。
(2)用户登录
用户点击登录按钮,输入账号及密码后,系统通过查找数据库,返回是否通过信息验证。如果通过信息验证,系统对当前摄像头的用户进行活体检测以及人脸识别,最终确定是否成功登录。一旦某用户在进行登录操作时,活体检测或人脸识别失败超过3次以上,要求系统对当前用户的账号进行锁死,并弹出相应的警告。
(3)用户登出
用户点击登出,系统登出当前登录用户。
(4)活体检测
用户点击活体检测,系统检测用户是否使用电子屏幕或者照片进行欺骗,随后系统要求用户按照系统提示完成指定的动作,包括左摇头、右摇头、眨眼、张嘴等。用户完成后提示通过活体检测。若用户超时,则中止活体检测,提示未通过活体检测。
(5)人脸对比
用户点击人脸对比,选择任意两张带有人脸的jpg或者png格式图片。点击比对按钮后,系统确认是否是同一人。
(6)背景模糊
用户点击背景模糊,系统快速对用户人体部分进行识别,将背景进行模糊处理。
(7)姿态检测
用户点击状态检测,系统快速对用户人体部分进行识别,将人的各个关键点进行标识,包括眼睛、嘴巴、躯干、四肢等。
2、以管理员身份进入系统
(1)管理员登录
管理员点击管理员登录,输入账号、密码后,要求系统快速查询存储数据,并确定是否登录成功。
(2)用户解锁
管理员点击用户解锁,输入需要解锁用户的账号、密码后,要求系统快速查询存储数据,并确定是否解锁成功。
(3)用户注销
管理员点击用户解锁,输入需要注销用户的账号、密码后,要求系统快速查询存储数据,并确定是否注销成功。
(4)历史记录
管理员点击历史记录,系统自动打开Excel表格,表格记录近一段时间登录当前系统的用户信息,包括登录时间、登录摄像头、用户姓名等。
四、代码详解
1、UI代码
UI界面设计:Python | 人脸识别系统 — UI界面设计UI事件处理:Python | 人脸识别系统 — UI事件处理
2、用户端代码
基本功能 人脸识别:Python | 人脸识别系统 — 人脸识别活体检测:Python | 人脸识别系统 — 活体检测背景模糊:Python | 人脸识别系统 — 背景模糊姿态检测:Python | 人脸识别系统 — 姿态检测人脸比对:Python | 人脸识别系统 — 人脸比对综合功能 用户操作:Python | 人脸识别系统 — 用户操作
3、管理员端代码
管理员操作:MySQL 8.0.26 安装教程
4、项目GitHub源码
GitHub完整源代码地址:人脸识别系统GitHub
项目结构: