大数跨境

实战项目04:基于YOLOv8的人脸识别智能签到系统(校园/企业考勤毕设)

实战项目04:基于YOLOv8的人脸识别智能签到系统(校园/企业考勤毕设) AI与计算机视觉
2026-08-04
2
导读:哈喽各位小伙伴,欢迎来到AI视觉实战项目专题!前面我们完成了工业缺陷检测、区域入侵安防、烟火预警系统三大热门落地项目。

哈喽各位小伙伴,欢迎来到AI视觉实战项目专题

前面我们完成了工业缺陷检测、区域入侵安防、烟火预警系统三大热门落地项目。今天我们更新校园、企业最热门、答辩最高分、应用场景最强的实战项目——AI人脸识别自动签到系统

传统人工签到、刷卡签到、密码签到效率低、代签严重、管理繁琐。基于深度学习的人脸识别考勤,可以实现无人值守、实时人脸检测、人脸比对、自动记录签到、生成考勤报表

本期手把手从零搭建完整人脸识别签到工程,包含:人脸检测、特征比对、自动签到、重复过滤、日志保存全套功能,代码可直接运行、可网页部署、可打包EXE,完美适配本科毕设与课程设计!

一、项目背景与功能介绍

1. 项目背景

在校园课堂考勤、企业员工打卡、会议室签到、门禁管理场景中,传统签到方式存在耗时高、易代签、统计麻烦、难以溯源等问题。

借助YOLOv8高精度人脸检测算法,结合人脸特征匹配技术,可以实现智能化、自动化、高精度的人脸识别签到,彻底解决传统考勤痛点。

2. 核心实现功能

实时摄像头视频流人脸检测、精准框选人脸区域

本地人脸库特征比对,识别人员身份

自动判断是否为本人、实时显示姓名与签到状态

智能防重复签到,单人单次仅记录一次

自动生成签到时间、人员名单、保存本地日志

支持多人同时识别、批量签到

二、核心技术原理

1. YOLOv8人脸检测

采用YOLOv8-face专用人脸检测模型,相比传统OpenCV人脸分类器,优势巨大:

支持侧脸、低头、弱光、遮挡人脸检测

抗干扰能力强、误检率极低

实时性高,满足视频流实时考勤需求

2. 人脸特征相似度匹配

对检测到的人脸图像进行特征编码,计算与本地人脸库特征的欧式距离,距离越小相似度越高,达到阈值即判定签到成功。

3. 防重复签到机制

使用内存集合存储当日已签到人员ID,单次运行周期内同一人员仅签到一次,杜绝重复打卡。

三、环境依赖安装

一键安装全套运行库,兼容往期所有项目环境:

python
pip install ultralytics opencv-python numpy face-recognition -i https://pypi.tuna.tsinghua.edu.cn/simple

四、项目目录结构(必须严格对应)

face_checkin/
├─ known_face/  # 存放员工/学生人脸底图(单人单张)
├─ checkin_log.txt  # 自动生成签到日志
└─ main.py  # 主程序

五、完整可运行代码(人脸识别+自动签到)

纯手写完整版工程,无报错、可直接运行、自带日志记录、防重复签到:

python
import cv2
import face_recognition
import os
from ultralytics import YOLO
from datetime import datetime

# 加载YOLOv8人脸检测模型
model = YOLO("yolov8n-face.pt")

# 存放已知人脸文件夹
KNOWN_FACE_DIR = "known_face"
# 已签到人员集合
signed_name_list = set()

# 加载本地人脸库
def load_known_faces():
    face_encodings = []
    face_names = []
    for img_name in os.listdir(KNOWN_FACE_DIR):
        path = os.path.join(KNOWN_FACE_DIR, img_name)
        img = cv2.imread(path)
        rgb_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(rgb_img)[0]
        face_encodings.append(encode)
        face_names.append(img_name.split(".")[0])
    return face_encodings, face_names

# 初始化人脸库
known_encodings, known_names = load_known_faces()

# 保存签到日志
def save_log(name):
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    with open("checkin_log.txt", "a", encoding="utf-8") as f:
        f.write(f"【{now}】 签到成功:{name}\n")

# 开启摄像头
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # YOLO人脸检测
    results = model(frame, conf=0.4)
    for box in results[0].boxes:
        x1, y1, x2, y2 = box.xyxy[0].cpu().numpy()
        # 截取人脸区域
        face_img = frame[int(y1):int(y2), int(x1):int(x2)]
        rgb_face = cv2.cvtColor(face_img, cv2.COLOR_BGR2RGB)

        try:
            current_encode = face_recognition.face_encodings(rgb_face)[0]
        except:
            continue

        # 人脸比对
        matches = face_recognition.compare_faces(known_encodings, current_encode)
        name = "Unknown"

        if True in matches:
            idx = matches.index(True)
            name = known_names[idx]

            # 自动签到,防重复
            if name not in signed_name_list:
                signed_name_list.add(name)
                save_log(name)

        # 绘制界面
        cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0,255,0), 2)
        cv2.putText(frame, name, (int(x1), int(y1)-10), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0,255,0), 2)

    # 显示签到人数
    cv2.putText(frame, f"Checked In: {len(signed_name_list)}", (20,40),
                cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255,0,0), 2)

    cv2.imshow("YOLOv8 Face Check-In System", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

六、项目使用教程

1.known_face 文件夹放入人员照片,命名为姓名.jpg,例如:张三.jpg

2. yolov8n-face.pt 人脸模型放入项目根目录

3.运行 main.py,摄像头自动识别人脸、自动签到

4.所有签到记录自动保存至 checkin_log.txt

七、项目创新点与答辩亮点

算法升级:采用YOLOv8人脸检测替代传统算法,遮挡、侧脸、弱光识别效果大幅提升

智能防代签:人脸特征精准匹配,杜绝代签、冒用

自动台账:无需人工统计,系统自动生成签到时间与名单

实时高效:支持多人同时签到,适配课堂、企业大规模考勤

拓展性强:可拓展网页端、后台管理、EXE程序、云端数据库

八、高阶拓展功能(毕设加分)

Excel报表自动导出,一键生成考勤统计表

网页端实时考勤系统,远程查看签到情况

权限管理、人员注册、人脸录入功能

迟到、早退、缺勤智能判定统计

打包EXE独立程序,无环境双击运行

九、常见问题解决

人脸检测不到:光线提亮、降低conf阈值、使用官方人脸预训练权重

识别错误:更新清晰人脸底图、提高人脸库图片质量

报错无人脸编码:过滤空人脸、模糊人脸自动跳过

重复签到:集合去重机制保证单次运行仅签到一次

十、本期总结

本期完成了基于YOLOv8的人脸识别智能签到系统,完整实现人脸检测、身份比对、自动签到、日志记录全套核心功能。

项目场景真实、代码工程化、功能完善、拓展空间极大,是计算机视觉、人工智能、软件工程专业最稳、最好过、分数最高的毕设项目之一。

下期预告

下期更新:YOLOv8智能车牌识别系统,智能抓拍、车牌检测、字符识别、车辆进出记录,智能停车场经典毕设项目!


【声明】内容源于网络
0
0
AI与计算机视觉
专注分享于计算机视觉和人工智能方向相关内容,包括不限于图像分类、目标检测、语义分割、基础编程、面试面经、生活启示录等,欢迎大家关注与学习。
内容 98
粉丝 0
AI与计算机视觉 专注分享于计算机视觉和人工智能方向相关内容,包括不限于图像分类、目标检测、语义分割、基础编程、面试面经、生活启示录等,欢迎大家关注与学习。
总阅读689
粉丝0
内容98