【实战项目】基于 Python+Vue3 的 AI 人脸识别门禁考勤系统(附完整源码)
摘要: 分享一个完整的人脸识别门禁考勤系统,包含实时监控、人脸录入、考勤记录、数据大屏等功能。技术栈:Python FastAPI + Vue3 + YOLOv8 + ArcFace,适合毕业设计、企业项目参考。
前言
大家好,今天给大家分享一个我最近开发的 AI 人脸识别门禁考勤系统。
这个项目是一个完整的商业级应用,涵盖了:
- 实时摄像头监控与人脸识别
- 人员信息管理(增删改查)
- 人脸照片录入与特征提取
- 考勤记录统计与查询
- 数据可视化大屏
项目已经部署上线并稳定运行,现在把前端代码开源,完整源码后台私聊获取。
功能演示
1. 数据大屏
首页展示今日出勤概览、实时识别记录、出勤趋势图表等关键数据。

核心功能:
- 今日出勤人数统计
- 识别成功/失败次数
- 实时滚动识别记录
- 近7天出勤趋势图表
2. 实时监控
开启摄像头后,系统自动检测画面中的人脸并进行识别:
- 识别成功:绿色框 + 显示姓名
- 陌生人脸:红色框 + 提示未知

技术亮点:
- MJPEG 视频流实时传输
- YOLOv8 人脸检测(毫秒级)
- ArcFace 特征提取与比对
- 多人脸同时识别
3. 人员管理
支持人员信息的完整 CRUD 操作:

功能详情:
- 添加/编辑/删除人员信息
- 支持姓名、工号、部门等字段
- 分页查询与关键词搜索
- 一键跳转人脸录入
4. 人脸录入
提供两种录入方式,自动检测人脸并提取特征:

录入方式:
- 上传照片: 选择本地照片上传
- 拍照录入: 调用摄像头现场拍照
智能处理:
- 自动检测照片中的人脸
- 智能裁剪人脸区域
- 提取 512 维特征向量
- 支持多人脸自动选取
5. 考勤记录
完整的识别记录查询与统计:
查询功能:
- 按日期范围筛选
- 按识别结果筛选(成功/失败/陌生人)
- 分页展示详细记录

️ 技术架构
整体架构
┌─────────────────┐ HTTP/MJPEG ┌─────────────────┐
│ │ ◄─────────────────► │ │
│ Vue3 前端 │ │ FastAPI 后端 │
│ Element Plus │ │ SQLAlchemy │
│ ECharts │ │ │
└─────────────────┘ └────────┬────────┘
│
┌────────▼────────┐
│ │
│ AI 推理引擎 │
│ YOLOv8 + ArcFace│
│ │
└────────┬────────┘
│
┌────────▼────────┐
│ │
│ MySQL 8.0 │
│ 数据持久化 │
│ │
└─────────────────┘
技术栈详情
| 层级 | 技术 | 说明 |
|---|---|---|
| 后端框架 | Python 3.10 + FastAPI | 高性能异步框架 |
| 数据库 | MySQL 8.0 + SQLAlchemy | ORM 简化操作 |
| 人脸检测 | YOLOv8-face | 实时人脸检测,毫秒级响应 |
| 人脸识别 | ArcFace (insightface) | 业界领先的人脸识别算法 |
| 特征提取 | ONNX Runtime | 模型推理加速 |
| 视频流 | OpenCV + MJPEG | 实时视频传输 |
| 前端框架 | Vue3 + Composition API | 响应式开发 |
| UI 组件 | Element Plus | 企业级 UI 库 |
| 数据可视化 | ECharts | 丰富的图表组件 |
| 构建工具 | Vite | 极速构建体验 |
核心算法
人脸检测 - YOLOv8
python
# YOLOv8 人脸检测
from ultralytics import YOLO
model = YOLO('yolov8n-face.pt')
results = model(frame, conf=0.5)
for box in results[0].boxes:
x1, y1, x2, y2 = box.xyxy[0].cpu().numpy()
confidence = box.conf[0].cpu().numpy()
优势:
- 检测速度快(~10ms/帧)
- 支持多人脸同时检测
- 对遮挡、角度有较好鲁棒性
人脸识别 - ArcFace
python
# ArcFace 特征提取
import insightface
model = insightface.app.FaceAnalysis()
model.prepare(ctx_id=0, det_size=(640, 640))
faces = model.get(frame)
for face in faces:
embedding = face.embedding # 512维特征向量
优势:
- 识别准确率 99.83%(LFW 数据集)
- 512 维特征向量,存储高效
- 支持活体检测(扩展)
项目亮点
1. 高性能架构
- FastAPI 异步处理,支持高并发
- 视频流 MJPEG 传输,低延迟
- 模型推理 GPU 加速
2. 完整的业务流程
- 从人员录入 → 人脸采集 → 实时识别 → 考勤统计,闭环设计
- 支持多种业务场景扩展
3. 优秀的用户体验
- 响应式布局,适配多种屏幕
- 实时反馈,操作流畅
- 数据可视化,直观清晰
4. 良好的扩展性
- 模块化设计,易于维护
- 支持接入硬件(Arduino/树莓派)
- 可扩展门禁、闸机等场景
适用场景
毕业设计
- 计算机科学与技术
- 软件工程
- 人工智能
- 物联网工程
企业项目
- 公司门禁系统
- 考勤打卡系统
- 访客管理系统
- 智能园区管理
学习参考
- Vue3 实战项目
- FastAPI 最佳实践
- 人脸识别技术落地
- 全栈项目架构
如何获取
开源部分
前端代码已开源,包含完整的 Vue3 项目:
- 组件源码
- API 封装
- 路由配置
- 样式资源
️ 部署要求
硬件要求
- CPU: 4 核以上(推荐 8 核)
- 内存: 8GB 以上(推荐 16GB)
- 显卡: NVIDIA GPU(可选,加速推理)
- 摄像头: USB 摄像头或笔记本内置
软件要求
- 操作系统: Windows 10/11、Linux(Ubuntu 20.04+)
- Python: 3.10+
- Node.js: 18+
- MySQL: 8.0+
常见问题
Q1: 摄像头打不开怎么办?
A: 检查以下几点:
- 摄像头是否被其他程序占用
- 浏览器是否授予摄像头权限
- 摄像头驱动是否正常
Q2: 识别率不高怎么优化?
A: 可以从以下方面优化:
- 录入 3-5 张不同角度的照片
- 确保光线充足、面部无遮挡
- 调整识别阈值(默认 0.4)
Q3: 模型下载失败怎么办?
A: 可以手动下载:
- YOLOv8-face: GitHub Releases
- ArcFace 模型: 首次运行自动下载,或从 insightface 官网获取
Q4: 支持多人脸同时识别吗?
A: 支持,YOLOv8 可以检测画面中的多张人脸,系统会逐一进行识别。
联系作者
如有任何问题或购买需求,欢迎联系:
- QQ: 1106774637
- 添加备注: 人脸门禁系统咨询
服务内容:
- 完整源码交付
- 部署指导
- 技术答疑
- 定制开发(可选)
总结
这个项目是一个完整的人脸识别门禁考勤系统,涵盖了:
- ✅ 实时人脸检测与识别
- ✅ 人员信息管理
- ✅ 考勤记录统计
- ✅ 数据可视化大屏
技术栈主流、架构清晰、功能完善,非常适合作为:
- 毕业设计项目
- 企业内部系统
- 学习参考资料
开源前端代码,完整源码付费获取,欢迎有兴趣的同学联系我!
标签
人脸识别 门禁系统 考勤系统 Python Vue3 FastAPI YOLOv8 ArcFace 毕业设计 全栈开发 计算机视觉 深度学习
原创文章,转载请注明出处!