什么是人脸识别

Posted 程序媛一枚~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是人脸识别相关的知识,希望对你有一定的参考价值。

什么是人脸识别? 人脸识别是在拍摄的图像中找到人脸,并识别脸部所属于谁。因此,人脸识别是一种人身份认证的形式。

这篇博客将介绍面部识别是一个两阶段的过程,包括:

  1. 面部检测和面部ROI(Region Of Interest)的提取
  2. 识别脸部所属的人

并简要回顾了面部识别算法的历史,包括:

  • 由研究人员手动标记的粗鲁的(通常是主观的)面部标志
  • 基于线性的代数基技术,如特征缺陷和FishFaces
  • Lbps面部识别
  • 基于深度学习的模型,包括Faceget和OpenFace

1. 人脸识别如何工作

早期面部识别系统依赖于从图像中提取面部标志的早期版本,例如眼睛,鼻子,颧骨和下颌的相对位置和大小。然而这些系统通常是高度主观的并且容易出错,因为这些量化由运行面部识别软件的计算机科学家和管理员手动提取。

随着机器学习算法变得更强大,计算机视野更成熟,人脸识别系统开始利用 特征提取和分类模型来识别图像中的面部 。
这些系统不仅是非主观性的,而且是自动的——不需要手动进行面部标志的标记。只是简单地从面部提取特征,培训分类器,然后使用它来识别后续面。

最近开始利用深度学习算法来进行人脸识别。最先进的面部识别模型,如FaceNet和OpenFace依赖于名为SIAMESE网络的专业深度神经网络架构。 这些神经网络能够用极小的数据集获得极高的识别准确率,而且从前认为这样的准确率是不可能达到的。

2. 人脸识别与面部检测的不同

面部检测和面部识别是明显不同的算法。面部检测将告诉您在给定图像/帧中的面部位置,而面部识别实际上识别检测到的面部。
面部识别采用从定位阶段检测到的面,并尝试识别面部所属于谁。因此,人脸识别可以被认为是一种身份认证方法,通常在安全性和监测系统中使用。

人脸识别可以分为俩个步骤:

  1. 使用诸如Haar Cascades,Hog +线性SVM,深度学习或可以定位面部的任何其他算法的方法检测图像或视频流中的面部的存在;
  2. 取在本地化阶段期间检测到的每个面,并识别它们中的每一个——这里实际为脸部分配名称。

在本教程的剩余部分中,我们将审核快速的面部识别历史,然后引入面部识别算法和技术,包括面部识别,用于面部识别的局部二进制模式(LBPS),暹罗网络,面部等。

3. 人脸识别算法的历史

20世纪70年代前,人脸识别就像一个幻想。

1971年,将人脸标记为21个主观面部特征,例如毛发颜色和唇缘,以识别照片中的脸部。

1987年,有特征性的人脸识别开始出现,主成分分析(Principle Component Analysis PCA)的维度减少的标准线性代数技术可用于使用小于100微米的特征向量识别面部。

20世纪80年代后期,基于流行的线性代数的面部识别技术利用线性判别分析(Linear Discriminant Analysis LDA)出现,。基于LDA的面部识别算法通常称为FisherFaces。还提出了基于特征的方法,例如用于面部识别的局部二进制模式,现在使用也较多。

现在人脸识别主要是基于深度学习,名为暹罗网络(siamese networks)的专业网络,使用称为图像三胞胎的特殊类型数据进行训练。然后计算,监控,并尝试最小化三联损耗从而使得面部识别精度达到最大化。
受欢迎的深度神经网络面部识别模型包括 FaceNetOpenFace

2004年,本地二进制模式的人脸识别,该方法将面部图像分成一个同等尺寸的 7×7。虽然 Eigenfaces 和LBP是相当简单的面部识别算法,但是基于特征的LBP方法往往会更具弹性抗噪声(因为它不在原始像素强度本身上操作)并且通常会产生更好的结果。

4. 现在用于人脸识别的最先进的算法

深度学习算法包括暹罗网络,图像三胞胎和三联损失(siamese networks, image triplets, and triplet loss),使研究人员能够获得曾经认为不可能的面部识别准确性。

这些方法比以前的技术更准确且稳健。尽管神经网络的耻辱是需要大量的数据集,但暹罗网络使我们能够用很少的数据训练这些最先进的模型。

参考

以上是关于什么是人脸识别的主要内容,如果未能解决你的问题,请参考以下文章

人脸识别人脸识别损失函数学习笔记

android人脸识别活体识别人脸动作活体静默活体Demo源码实现讲解

人脸识别 介绍

识别人脸face_recognition实现

如何开发Java动态人脸识别

《刷脸背后:人脸检测 人脸识别 人脸检索 》PDF 学习下载