# face-identification **Repository Path**: tobe27/face-identification ## Basic Information - **Project Name**: face-identification - **Description**: 人脸识别全栈 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 人脸识别系统 基于 RTSP 视频流的人脸识别系统,支持多设备实时视频流处理、人脸检测、告警推送。 ## 技术架构 ### 后端 (face-id-admin/) - **Spring Boot** + **Java 21** + **MyBatis-Plus** - **JavaCV** (FFmpeg) 处理 RTSP 视频流 - **WebSocket** 实时推送视频帧和识别结果 - **MySQL** 数据存储 ### 前端 (face-id-admin-web/) - **React 18** + **TypeScript** + **Vite** - **Ant Design 5** UI 组件 - **pnpm** 包管理 ### 人脸识别服务 (face-id-inference/) - **FastAPI** + **Uniface** + **FAISS** - 从 MySQL 加载特征库到内存,毫秒级 1:N 检索 - 提供特征提取、人脸识别的 HTTP API ## 核心功能 1. **设备管理**:管理摄像头,配置 RTSP 地址、分辨率、帧率、告警阈值 2. **人脸管理**:维护人员信息,上传多张人脸图片,提取 512 维特征向量 3. **实时监控**:多画面视频流展示,实时人脸识别结果叠加显示 4. **告警管理**:识别到匹配人脸时触发告警,保存告警画面,支持搜索筛选 ## 数据库表结构 - **device**:设备信息(名称、位置、RTSP 地址、启用状态、告警阈值) - **person**:人员信息(姓名、性别、出生日期) - **user_picture**:人脸图片(关联 person,存储图片数据和 512 维特征向量) - **alert**:告警记录(人员、设备、相似度、告警画面、时间) ## 开发说明 ### 视频流处理 - 使用 JavaCV 的 FFmpegFrameGrabber 捕获 RTSP 流 - 按配置的检测间隔抽帧(如每 5 秒) - 通过 WebSocket 推送视频帧到前端 - 异步调用人脸识别服务,结果通过 WebSocket 推送 ### 人脸识别流程 1. **注册**:上传图片 → Python `/extract` 提取特征 → Java 存储到 `user_picture` 2. **识别**:Java 发送图片 → Python `/identify` 搜索 FAISS → 返回匹配结果 3. **刷新**:增删人脸后调用 Python `/refresh` 更新内存索引 ### 告警触发 - 相似度 ≥ 设备配置的告警阈值时触发告警 - 告警画面保存到 `alert` 表 - 告警阈值按设备独立配置,支持百分数整数输入