# 人脸识别demo **Repository Path**: naco/face-recognition-demo ## Basic Information - **Project Name**: 人脸识别demo - **Description**: face-recognition和facenet实现的人脸识别。 cpu运行。 - **Primary Language**: Python - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 3 - **Created**: 2021-10-21 - **Last Updated**: 2024-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 人脸识别demo ## 目录 - [人脸识别demo](#人脸识别demo) - [目录](#目录) - [简介](#简介) - [快速开始](#快速开始) - [人脸识别](#人脸识别) - [应用](#应用) - [接下来的工作](#接下来的工作) ## 简介 * 运行环境:python=3.6、torch=1.9。 * 批量安装请运行以下代码(不包含pytorch): ```bash > pip install -r requirements.txt ``` ## 快速开始 * 下载与训练模型: [百度网盘](https://pan.baidu.com/s/1Opj7pQN9bKdlbhXP4aampA) 提取码:pudk * 将已知人脸图片放入`data\know`路径下,并以人名命名。 * 执行`encoding_people.py`对人脸进行编码。 * 执行`detect.py`文件,开始对视频流进行检测。 ## 人脸识别 * 人脸识别主要分为两个步骤,已知人脸编码、实时人脸检检测。 1. 已知人脸编码: 使用face_recognition对人脸进行目标检测,使用预训练的facenet_mobilenet对人脸进行编码,并保存到`data\features.npy`和`data\names_table.npy`文件中。 ```bash > python ./encoding_people.py ``` 2. 实时人脸检测: 基本方法与已知人脸检测相同,在获取人脸向量后。通过k近邻与人脸库进行匹配。 3. 后处理 * 过滤算法, 由于使用的facenet权重对亚洲人脸降维效果较差,即便是在使用了k近邻作为分类头的基础上,仍然有一定误识别概率;且由于没有人脸质量检测模块(缺少数据集),会误识别快速移动的模糊人脸,因此在后处理中增加了多次确认的操作,针对同一目标,统计多次识别结果,当M次中80%都是某一确定的对象时,确认为目标。 * 通过iou进行人脸追踪,同一追踪目标只返回一次结果。 ## 应用 ****该项目目前运用于打卡系统,在40人每人8张照片的打卡数据库下基本排除误识别,且打卡确认时间约在1.5s左右**** ## 接下来的工作 1. 使用人脸矫正,增加模型鲁棒性。 2. 添加人脸质量检测模块。 3. 重新训练facenet降维模块。 4. 基于上述三个提升,实现无感识别。