基于深度学习的人脸识别与管理系统,支持员工签到签退、人脸录入、考勤记录管理等功能。

 功能特性

人脸识别签到/签退:员工通过摄像头进行人脸识别完成上下班打卡

人脸录入管理:管理员可为员工录入人脸特征,支持拍照和批量上传

考勤记录管理:查看和管理员工的考勤记录,支持按月筛选和导出

员工管理:添加、编辑、删除员工信息

部门管理:支持部门组织架构管理

统计报表:考勤数据统计和可视化展示

 

技术栈

后端:Python + Flask

数据库:SQLite

前端:HTML + Bootstrap 5 + JavaScript

人脸识别:OpenCV + dlib + face_recognition

深度学习:基于 ResNet 的人脸特征提取模型

 安装部署

 环境要求

- Python 3.8+

- Windows/Linux/macOS

- 摄像头(用于人脸识别)

 安装步骤

1. 克隆项目

```bash

cd attendance_system

```

2. 创建虚拟环境(推荐)

```bash

conda create -n face_attendance python=3.11

conda activate face_attendance

```

3. 安装依赖

```bash

pip install -r requirements.txt

```

4. 生成SSL证书(用于HTTPS访问摄像头)

```bash

python generate_cert.py

```

5. 初始化数据库(重要!首次运行必须执行)

```bash

python init_db.py

```

这一步会:

- 创建所有数据库表

- 创建默认管理员账号(admin / admin123)

- 创建默认部门数据

- 创建默认考勤规则

6. 运行应用

```bash

python run.py

```

7. 访问系统

- 打开浏览器访问:`https://127.0.0.1:5000`

- 首次访问需要接受自签名证书的安全警告

- 默认管理员账号:`admin` / `admin123`

 使用说明

 管理员操作

1. 登录系统

   - 使用管理员账号登录

2. 员工管理

   - 添加新员工

   - 编辑员工信息

   - 删除员工

3. 人脸录入

   - 选择员工

   - 使用摄像头拍照或上传照片

   - 支持批量导入(ZIP文件,文件名格式:工号.jpg)

4. 考勤记录

   - 查看所有员工考勤记录

   - 按月筛选

   - 导出Excel报表

 员工操作

1. 签到

   - 点击"开始摄像头"

   - 面对摄像头

   - 点击"拍摄照片"完成签到

2. 签退

   - 操作同签到

3. 查看记录

   - 查看个人考勤记录

   - 查看打卡照片

 注意事项

 摄像头访问

由于浏览器安全策略,摄像头访问需要满足以下条件之一:

- 使用 `https://` 协议

- 使用 `http://localhost` 或 `http://127.0.0.1`

解决方案:

- 运行 `python generate_cert.py` 生成SSL证书

- 使用 `https://127.0.0.1:5000` 访问

- 首次访问时浏览器会提示安全警告,请点击"高级"→"继续前往

 人脸识别优化建

1. 光线条件:确保光线充足均匀,避免逆光

2. 拍摄角度:正面面对摄像头,避免侧脸

3. 背景简洁:避免复杂背景干扰

4. 录入质量:录入时拍摄多张照片,提高识别准确率

 项目结构

```

attendance_system/

├── app/                           应用主目录

│   ├── __init__.py               应用初始化

│   ├── models.py                 数据库模型

│   ├── forms.py                  表单定义

│   ├── face_recognition/         人脸识别模块

│   │   ├── face_recognizer.py    人脸识别器

│   │   └── face_encoder.py       人脸编码器

│   ├── routes/                   路由模块

│   │   ├── auth.py               认证路由

│   │   ├── admin.py              管理员路由

│   │   ├── employee.py           员工路由

│   │   ├── attendance.py         考勤路由

│   │   └── face.py               人脸管理路由

│   ├── static/                   静态资源

│   │   ├── css/                  样式文件

│   │   ├── js/                   JavaScript文件

│   │   └── uploads/              上传文件目录

│   │       └── attendance/       考勤照片

│   └── templates/                HTML模板

│       ├── base.html             基础模板

│       ├── auth/                 认证页面

│       ├── admin/                管理员页面

│       └── employee/             员工页面

├── data/                         数据目录

│   ├── data_dlib/                dlib模型文件

│   └── database_faces/           人脸数据库

├── config.py                     配置文件

├── run.py                        启动脚本

├── generate_cert.py              SSL证书生成脚本

├── requirements.txt              依赖列表

└── README.md                     项目说明

```

 常见问题

### Q1: 报错 `no such table: user` 或数据库相关错误

A:

- 原因:数据库表还没有创建

- 解决:运行 `python init_db.py` 初始化数据库

### Q2: 摄像头无法打开

A:

- 确保使用 `https://127.0.0.1:5000` 访问

- 检查浏览器是否允许摄像头权限

- 关闭其他占用摄像头的程序

### Q3: 人脸识别失败

A:

- 检查光线是否充足

- 确保正面面对摄像头

- 重新录入人脸特征

 Q3: 照片无法显示

A:

- 检查照片文件是否存在

- 路径中包含中文可能导致问题

- 刷新页面重试

 Q4: 如何重置管理员密码

A:

- 删除 `attendance.db` 数据库文件

- 重新运行应用,使用默认账号登录

 开发计划

- [ ] 支持多人同时识别

- [ ] 活体检测功能

- [ ] 考勤规则自定义

- [ ] 邮件/短信通知

- [ ] 移动端适配优化

- [ ] 数据备份与恢复

 许可证

MIT License

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐