0、人脸识别流程概述
人脸识别流程包括两个主要步骤:
-
Step1:人脸检测,确保我们处理的是正确的人脸区域
-
Step2:身份识别,确定该人脸的身份
0.1 人脸检测
人脸检测是从图像中定位人脸并抠出人脸区域的过程,这是人脸识别的第一步,用于确保后续的身份识别处理的是正确的人脸区域
因为人脸的类别少、形状比较固定、特征同样比较固定、周围环境也一般比较好,所以人脸检测其实是目标检测中最简单的任务
输入输出:
- 输入:一张图像
- 输出:所有人脸的坐标框
操作过程:
- 抠图:用深度学习模型提取人脸图像中的特征,识别出人脸的位置,并将其抠出来
- MTCNN:一种流行的人脸检测算法,通过三个阶段(P-Net、R-Net、O-Net)逐步精细化人脸检测结果
技术细节:(海选-->淘汰赛-->决赛)
- P-Net:生成候选的人脸区域
- R-Net:对P-Net的结果进行筛选和调整
- O-Net:输出最终的人脸边界框和关键点位置
0.2 身份识别
身份识别是根据人脸图像判断其身份信息的过程,这一步骤通常涉及到人脸特征的提取和比较,所以比人脸检测稍复杂一点
操作过程:
- FaceNet:一种深度学习模型,用于从人脸图像中学习一个欧几里得空间中的嵌入表示,该表示可以用于直接比较人脸图像以确定身份
- 人脸向量对比:将待识别的人脸图像通过FaceNet模型转换为向量,然后与数据库中存储的人脸向量进行比较,以确定身份
技术细节:
- 特征提取:使用FaceNet等深度学习模型提取人脸特征
- 向量比较:使用余弦相似度等度量方法比较人脸向量的相似度
- 阈值判断:设定一个阈值,当相似度超过这个阈值时,认为两个人脸是同一人
1、MTCNN简介
1.1 背景
MTCNN(Multi-task Cascaded Convolutional Networks)最初是在2016年由Kaipeng Zhang、Zhanpeng Zhang、Zhifeng Li 和 Yu Qiao 提出的,他们在论文《Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks》中介绍了这一算法,用于解决在无约束环境中人脸检测和对齐的挑战性问题(包括不同姿势、照明和遮挡的影响等问题)
1.2 概述
MTCNN是一种多任务级联卷积神经网络,它将人脸检测和人脸关键点定位结合起来,通过三个阶段的级联网络实现从粗到细的人脸检测过程
MTCNN的主要创新点在于将人脸检测和人脸关键点对齐相结合以提升检测指标,并对在线难样本挖掘(Online Hard Sample Mining,OHSM)算法进行了改进
1.3 网络结构
MTCNN由三个级联的网络组成:P-Net、R-Net、O-Net
(1)P-Net(Proposal Network):这是第一阶段,用于快速生成候选的人脸框(Bounding Boxes),特点:纯卷积网络,无全链接(精髓所在)
P-Net接收输入图像,通过卷积层提取特征,然后利用几个简单的卷积层进行人脸分类和边框回归
P-Net会输出大量的候选框,这些候选框可能包含人脸,但也可能包含大量误检
(2)R-Net(Refine Network):这是第二阶段,用于对P-Net输出的候选框进行进一步筛选和调整
R-Net接收P-Net的候选框作为输入,通过更复杂的网络结构,对候选框进行更加细致的分类和边框回归
R-Net会去除大部分误检的候选框,并调整剩余候选框的位置和大小,使其更接近真实的人脸位置
(3)O-Net(Output Network):这是第三阶段,也是最复杂的网络
O-Net接收R-Net输出的候选框,通过更深层次的卷积神经网络处理人脸区域,优化人脸位置和姿态,并进行最终的人脸分类、边框回归以及人脸关键点的定位
O-Net的输出通常还可以用于后续的人脸识别、表情分析等任务
1.4 推理逻辑
MTCNN的推理