JuneoXIE
5/31/2019 - 6:24 AM

人脸关键点定位/人脸对齐综述

原文链接

1. 概念

人脸关键点定位(Facial landmark localization):
在人脸检测的基础上,根据输入的人脸图像,自动定位出面部关键特征点,如眼睛、鼻尖、嘴角点、眉毛以及人脸各部件轮廓点等,输入为人脸外观图像,输出为人脸的特征点集合。

人脸对齐(Facial alignment):
可以看作在一张人脸图像搜索人脸预先定义的点(也叫人脸形状),通常从一个粗估计的形状开始,然后通过迭代来细化形状的估计。在搜索的过程中,两种不同的信息被使用,一个是人脸的外观(Appearance) ,另一个是形状(Shape)。形状提供一个搜索空间上的约束条件。

人脸对齐主要将人脸中的 eyes, mouth, nose and chin 检测出来,用特征点标记出来。

人脸对齐是一个中间步骤,首先是人脸检测,然后是人脸对齐,人脸对齐的结果可以用于: 人脸验证, 人脸识别(Face recognition),属性计算(Attribute computing),表情识别(Expression recognition), 姿态估计(Pose Estimation) 等。 实际应用中人脸的不同尺度,姿态,遮挡,光照,复杂表情等对人脸对齐具有较大的挑战性 。

人脸关键点检测技术:
综合考虑传统方法和目前最新进展,从技术实现上可将人脸关键点检测分为2大类:

  • 生成式方法(Generative methods)
    生成式方法构建人脸shape和appearance的生成模型。这类方法将人脸对齐看作是一个优化问题,来寻找最优的shape和appearance参数,使得appearance模型能够最好拟合输入的人脸。这类方法包括:

    • AAM (Active Appearnce Model)
    • ASM(Active Shape Model)
  • 判别式方法(Discriminative methods)。
    判别式方法直接从appearance推断目标位置。这类方法通常通过学习独立的局部检测器或回归器来定位每个面部关键点,然后用一个全局的形状模型对预测结果进行调整,使其规范化。或者直接学习一个向量回归函数来推断整个脸部的形状。这类方法包括传统的方法以及最新的深度学习方法,具体分为如下几种经典的实现方式:

    • Constrained local models (CLMs)
    • Deformable part models (DPMs)
    • 基于级联形状回归的方法(Cascaded regression)
    • 基于深度学习的方法

从空间维度来考虑,以上这些方法又可分为:

  • 2D方法
  • 3D方法
  • 稀疏方法
  • 密集方法等

需要指出的是,由于深度学习方法可以很好的实现对多任务的处理,因此有很多新的算法可以同时完成对2D关键点和3D关键点的同时获取,进而可进一步支持后续的多任务分析,如人脸对齐,3D姿态分析等。

在人脸关键点定位的发展史上,具有里程碑式的有如下五种方法:

  • 1995 年,Cootes 的 ASM(Active Shape Model)。
  • 1998 年,Cootes 的 AAM(Active Appearance Model) 算法。
  • 2006 年,Ristinacce 的 CLM(Constrained Local Model)算法。
  • 2010 年,Rollar 的 cascaded Regression 算法。
  • 2013 年,想港中文大学的汤晓欧和Sun Yi等开创深度学习人脸关键点检测的先河,首次将 CNN 应用到人脸关键点定位上。

2. 2D人脸对齐

2.1 AAM(Active Appearance Model)/ASM/Snake

Paper: An Introduction to Active Shape Models. Constrained Local Model for FaceAlignment. Xiaoguang Yan(2011).

Snake/ASM/AAM详解
AAM详解

概述:
ASM模型起源于snake模型(作为动态边缘分割的snake模型),该方法用一条由n个控制点组成的连续闭合曲线作为snake模型,再用一个能量函数作为匹配度的评价函数,首先将模型设定在目标对象预估位置的周围,再通过不断迭代使能量函数最小化,当内外能量达到平衡时即得到目标对象的边界与特征。

历史:
1989年yuille等人此提出使用参数化的可变形模板来代替snake模型,可变形模板概念的提出为AAM的产生奠定了理论基础。
1995年cootes等人提出的ASM算法是AAM的直接前身,ASM采用参数化的采样形状来构成对象形状模型,并利用PCA方法建立描述形状的控制点的运动模型,最后利用一组参数组来控制形状控制点的位置变化从而逼近当前对象的形状,该方法只单纯利用对象的形状,因此准确率不高。
1998年,cootes等人在ASM算法的基础上首先提出AAM,与ASM的不同之处是他不仅利用了对象的形状信息而且利用了对象的纹理信息。

2.2 CLMS(Constrained Local Model)

AAM/CLM/SDM详解

2.3 级联回归方法(Cascaded regression)

级联回归的方法始于 P Dollar大神在CVPR2010的论文Cascaded pose regression,通过级联回归的方法来预测物体的形状。

概念:
对于人脸特征点定位,人脸关键点检测的目的是估计向量(Facial Shape)
其中K表示关键点的个数,由于每个关键点有横纵两个坐标,所以S的长度为2*K。
对于一个输入 I , 给定一个初始形状 (通常是在训练集计算得到的平均形状)。每一级输出的是根据输入图像得到的偏移估计 ΔS,那么每一级都会更准确的预测脸上 Landmark 的位置:

其中,分别表示第 t 和 t+1级预测的人脸形状(即所有关键点集合),r_t表示回归函数。

在级联形状回归的框架下,主要的操作是向量相加,不仅有效而且计算复杂度较低, 所以近年来得到了广泛的应用,并产生了很多改进算法, 其主要不同点在于特征提取方法以及回归函数r_t的选择不同。值得一提的是,级联回归对与正脸或接近正脸的定位精度相对较高,而对于大姿态下的关键点定位效果相对较差。

2.3.1 CPR(Cascaded Pose Regression)

论文地址
CPR通过一系列回归器将一个指定的初始预测值逐步细化,每一个回归器都依靠前一个回归器的输出来执行简单的图像操作,整个系统可自动的从训练样本中学习。 CPR检测流程一共有T个阶段,在每个阶段中首先进行特征提取f,这里使用的是shape-indexed features,也可以使用诸如HOG、SIFT等人工设计的特征,或者其他可学习特征(learning based features),然后通过训练得到的回归器R来估计增量ΔS( update vector),把ΔS加到前一个阶段的S上得到新的S,这样通过不断的迭代即可以得到最终的S(shape)。

2.3.2 ESR(Explicit Shape Regression)

Github代码
CVPR 2012微软亚洲研究院(MSRA)孙剑组的作品。该文章主要提出了3个方法:

  • (1) 2层级联的boost回归(two-level boosted regression)
    作者这里的2层boost回归,第一层有10级,第二层有500级,这样分层的好处,比单独使用一个5000级而只有1层的效果要好很多。其中,第一层中的特征维度不固定,第二层中中的特征维度固定。
  • (2) 基于形状索引的特征(shape-indexed features)
    该形状索引特征,计算回归的位置和真实位置之间的像素差,类似于中心差分算梯度,从而得到最终特征向量,并且该特征向量采用了局部坐标系,相比全局坐标系具有更好的鲁棒性。
  • (3) 基于相关系数的特征选择方法(correlation-based feature selection method)
    这里,需要从之前提取的400*400个特征中选择出最右代表性的前f个。简单的说,就是计算所有特征向量的相关系数,取前f个系数最高的作为最终的输出特征向量。

2.3.3 ERT(Ensemble of Regression Trees)

dlib实现人脸关键点定位采用的方法。

2.3.4 Face Alignment at 3000 FPS

Github代码
cvpr2013, ESR是基础版本的形状回归,ERT将回归树修改为GBDT,由原始的直接回归形状,改进为回归形状残差,而LBF,是加速特征提取,由原来的像素差分特征池,改为随机选择点。该方法主要体现在2个方面:

  • (1) LBF特征的提取
    作者通过在特征点附近随机选择点做残差来学习LBF特征,每一个特征点都会学到由好多随机树组成的随机森林,因此,一个特征点就得用一个随机森林生成的0,1特征向量来表示,将所有的特征点的随机森林都连接到一起,生成一个全局特征,后续过程就可以使用该全局特征做全局线性回归了。
  • (2) 基于cascade的级联的随机森林做全局线性回归
    LBF 采用的回归方法是线性回归,令表示线性回归矩阵,表示随机森林提取到的特征,每一个stage的回归目标是:

    训练过程,就是学习的一个过程,测试过程就是用训练好的对提取的LBF特征做回归的过程。对于每个stage,越往下,所选择的随机点的范围就越小,特征点定位精度就越好。

2.3.5 DAN(Deep Alignment Network: A convolutional neural network for robust face alignment) CVPR 2017

theano 代码
cpr
cvpr2012ESR
ESR代码
cvpr2013-3000FPS
3000FPS-CSDN
DAN详细介绍及tf实现

级联形状回归(Cascaded Shape Regressor)人脸对齐框架的CNN实现。算法级联了多级回归器,每一级的输出是相对于上一级的偏移量。通过增加人脸关键点热度图,可以使得每级的输入是整个人脸图像,与之前的局部区域图像定位某个关键点的方法相比,增加了人脸的全局信息。另外,第一级的输入是一个平均形状(mean shape calculated on trainset),此后每一级的输入包含3个部分:由上一级回归的关键点对齐后的输入图像,关键点热度图以及上一级的最后一层特征图(featuremap)。每一级的CNN网络都是VGG16。

2.4 CNN 方法

2.4.1 DCNN(Deep Convolutional Network Cascade for Facial Point Detection) CVPR 2013

论文地址
香港中文大学汤晓欧,SunYi等人作品,首次将CNN用于人脸关键点检测。总体思想是由粗到细,实现5个人脸关键点的精确定位。网络结构分为3层:level 1、level 2、level 3。每层都包含多个独立的CNN模型,负责预测部分或全部关键点位置,在此基础上平均来得到该层最终的预测结果。

过程:

  • level1 粗定位,包含3个CNN
    F1定位所有的5个关键点, EN1用于定位:左眼+右眼+鼻子 三个特征点, NM1用于定位:左嘴角+右嘴角+鼻子 三个特征点。除输入图像大小和输出维度不同(F1 输入39x39整个人脸图像, 输出5x2个坐标点;EN1: 输入31x39 人脸上半部区域,输出3x2,NM1:输入31x39 人脸下半部区域,输出3x2)3个CNN的网络结构,参数完全一致。3个网络输出,在每个点的预测结果上做平均,得到本层的最终输出
  • level2精确定位,包含10个CNN
    每两个CNN负责预测同一个关键点,然后取平均得到这一点的精确预测。输入为在level1输出的关键点周围的局部裁剪图像。
  • level3更精确定位
    结构和作用与level2一致,10个CNN,两两平均,只是输入的图像是在leve2关键点基础上做了更小的裁剪。
    虽然作者没有明确说这个问题,但是很明显的是,经过level-1,得到了一个相对较好的初始化。
    在这方面,face++ 发表在ICCV-2013的paper(Extensive facial landmark localization with coarse-to-fine convolutional network cascade)同样有这么个“初始化”的操作。借鉴别的文献中的idea:局部共享权值(locally sharing weights),理论听起来挺有道理的。传统的权值共享认为某一个特征会图像的不同位置出现,所以采用全局权值共享。但是人脸是由比较规范的结构,如人眼就是在上部,鼻子就是在中部,嘴就是在下部,因此应该采用局部权值共享。

2.4.2 TCNN

2.4.3 MTCNN

2.4.4 LAB (LAB-Look at Boundary A Boundary-Aware Face Alignment Algorithm) CVPR 2018

DCNN-CSDN DCNN项目主页
TCNN-caffe-mxnet
LAB
LAB-CSDN翻译
LAB-github

清华&商汤作品。借鉴人体姿态估计,将边界信息引入关键点回归上。网络包含3个部分:边界热度图估计模块(Boundary heatmap estimator),基于边界的关键点定位模块( Boundary-aware landmarks regressor )和边界有效性判别模块(Boundary effectiveness discriminator)

结构:

  • 边界热度图估计模块:
    采用stacked hourglass network 和 message passing layers。输入人脸图像,输出人脸边界热度图来表示面部的几何结构。人脸面部的各个器官边界共构成K个边界。每个stack结束时,特征图被分成K个分支,分别送给各个对应类型的边界热度图估计。最终生成的热度图与输入原始图像进行融合,作为关键点定位模块的输入。
  • 基于边界的关键点定位模块:
    利用边界信息,通过4阶res-18网络来定位关键点
  • 边界有效性判别模块:
    由于边界热度图在关键点定位中起着非常重要的作用,因此需要对生成的边界信息的准确性进行评判。该模块采用对抗网络,评判边界热度图的有效性。

3. 3D人脸对齐

3D人脸对齐,即检测人脸的3D面部关键点坐标,主大部分工作是通过3D人脸建模实现,即拟合人脸的3D模型(如3DMM(3D Morphable Model))参数来实现,相关根据拟合的方式不同,产生了很多算法。

3.1 3DDFA: Face Alignment Across Large Poses- A 3D Solution

论文地址
代码链接

自动化所作品, 解决极端姿态下(如侧脸),一些特征点变了不可见,不同姿态下的人脸表观也存在巨大差异使得关键点定位困难等问题,本文提出一种基于3D人脸形状的定位方法3DDFA。

算法框架为:

  • (1) 输入为100x100的RGB图像和PNCC (Projected Normalized Coordinate Code) 特征,PNCC特征的计算与当前形状相关,可以反映当前形状的信息;算法的输出为3D人脸形状模型参数
  • (2) 使用卷积神经网络拟合从输入到输出的映射函数,网络包含4个卷积层,3个pooling层和2个全连接层
    通过级联多个卷积神经网络直至在训练集上收敛,PNCC特征会根据当前预测的人脸形状更新,并作为下一级卷积神经网络的输入。
  • (3) 此外,卷积神经网络的损失函数也做了精心的设计,通过引入权重,让网络优先拟合重要的形状参数,如尺度、旋转和平移;当人脸形状接近ground truth时,再考虑拟合其他形状参数。

实验证明该损失函数可以提升定位模型的精度。由于参数化形状模型会限制人脸形状变形的能力,作者在使用3DDFA拟合之后,抽取HOG特征作为输入,使用线性回归来进一步提升2D特征点的定位精度。

训练:
训练3DDFA模型,需要大量的多姿态人脸样本。为此,作者基于已有的数据集如300W,利用3D信息虚拟生成不同姿态下的人脸图像,核心思想为:先预测人脸图像的深度信息,通过3D旋转来生成不同姿态下的人脸图像。

3.2 Large-Pose Face Alignment via CNN-Based Dense 3D Model Fitting

这篇文章是来自密西根州立大学的Amin Jourabloo和Xiaoming Liu的工作。 和上一篇文章的出发点一样,作者试图使用3D人脸建模解决大姿态下面部特征点定位问题。 2D的人脸形状U可以看成是3D人脸形状A通过投影变化m得到。 3D人脸形状模型可以表示为平均3D人脸形状 A 0 与若干表征身份、表情的基向量 A id 和 A exp 通过p参数组合而成, 面部特征点定位问题(预测U)可以转变为同时预测投影矩阵m和3D人脸形状模型参数p。

算法的整体框架通过级联6个卷积神经网络来完成这一任务:

  • (1) 首先以整张人脸图像作为输入,来预测投影矩阵的更新
  • (2) 使用更新后的投影矩阵计算当前的2D人脸形状,基于当前的2D人脸形状抽取块特征作为下一级卷积神经网络的输入,下一级卷积神经网络用于更新3D人脸形状
  • (3) 基于更新后的3D人脸形状,计算可得当前2D人脸形状的预测
  • (4) 根据新的2D人脸形状预测,抽取块特征输入到卷积神经网络中来更新投影矩阵,交替迭代优化求解投影矩阵m和3D人脸形状模型参数p,直到在训练集收敛

值得一提的是,该方法在预测3D人脸形状和投影矩阵的同时也考虑到计算每一个特征点是否可见。如果特征点不可见,则不使用该特征点上的块特征作为输入,这是普通2D人脸对齐方法难以实现的。
此外,作者提出两种pose-invariant的特征Piecewise Affine-Warpped Feature (PAWF)和Direct 3D Projected Feature (D3PF),可以进一步提升特征点定位的精度。

4. 密集人脸对齐

4.1 Dense Face Alignment

论文翻译
项目主页

ICCV2017密西根州立大学作品。在人脸对齐方法中,以前的算法主要集中在特定数量的人脸特征点检测,比如5、34或者68个特征点,这些方法都属于稀疏的人脸对齐算法。 在本文中,我们提出了一种针对大角度人脸图像的一种3D密集人脸对齐算法。在该模型中,我们通过训练CNN模型利用人脸图像来估计3D人脸shape,利用该shape来fitting相应的3D人脸模型,不仅能够检测到人脸特征点,还能匹配人脸轮廓和SIFT特征点。此外还解决了不同数据库中由于包含不同数量的特征点(5、34或68)而不能交叉验证的问题。可以实时运行.

4.2 DenseReg: Fully Convolutional Dense Shape Regression In-the-Wild CVPR 2017

项目主页
github code

论文提出通过完全卷积网络学习从图像像素到密集模板网格的映射。我们将此任务作为一个回归问题,并利用手动注释的面部标注来训练我们的网络。我们使用这样的标注,在三维对象模板和输入图像之间,建立密集的对应领域,然后作为训练我们的回归系统的基础。我们表明,我们可以将来自语义分割的想法与回归网络相结合,产生高精度的“量化回归”架构。我们的系统叫DenseReg,可以让我们以全卷积的方式估计密集的图像到模板的对应关系。因此,我们的网络可以提供有用的对应信息,而当用作统计可变形模型的初始化时,我们获得了标志性的本地化结果,远远超过当前最具挑战性的300W基准的最新技术。我们对大量面部分析任务的方法进行了全面评估,并且还展示了其用于其他估计任务的用途,如人耳建模。

4.3 FAN(How far are we from solving the 2D & 3D Face Alignment problem?)ICCV 2017

论文地址 训练和测试代码以及数据集

诺丁汉大学作品。在现存2D和3D人脸对齐数据集上,本文研究的这个非常深的神经网络达到接近饱和性能的程度。
本文主要做了5个贡献:

  • (1)结合最先进的人脸特征点定位(landmark localization)架构和最先进的残差模块(residual block),首次构建了一个非常强大的基准,在一个超大2D人脸特征点数据集(facial landmark dataset)上训练,并在所有其他人脸特征点数据集上进行评估。 - (2)我们构建一个将2D特征点标注转换为3D标注,并所有现存数据集进行统一,构建迄今最大、最具有挑战性的3D人脸特征点数据集LS3D-W(约230000张图像)。
  • (3)然后,训练一个神经网络来进行3D人脸对齐(face alignment),并在新的LS3D-W数据集上进行评估。
  • (4)本文进一步研究影响人脸对齐性能的所有“传统”因素,例如大姿态( large pose),初始化和分辨率,并引入一个“新的”因素,即网络的大小。
  • (5)本文的测试结果显示2D和3D人脸对齐网络都实现了非常高的性能,足以证明非常可能接近所使用的数据集的饱和性能。

4.4 Learning Dense Facial Correspondences in Unconstrained Images

论文地址

4.5 PRNet(Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network) CVPR 2018

论文地址
论文翻译
论文笔记

上海交通大学作品。本文提出了一个强有力的方法来同时实现3D人脸重构和密集人脸对齐。为实现该目标,我们设计了一个UV位置图,来达到用2D图表示UV 空间内完整人脸的3D形状特征。然后训练了一个简单的CNN来通过单张2D图像回归得到UV图。我们的方法不需要任何先验人脸模型,就可以重构出完整的面部结构。并且开源了tensorflow 测试代码和预训练模型,速度9.8ms/帧。

5. 数据集

  • UMDFace
  • MTFL
    (TCDCN所用)
  • 300W-3D
    The fitted 3D Morphable Model (3DMM) parameters of 300W samples.
  • 300W-3D-Face
    The fitted 3D mesh, which is needed if you do not have Basel Face Model (BFM)
  • 300W-3D-Face
  • 300W-LP
    The synthesized large-pose face images from 300W. 300W standardises multiple alignment databases with 68 landmarks, including AFW, LFPW, HELEN, IBUG and XM2VTS.
  • AFLW2000-3D
    The fitted 3D faces of the first 2000 AFLW samples, which can be used for 3D face alignment evaluation.

6. 评价标准

7. 人脸对齐值得考虑的几个问题

  • 数据集扩增
  • 人脸图片预处理
  • 处理尺度变化
  • 扩大人脸区域,在人脸检测得到的boundingbox基础上扩大30%
  • 形状初始化
  • 精度和效率的权衡