图像方向-人脸检测与识别介绍

https://mp.weixin.qq.com/s/U9CBzzOAmkC71-eLkCnc5Q

作者易苗,本文介绍了人脸识别的经典流程以及流程中涉及到的三个模块:人脸检测、人脸对齐、特征提取与比对,并以一种开源的人脸识别引擎—SeetaFace 为例,展示了人脸识别的算法原理,最后简要介绍了几个最新的基于深度学习的人脸识别算法以及人脸识别的应用场景。

一、人脸识别算法框架介绍:

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。人脸识别实现了图像或视频中人脸的检测人脸特征点的定位、以及人脸特征提取与比对。具体地,对于一张输入图像,首先检测出图像中的人脸,然后对人脸进行面部特征点的定位,并根据定位结果对人脸进行矫正,裁剪出人脸核心区域,最后提取人脸核心区域特征,与人脸数据库中的特征进行比对,得出识别结果。

二、流程详解:

1、人脸检测(Face Detection)

人脸检测,即确定图像中人脸的位置和范围。主流的人脸检测方法有基于Haar+ Adaboost的人脸检测、基于特征的方法、基于模板的方法以及基于CNN的方法。

1) 基于Haar+Adaboost的人脸检测

基于积分图、级联检测器和Adaboost算法的方法在进行人脸检测时,首先将一张输入图片按照一定的比例连续缩小,得到一系列尺度不一的图片集,然后定义人脸窗口的大小(如20x20),并穷举每个尺度图片所有位置的20x20的子窗口,提取该窗口的Haar特征(可用积分图快速计算),然后利用Adaboost级联分类器判断是否为人脸,最后对于所有的人脸候选窗口进行后处理,得到最终的检测结果。

2) 基于特征的方法

基于特征的方法是利用人脸的先验知识导出的规则进行人脸检测。一般来说,常用的特征包括人脸和人脸器官典型的边缘和形状特征(如人脸轮廓、虹膜轮廓、嘴唇轮廓等)、纹理特征(纹理是在图上表现为灰度或颜色分布的某种规律性,这种规律性在不同类别的纹理中有其不同特点,人脸有其特定的纹理特征)、颜色特征(人脸肤色特征,目前主要有RGB,HSV,YCbCr,YIQ,HIS等彩色空间模型被用来表示人脸的肤色,从而进行基于颜色信息的人脸检测方法的研究)。

3) 基于模板的方法

基于模板的方法主要通过计算人脸模板和待检测图像之间的相关性来实现人脸检测功能。具体地,首先使用人工定义的方法给出人脸通用模板,对于待检测的人脸图像,分别计算眼睛、鼻子、嘴等特征同人脸模板的相关性,由相关性的大小来判断是否存在人脸。这种算法简单、容易实现,但是模板的尺寸、大小、形状不能进行自适应的变化,导致了该方法适用范围较窄。

4) 基于CNN的方法

基于CNN的方法利用卷积神经网络自动提取图像特征进而进行人脸检测,相比于其它方法,准确率大幅度提高。

2.人脸对齐(Face Alignment)

对于检测到的人脸图像,对齐模块实现了人脸关键点的检测,并根据关键点做对齐校准(仿射变换),最后裁剪出眉眼鼻嘴形成的人脸核心区域。

主流的人脸对齐方法有主观形状模型(ASM,Active Shape Model)、主动外观模型(AAM,Active Appearance Model)、SDM(Supervised Descent Method)算法、级联回归(Cascade Regression)算法,以及基于CNN的人脸特征点定位算法。如图5 所示的基于CNN的人脸对齐算法,对于检测到的人脸框,首先利用三个CNN粗略定位出5个特征点,然后针对每一个特征点区域,利用两个CNN进行定位,对定位结果求平均,得到优化后的特征点位置,再在更小的特征点区域内对特征点进行精定位。

3.狭义的人脸识别(Face Recognition)

狭义的人脸识别指的是从裁剪的人脸中提取特征,并与库内人脸的特征进行相似度计算的过程。

传统的人脸识别方法一般分为高维人工特征提取(例如:LBP,Gabor等)和降维两个步骤,代表性的降维方法有PCA、LDA等子空间学习方法和LPP等流行学习方法。深度学习方法流行之后,代表性方法为从原始的图像空间直接学习判别性的人脸表示,主流的方法仍然是采用各种深度卷积神经网络(DCNN)来学习更有判别力的特征。

需要注意的是,在训练过程中,会把人脸识别问题转化为分类问题,每一个人(多张人脸图片)对应一个类别,训练得到网络模型之后,在测试或应用阶段,将人脸图像作为网络输入,利用网络模型提取人脸特征(通常取倒数第二个全连接层的输出作为人脸特征),再利用该特征与其它人脸特征进行比对,得出识别结果。

目前,深度学习+大数据(海量的有标注人脸数据)成为了人脸识别的主流技术路线,并且技术的改进方向概括下来主要有两点:a)网络变大变深(VGGFace16层,FaceNet22层,LightCNN29层);b)数据量不断增大(DeepFace400万,FaceNet2亿)。总的来说,大数据成为提高人脸识别性能的关键!

三、SeetaFace引擎介绍 

SeetaFace是一套开源的人脸识别解决方案。它提供了一套完整的人脸检测(SeetaFace Detector)、人脸对齐(SeetaFace Alignment)和人脸验证(SeetaFace Identification)的方案。

1.    SeetaFace 检测

人脸检测模块采用漏斗型级联结构,专门针对多姿态人脸检测而设计,其中引入了由粗到精的设计理念,兼顾了速度和精度的平衡。如图7,级联结构在顶部由多个针对不同姿态的快速LAB级联分类器构成,紧接着是若干个基于SURF特征的多层感知机(MLP)级联结构,最后由一个统一的MLP级联结构(同样基于SURF特征)来处理所有姿态的候选窗口,整体上呈现出上宽下窄的漏斗形状。从上往下,各个层次上的分类器及其所采用的特征逐步变得复杂,从而可以保留人脸窗口并排除越来越难与人脸区分的非人脸候选窗口。

2、SeetaFace 对齐

SeetaFace对齐模块,对于输入的脸区域(由人脸检测模块得到),第一级自编码器网络直接从该人脸的低分辨率版本中快速估计大致的人脸形状S0。然后,提高输入人脸图像的分辨率,并抽取当前人脸形状S0(相应提升分辨率)各特征点位置的局部特征,输入到下一级自编码器网络来进一步优化人脸对齐结果。以此类推,通过级联多个栈式自编码器网络,在越来越高分辨率的人脸图像上逐步优化人脸对齐结果。

3、SeetaFace 识别

识别模块提取特征的网络模型是对AlexNet的修改:将第一个卷积层的卷积核大小由11x11改为9x9,将模型中5x5的卷积核改成两个3x3卷积核(由此也导致网络模型由5个卷积层增加到7个卷积层),第二个全连接层的节点数由4096改为2048,并引入了FNL(Fast Normalization Layer)层,以及去除了LRN(Local Response Normalization)层。模型训练数据集为1.6万人共140万幅图像,采用FC2的2048个节点输出作为特征,并计算特征向量夹角余弦进行特征比对。

04基于DL的人脸识别方法   

1.    Light CNN

Light CNN方法的贡献点在于:提出了一种新的激活函数Max-Feature-Map(MFM不仅能区分开噪声数据和信息数据,而且在特征选择方面起着重要的作用);提出了三种网络(两个小网络+一个大网络:Light CNN-4、Light CNN-9、Light CNN-29),能达到较好的识别效果,并且计算效率高。

2、Deep ID 家族

DeepID1的结构与普通的卷积神经网络的结构相似,但是在隐含层,也就是倒数第二层,与Convolutional layer 4和Max-pooling layer3相连,鉴于卷积神经网络层数越高视野域越大的特性,这样的连接方式可以既考虑局部的特征,又考虑全局的特征。DeepID2相对于DeepID有了较大的提高。其主要原因在于在DeepID的基础上添加了验证信号,能改善同一个人的不同图像被识别成不同人的状况。相比于DeepID2,DeepID2+做了如下三点修改:a)DeepID层从160维提高到512维;b)训练集更大,将CelebFaces+和WDRef数据集进行了融合,共有12000人,290000张图片;c)将DeepID层不仅和第四层和第三层的max-pooling层连接,还连接了第一层和第二层的max-pooling层

3、FaceNet

FaceNet是一个深层网络(22层),在训练过程中用了海量数据(800万人,2亿张图片),并利用TripletLoss作为损失函数,与softmax loss相比,TripletLoss在训练过程中不需要占用额外显存,且使得网络在训练过程中直接学习特征间的可分性:同一类的特征之间的距离要尽可能的小,而不同类之间的特征距离要尽可能的大,也就是说通过学习,使得类间的距离要大于类内的距离。

如图12所示,网络没经过学习之前,Anchor和Positive的欧式距离可能很大,Anchor和Negative的欧式距离可能很小,在网络的学习过程中,Anchor和Positive的欧式距离会逐渐减小,而Anchor和Negative的距离会逐渐拉大。

05

人脸识别应用场景    

目前,人脸识别的应用场景主要分为三大类,第一种场景:1:1 的人证合一验证系统。典型的应用是:刷身份证读取卡内照片,将其与现场采集的用户人脸去做比对,看是否身份证的合法持有人;第二种场景:1:N静态照片比对系统。典型应用场景是公安人员对不明身份嫌疑人照片进行公安大库照片比对,以确定其身份;第三种场景:1:N+1动态人脸识别场景。区别于前面的1:N场景,这类场景是需要拒识非目标人的,所以是N+1。

本文转载自https://mp.weixin.qq.com/s/U9CBzzOAmkC71-eLkCnc5Q

公众号:少年PAAI,干货内容不错

猜你喜欢

转载自blog.csdn.net/momo026/article/details/82807876