LucasLee-ff / face_recognition_RealTime

a project base on face_recognition, capable of recognizing faces and tell if they are real.本项目实现了人脸检测、匹配及简单的活体检测功能

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

人脸识别(含活体检测)

该项目通过读取笔记本电脑内置摄像头的画面,在调用开源人脸识别库 face_recognition 中的函数的基础上实现了简单的人脸识别及活体检测功能。

本项目仅为人脸识别等功能的具体实现,不包含其中的原理

目录

功能简述

  1. 找出每一帧图像中的主要人脸(即面积最大的人脸)并进行识别
  2. 以眨眼和张嘴动作进行活体判定
  3. 若识别过程中主要人脸发生变化,新的脸会被重新认定为假人

环境配置

  • Python 3.3+ or Python 2.7

务必参考开源项目 face_recognitionInstallation栏目中的的需求,里面有不同系统安装face_recognition的具体教程

活体检测思路

  • 获取人脸特征点,计算ear(eye aspect ratio, 眼睛纵横比 )mar(mouth aspect ratio, 嘴巴纵横比)
  • ear小于一定阈值ear_threshold时,判定人物闭眼
  • mar大于一定阈值mar_threshold时,判定人物嘴巴张开
  • 眼睛闭上超过一帧后再睁开算作一次眨眼
  • 嘴巴张开超过一帧后再合上算作一次张嘴
  • 能眨眼且能张嘴才会被认定为真人real,否则为假人fake

眨眼动作过快,摄像头可能无法捕捉到闭眼的图像

使用方法

一、准备工作

face_recognition库中返回人脸特征点的函数face_landmarks返回的字典(dictionary)中将嘴巴分为了上嘴唇“top_lip”“bottom_lip” 两个部分。为了直接得到整个嘴巴的特征点,方便后续对嘴巴纵横比的计算,新定义了函数face_landmarks_2,函数执行内容与face_landmarks相同,返回值在face_landmarks的基础上加入了键"mouth",对应的值为20个嘴部特征点。

  1. 复制本项目中face_landmarks_2.py文件中的所有代码

  2. 在本机的python安装目录中找到face_recognition库的安装目录

    例:C:\python3\Lib\site-packages\face_recognition

  3. 打开该目录中的api.py文件,将复制的内容粘贴至最后,保存

  4. 打开该目录中的__init__.py文件,在from .api import的末尾加上”, face_landmarks_2“,保存

    示例:

    from .api import load_image_file, face_locations, batch_face_locations, face_landmarks, face_encodings, compare_faces, face_distance, face_landmarks_2

二、运行程序

  1. 打开本项目中的main_function.py文件

  2. 找到该行代码,将路径改为本机上存有人脸照片的文件夹路径

    # 例:
    path = 'C:\\Users\\windows\\Desktop\\SRTP_FILE\\demo\\pictures'

    文件夹内容如下:

    Image text

    注:加载已知人脸图片后,已知人名列表由人脸图片名自动生成

  3. 运行程序

  4. 按下英文字母q退出程序

额外说明

本项目中main_function.py文件为主体,sub_functions.py文件包含了额外编写的有关活体检测等功能的函数

About

a project base on face_recognition, capable of recognizing faces and tell if they are real.本项目实现了人脸检测、匹配及简单的活体检测功能


Languages

Language:Python 100.0%