A professional-grade real-time video face recognition application designed for classroom environments. Features AI-powered student registration validation using Google Gemini and customizable recognition parameters for handling blurry or crowded scenes.
- 专为教室场景优化: 针对教室监控视角(远距离、多目标、遮挡)进行算法调优。
- 多模型架构:
- 检测 (Detection): SSD Mobilenet V1 (速度快,适合实时视频)。
- 识别 (Recognition): ResNet-34 (128维特征向量),生成高精度人脸指纹。
- 匹配 (Matching): 采用 InsightFace 同款余弦相似度 (Cosine Similarity) 算法,比传统的欧氏距离更适合大规模人脸库匹配。
- 抗模糊处理: 提供"分析分辨率 (Network Size)"调节功能,支持高达 608px 的输入尺寸,能有效识别后排模糊人脸。
- AI 超清修复 (AI Super-Resolution): 集成 Gemini 2.5 Flash Image 模型。对于模糊的抓拍照片,可一键进行去噪、锐化和超分辨率重建,显著提升识别成功率。
- 交互式标注: 提供"清除标注"和"重新识别"功能,方便人工核验细节。
- AI 质量检测: 注册照片时,调用 Gemini 2.5 Flash 自动评估照片质量(光线、角度、清晰度),并返回中文改进建议。
- 智能标准化 (Auto-Standardization): 自动检测人脸并进行 1:1 裁剪和居中校正,确保底库照片的一致性,这是提高识别率的关键。
- 批量导入: 支持一次性上传整个班级的照片文件夹,自动以文件名作为姓名进行注册。
- 数据持久化: 学生注册数据和识别参数会自动保存到浏览器的localStorage中,即使关闭浏览器也不会丢失。
- 100帧深度确信度分析: 针对视频流,累计 100 帧的识别结果进行加权投票。有效过滤掉单帧的误报(False Positives),输出高置信度的考勤名单。
- 人工辅助模式 (Manual Assist): 点击视频画面中的任意人脸,强制进行深度检测和特征提取,用于纠正 AI 漏检的目标。
- 口罩模式 (Mask Mode): 专门优化的参数集,降低对口鼻区域的权重依赖,专注于眼部特征匹配。
- 数据导入导出: 支持将学生数据导出为JSON文件进行备份,也支持从JSON文件导入学生数据。
- Frontend: React 19, Tailwind CSS
- AI / ML:
face-api.js(TensorFlow.js) for browser-based face recognition.@google/genai(Gemini API) for image enhancement and quality validation.
- Icons: Lucide React
- 确保项目根目录下配置了有效的
API_KEY(Google Gemini API)。 - 启动应用。
- 进入 "学生管理" 标签页。
- 单人注册: 上传一张学生清晰正面照。点击 "一键标准化",AI 会裁剪出最佳人脸区域并评分。如果评分通过,输入姓名并注册。
- 批量导入: 准备一个文件夹,照片命名为
姓名.jpg。点击 "批量导入" -> "开始批量处理",系统将自动完成裁剪和注册。 - 数据备份: 点击 "导出" 按钮可将所有学生数据保存为JSON文件。点击 "导入" 按钮可从JSON文件恢复学生数据。
- 进入 "实时监控" 标签页。
- 上传教室监控视频文件 (
.mp4,.mov等)。 - 点击 播放 按钮,系统开始实时框选和识别人脸。
- 绿色框: 已识别的学生。
- 黄色框: 未知/陌生人。
- 红色框: 嫌疑/警告(可配置)。
- 调整参数: 右侧面板可调整识别阈值。对于模糊视频,建议将 "分析分辨率" 调至
512或608。 - 生成报告: 点击 "100帧 确信度分析",系统将自动分析接下来的 100 帧画面,并生成一份稳定的考勤结果截图。
- 进入 "图片识别" 标签页。
- 上传一张模糊的现场照片。
- 如果识别不出,点击 "AI 增强"。等待数秒,图片变清晰后,系统会自动重新进行人脸识别。
- 模型加载失败: 系统会自动尝试从 VladMandic 镜像、GitHub Pages 和 jsDelivr CDN 加载模型。如果一直转圈,请检查网络是否能访问 GitHub。
- 识别率低:
- 检查 "相似度阈值",建议设为 90% (0.90)。
- 增大 "分析分辨率"。
- 确保底库照片质量高(使用标准化功能)。
- 如果是侧脸或低头,尝试开启 "戴口罩增强优化"(该模式会放宽部分限制)。
- 数据丢失: 学生注册数据会自动保存到浏览器的localStorage中。如果数据丢失,可以尝试从备份的JSON文件中导入。
本系统使用浏览器的localStorage来持久化存储学生注册数据和识别参数:
- 自动保存: 每当添加、删除学生或修改识别参数时,数据会自动保存到localStorage。
- 自动加载: 应用启动时会自动从localStorage加载之前保存的学生数据和参数。
- 数据导出: 可以随时导出学生数据为JSON文件进行备份。
- 数据导入: 可以从JSON文件导入学生数据进行恢复。
注意:localStorage的数据仅保存在当前浏览器中,如果更换浏览器或清除浏览器数据,需要重新导入备份文件。