总体思路
人脸识别使用的算法思路为:首先,定位一张图像中所有的人脸位置;其次,对于同一张脸,当光线改变或者朝向方位改变时,算法还能判断是同一张脸;然后找到每一张脸不同于其他脸的独特之处,比如脸的大小、眉毛的弯曲程度,并表示出来;最后,通过把表示出来的脸的特征数据与数据库中的所有的人脸特征进行匹配,确定图像中人的身份信息。
模型介绍
OpenFace 是一个基于深度神经网络的人脸识别和面部特征提取系统,它主要由以下几个关键步骤组成:
-
人脸检测:
- 输入图像:OpenFace首先需要从输入图像中检测出所有的人脸位置。
- 检测算法:通常使用卷积神经网络(CNN)或其他检测算法(例如MTCNN)来定位人脸区域。
-
特征对齐:
- 人脸对齐:对检测到的人脸进行对齐,保证不同图像中的人脸特征在相同位置。这一步骤通常使用面部关键点检测器来实现,如使用68点或更精细的面部标记系统。
- 图像预处理:对人脸图像进行预处理,例如调整大小、标准化光照等,以提高后续识别的准确性。
-
特征提取:
- 特征提取网络:OpenFace使用深度神经网络(如VGG网络)从对齐后的面部图像中提取特征。这些特征捕捉了面部的独特信息,包括脸部的结构、纹理等。
- 面部嵌入:提取的特征通常被表示为一个高维的向量,称为“面部嵌入”。这些嵌入向量是对面部特征的压缩表示。
-
特征匹配和识别:
- 数据库对比:将提取的面部特征向量与数据库中已存储的人脸特征进行比较。匹配算法可能使用欧氏距离、余弦相似度等方法来度量相似度。
- 身份验证:通过匹配结果来确定图像中人物的身份。若特征向量与数据库中的某个特征向量的相似度超过设定的阈值,则认为是同一人。
-
结果输出:
- 识别结果:根据特征匹配的结果输出识别信息,例如姓名、ID等。
检测流程
OpenFace的流程如图所示,下面将依次对流程图的每一步进行解释。