
该系统允许用户将图像上传到数据库,然后在出勤检查期间使用该图像来识别其面部。公认的面孔与数据库匹配,并且出勤率实时更新。该系统还包括一个安全的登录功能,供教师查看出勤记录。
该项目是如何使用计算机视觉和机器学习来自动化传统流程的一个很好的例子,从而使它们更有效,准确。
在传统出勤系统中,标记出勤的过程通常是手动的,耗时的,容易出现错误。随着机器学习和计算机视觉的出现,我们现在拥有自动化此过程并使其更高效和准确的工具。
我们的面部识别出勤系统旨在利用这些技术提供无缝且自动的出勤跟踪解决方案。该系统使用面部识别技术来识别个人并标志着他们的出勤率。此过程消除了对手动输入的需求,并减少了错误或欺诈性条目的机会。
该系统是使用Python,Flask,OpenCV和Firebase构建的。 Python和Flask提供了后端功能,OPENCV用于面部检测和识别,而Firebase用作存储用户信息和出勤记录的数据库。
该系统还为教师提供了安全的登录功能,使他们可以查看出勤记录。此功能可确保只有授权的个人才能访问出勤数据。
无论您是一门想要简化出勤跟踪过程的大学,还是希望自动化员工入住系统的企业,我们的面部识别出勤系统都提供了一个强大而有效的解决方案。
请单击下面的图片以获取项目视频

面部识别出勤系统具有许多功能,旨在使出勤跟踪尽可能无缝和高效:
面部识别:该系统使用高级面部识别技术来识别个人并标记出勤率。这消除了对手动输入的需求,并确保出勤跟踪的准确性。
实时出勤跟踪:系统实时跟踪出勤率。一旦系统识别个人,他们的出勤率就会在数据库中标记和更新。
安全的老师登录:系统包括针对教师的安全登录功能。这使教师可以查看出勤记录,并确保只有授权的个人才能访问此数据。
多级支持:系统支持多个类。可以将学生参加多个课程,并且每个班级都会单独跟踪他们的出勤率。
数据库集成:系统与基于云的NOSQL数据库Firebase集成。这样可以有效地存储和检索用户信息和出勤记录。
网络摄像头支持:系统支持网络摄像头输入以进行面部识别。这使设置并在各种设置中使用变得易于设置。
用户友好的接口:该系统具有用户友好的接口,使用户易于导航和使用该系统。
开源:系统是开源。欢迎开发人员贡献并帮助改善系统。





要在本地机器上启动并运行面部识别出勤系统,请按照以下步骤操作:
克隆存储库:首先,将存储库克隆到您的本地计算机。您可以通过在终端中运行以下命令来执行此操作:
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
创建虚拟环境并激活它。您可以通过在终端中运行以下命令来执行此操作:
Python环境
python3.8 -m venv your_env_name
source your_env_name/bin/activate
或者
康达环境
conda create -n your_env_name python=3.8
conda activate your_env_name
这将创建一个虚拟环境并激活它。所有依赖项将安装在此虚拟环境中。
安装依赖项:导航到克隆的项目目录中,并通过运行安装必要的依赖项:
pip install -r requirements.txt
此命令将安装requirements.txt文件中列出的所有必要库和软件包。
请注意,您需要从dlib网站下载“ shape_predictor_face_face_face_face_face_face_dats.dat”的形状预测器文件。您可以从这里下载文件。您可以将文件放入检测文件夹中,需要在face_matching.py文件中为DATFILE变量编写文件的完整路径,如下所示。

设置Firebase :系统将firebase用于数据库操作。您需要设置一个火箱项目,并用自己的项目替换项目中的燃料配置。您可以遵循“ Firebase设置指南”进行说明。



运行应用程序:首先运行下面的命令,然后输入教师登录的密码。
python generate_password_hash.py
然后将“ has”复制到configs/database.yaml文件中,以enter-your-teacher-login-hash部分。
所有设置完成后,您可以通过在终端中执行以下命令来运行应用程序:
python app.py
这将启动烧瓶服务器,并且该应用程序将在http://127.0.0.1:5000/ 5000/上访问。
请注意,您需要连接到计算机的网络摄像头才能正常工作。如果您使用的是笔记本电脑,则内置网络摄像头可以正常工作。
一旦您运行了面部识别出勤系统,就可以通过遵循以下步骤开始使用它:
主页:打开您的网络浏览器并导航到http://127.0.0.1:5000/ 。这将带您进入应用程序的主页。
上传新的面孔:要在系统中添加新学生,请单击“以图像为图像”按钮。这将使您可以上传学生的脸部图像。图像应清晰,学生的脸应可见。另外,您可以通过单击“从相机捕获新面”按钮来捕获相机的图像。
添加学生信息:上传图像后,您将被重定向到可以输入学生信息的页面。这包括学生的姓名,电子邮件,用户类型(学生或老师),他们参加的课程以及密码。输入所有信息后,单击“提交”按钮。
面部识别:回到主页上,您可以单击“识别面”按钮。这将开始面部识别过程。该系统将尝试将网络摄像头前面的面部与数据库中的面匹配。
课程选择:如果找到匹配项,则将您重定向到可以选择类的页面。选定类的出勤率将在数据库中更新。
老师登录:如果您是老师,则可以通过单击主页上的“老师登录”按钮来查看出席率。您将被要求输入密码。输入正确的密码后,您将被重定向到出勤页面,您可以在其中看到学生及其出勤率。
请记住,面部识别功能需要网络摄像头。如果您使用的是笔记本电脑,则内置网络摄像头可以正常工作。如果您使用的是桌面,则需要将网络摄像头连接到计算机。
面部识别出勤系统依靠几个Python库才能正常运行。这是主要依赖性列表:
烧瓶:轻巧的Web应用程序框架。它用于处理应用程序的Web服务器端。
OPENCV :编程功能库主要针对实时计算机视觉。它用于捕获网络摄像头的图像并执行面部检测。
Firebase Admin :用于与Firebase服务互动的库。它用于与Firebase实时数据库和Firebase存储相互作用。
Werkzeug :全面的WSGI Web应用程序库。它用于处理烧瓶中的文件上传。
枕头:Python成像库为您的Python解释器添加了图像处理功能。
Numpy :Python编程语言的库,为大型多维数组和矩阵增加了支持,以及大量高级数学功能集合以在这些数组上运行。
要安装这些依赖项,您可以使用PIP,Pip Manager for Python。只需在终端中运行以下命令:
pip install -r requirements.txt这将安装所有必需的软件包。运行此命令时,请确保您处于正确的目录(目录应包含requirements.txt文件)。
非常欢迎对面部识别出勤系统的贡献!如果您有功能请求,错误报告或代码重构的建议,请随时打开问题或创建拉动请求。
以下是您可以做出贡献的一些方法:
改进UI/UX :当前接口非常基本。如果您有前端开发的经验,并且对如何改善用户界面或用户体验有一些想法,那么您的贡献将不胜感激。
添加新功能:如果您有一个适合该项目的新功能的想法,请通过打开问题来提出建议。如果您想自己实施,甚至更好!打开您的更改请求,我们将对其进行审查。
报告错误:如果使用系统时遇到任何错误,请通过打开问题来报告它们。包括有关该错误及其发生情况的尽可能多的信息。
重构代码:与任何软件项目一样,代码库中总是有改进的余地。如果您看到有机会重构一些代码以使其更清洁,更高效或更健壮,我们很乐意审查您的建议。
在贡献之前,请确保检查现有问题并提取请求,以避免重复工作。另外,当您打开拉动请求时,请确保对所做的更改包含清晰而详细的描述。
感谢您对为面部识别出勤系统做出贡献的兴趣!
在几个领域,将来可以改进或扩展该系统:
学生ID分配:当前,学生ID被分配给数据库中图像总数多。将来,我们计划通过分配缺失的学生ID来优化此过程(例如,如果ID为1,2,3,4,[],6,7,8,则新图像的ID为5)。
用户界面改进:我们旨在增强界面的美学吸引力,以提供更具吸引力的用户体验。
数据库图像添加:截至目前,捕获数据库后立即将图像添加到数据库中。我们计划修改此过程,以便仅在输入相应信息后仅将图像添加到数据库中。
数据库优化:我们旨在优化数据库操作,以通过仅致电一次来加快流程。
安全增强:我们计划实施更安全的方法来处理数据处理和用户身份验证。
学生登录:将来,我们计划允许学生使用密码登录系统。
教师数据库:我们旨在为教师创建一个单独的数据库。按下“老师登录”按钮时,将请求用户名和密码。
教师视图:登录后,老师将能够根据他们教授的课程来查看学生出勤。
部署:目前,该系统旨在在本地运行。将来,我们计划将系统部署在像Heroku这样的平台上,这将使它可以从任何地方而不只是在本地机器上访问。
改进的错误处理和用户反馈:虽然系统当前处理错误并为用户提供反馈,但可以改进这些方面,以使系统更强大且用户友好。
实时更新:目前,学生登录时会更新出勤数据。将来,我们可以实现实时更新,以便一旦确认学生的脸,就可以立即更新出勤数据。
与其他系统集成:该系统可以与教育机构(例如学习管理系统或学生信息系统)中使用的其他系统集成。这将为学生和老师带来更加无缝的体验。
其他功能:可以在系统中添加许多其他功能,例如对多个摄像机的支持,一次识别多个面孔或处理不同的照明条件的能力。
这些只是未来改进的一些想法。我们总是对新的想法和建议开放,因此请随时做出贡献!
该项目已根据MIT许可获得许可。这意味着您可以根据本许可条款自由使用,修改和分发项目。请参阅许可证文件以获取更多详细信息。
请注意,该项目是“原样”提供的,无需任何保修。作者对使用该项目可能引起的任何损害或问题概不负责。在生产环境中使用该代码之前,请务必自己检查代码。
这是系统组件及其相互作用的高级视图:

1。面部识别系统:这是您项目的核心。它将捕获图像或视频帧,检测面,提取功能和匹配面。该系统将使用Python和OpenCV开发。
2。用户界面:这是用户(学生和讲师)与之交互的系统的一部分。它将显示Firebase数据库中的信息,并将用户输入发送到数据库。该接口将使用HTML,CSS和JavaScript开发为Web应用程序。
3。Firebase数据库:这是所有必要数据存储的地方。该数据库将存储学生信息,出勤记录以及任何其他必要的数据。面部识别系统和用户界面都将与数据库进行交互以存储和检索数据。
互动:
面部识别系统将捕获用户相机的图像或视频帧,检测面,提取功能和匹配面。匹配面时,系统将将学生的ID以及当前日期和时间发送到Firebase数据库以记录出席率。
用户界面将显示Firebase数据库的出勤记录。当学生或讲师登录时,界面将其ID发送到Firebase数据库以检索出勤记录。该界面还将为学生提供注册课程和教师创建课程的选项,这些操作还将涉及将数据发送到Firebase数据库。
Firebase数据库将存储系统的所有数据。当它从面部识别系统或用户界面接收数据时,它将更新相关记录。当它从用户界面收到数据请求时,它将检索请求的记录并将其发送到接口。
这是系统体系结构和组件之间的交互的简化视图。根据项目的特定要求,您可能需要添加更多组件或交互。例如,如果您要确保只有注册的学生和讲师才能访问System.docs/images/database_design.png,则可能需要添加一个用于处理用户身份验证的组件。
现在,让我们设计并绘制Firebase的数据库模式。这包括定义将存储的数据(例如,学生信息,出勤记录等)以及该数据将如何结构和相关。

用户集合:此集合将存储有关所有用户的信息,包括学生和讲师。每个用户都有一个唯一的ID,每个用户存储的数据可能包括:
userID :用户的唯一标识符。name :用户的全名。email :用户的电子邮件地址。embeddings :用户脸部嵌入userType :用户类型(学生或讲师)。password :用户的密码(安全存储)。classes :用户入学的程序列表(适合学生)和该学生的出勤人数这是我们数据库结构的简化视图。我们还将学生的图像存储在火箱存储中。这些图像存储在名为static/图像的文件夹中,图像的名称是学生的ID。
这是您项目的关键部分,涉及几个步骤:

研究面部识别算法:
实施面部识别系统:
将面部识别系统与firebase数据库集成: