# facial-recognition **Repository Path**: pretend-work/facial-recognition ## Basic Information - **Project Name**: facial-recognition - **Description**: 基于深度学习的卷积神经网络(CNN)模型,使用电脑摄像头采集人物图像,提取特征信息并自动预测年龄和性别,同时将所有信息保存到MySQL数据库中。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-05 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 人脸特征采集系统 基于深度学习的卷积神经网络(CNN)模型,使用电脑摄像头采集人物图像,提取特征信息并自动预测年龄和性别,同时将所有信息保存到MySQL数据库中。 ## 项目功能 - 使用OpenCV实现摄像头视频采集 - 基于Haar级联分类器进行人脸检测 - 使用CNN模型(支持PyTorch或HOG特征)提取人脸特征 - 自动预测并显示人物年龄和性别 - 将人物信息和特征向量保存到MySQL数据库 - 实时显示采集状态和操作提示 - 自动保存捕获的人脸图像 - 支持人员信息的重复检测,避免重复添加 - 支持中文显示 ## 系统要求 - Python 3.7+ - MySQL 5.7+ - 电脑摄像头 - 足够的存储空间用于保存图像和模型 ## 安装说明 ### 1. 克隆项目 ```bash git clone <项目仓库地址> cd cnnpython ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 配置MySQL数据库 - 确保MySQL服务正在运行 - 当前系统已配置使用远程数据库: - 主机: 182.92.159.31 - 端口: 2306 - 用户名: study - 密码: 3y5G786xBzEL37Ld - 数据库名: study 如果需要修改数据库配置,请编辑 `utils/db_manager.py` 文件中的数据库连接参数。 ## 使用方法 ### 运行主程序 ```bash python main.py ``` ### 操作说明 - **空格键**: 添加新人员信息并开始采集特征 - **C键**: 取消当前正在进行的特征采集 - **ESC键**: 退出程序 ### 采集流程 1. 运行程序后,摄像头会自动启动 2. 按空格键,根据提示输入人员信息(姓名、年龄、性别、描述) 3. 系统将自动检测人脸、提取特征,并预测年龄和性别 4. 每人默认采集多个特征向量,提高识别准确率 5. 采集的特征向量会保存到MySQL数据库,同时会保存人脸图像到 `data/saved_faces/` 目录 6. 系统会自动检查重复人员,避免重复添加相同人员信息 7. 采集完成后,系统会自动停止当前人员的特征采集 8. 可以继续添加新人员或按ESC键退出 ## 项目结构 ``` cnnpython/ ├── main.py # 主程序入口 ├── requirements.txt # Python依赖包 ├── models/ # 模型相关代码 │ └── cnn_model.py # CNN特征提取模型 ├── utils/ # 工具类 │ ├── camera.py # 摄像头采集类 │ └── db_manager.py # 数据库管理类 ├── data/ # 数据目录 │ └── saved_faces/ # 保存的人脸图像 └── README.md # 项目说明文档 ``` ## 数据库结构 ### persons表 - `person_id`: INT (主键,自增) - `name`: VARCHAR(100) (人员姓名) - `age`: INT (年龄) - `gender`: VARCHAR(20) (性别) - `description`: TEXT (描述信息) - `created_at`: TIMESTAMP (创建时间) - `updated_at`: TIMESTAMP (更新时间) ### face_features表 - `feature_id`: INT (主键,自增) - `person_id`: INT (外键,关联persons表) - `feature_vector`: TEXT (特征向量JSON字符串) - `feature_dim`: INT (特征维度) - `confidence`: FLOAT (置信度) - `capture_time`: TIMESTAMP (捕获时间) ## 注意事项 1. 程序使用自定义CNN模型或HOG特征提取器,无需下载外部预训练模型 2. 采集特征时,请确保光线充足,人脸清晰可见 3. 数据库密码已配置为远程服务器的实际密码 4. 本程序仅供学习和演示使用,在生产环境中请添加适当的安全措施 5. 如果遇到摄像头无法打开的问题,请检查摄像头权限或尝试修改代码中的摄像头ID 6. 系统支持自动预测年龄和性别,提高了数据采集的自动化程度 7. 系统具有重复人员检测功能,会避免重复添加同名人员信息 ## 常见问题 ### 1. 摄像头无法打开 - 检查摄像头是否被其他程序占用 - 尝试修改代码中的摄像头ID(默认0) - 确保OpenCV正确安装 ### 2. 数据库连接失败 - 检查网络连接是否正常,确保可以访问远程服务器 - 验证数据库用户名和密码是否正确 - 确保用户有创建数据库和表的权限 - 检查服务器防火墙是否允许连接 ### 3. 人脸检测不准确 - 确保光线条件良好 - 调整与摄像头的距离,使人脸在画面中占据适当比例 - 可以修改代码中的人脸检测参数以提高检测准确率 ### 4. 年龄性别预测不准确 - 预测基于简化模型,仅供参考 - 确保人脸清晰且光线均匀 ## 扩展开发 - 可以替换更先进的人脸检测模型(如MTCNN、RetinaFace等) - 集成更准确的年龄性别预测模型 - 添加GUI界面以提高用户体验 - 实现特征向量的比对和检索功能 - 添加人脸识别门禁功能 - 实现多摄像头支持 ## 许可证 本项目采用MIT许可证 - 详情请查看LICENSE文件 ## 联系方式 如有任何问题或建议,请联系项目维护者。