人脸识别+变老 - When Age-Invariant Face Recognition Meets Face Age Synthesis: A Multi-Task Learning Framework - 1 - 论文学习

 

When Age-Invariant Face Recognition Meets Face Age Synthesis:A Multi-Task Learning Framework

为了在人脸识别中最小化年龄变化的影响,之前的工作要么通过最小化身份和年龄相关特征之间的相关性来提取与身份相关的有区分度特征,称为年龄不变人脸识别(age-invariant face recognition, AIFR),或者通过将不同年龄组的人脸转换成相同年龄组的人脸来消除年龄差异,这被称为人脸年龄合成(face age synthesis, FAS);然而,前者缺乏模型解释的可视化结果,而后者则存在影响downstream识别的伪影。因此,本文提出了一个统一的多任务框架来共同处理这两个任务,称为MTL-Face,它可以学习年龄不变的身份相关表征,同时实现令人惊喜的人脸合成。首先,我们通过注意力机制将混合的人脸特征分解为两个不相关的分量——身份相关和年龄相关特征,然后通过多任务训练和连续域自适应将这两个分量去相关。与传统的实现group-level FAS的one-hot编码相比,我们提出了一种新的身份条件模块来实现identity-level FAS,并通过权重共享策略来提高合成人脸的年龄平滑度。此外,我们还收集并发布了包含年龄和性别标注的跨年龄人脸数据集,以促进AIFR和FAS的发展。在五个基准跨年龄数据集上的大量实验表明,我们提出的MTLFace优于现有的最先进的AIFR和FAS方法。我们进一步在两个流行的通用人脸识别数据集上验证了MTLFace,显示了其在自然环境下具有竞争力的人脸识别性能。代码可https://github.com/Hzzone/MTLFace.

 

1. Introduction

多年来,人脸识别一直是计算机视觉领域的研究热点。最近,基于深度学习的方法通过使用深度神经网络增强人脸识别模型,取得了优异的性能,甚至在一些场景中超过了人类[13,21,42]。传统的想法是利用基于margin的度量来增加类内的紧凑性,并使用大量数据训练模型来提高人脸识别性能[53]。

尽管普通人脸识别(GFR)取得了显著的成功,但如何将年龄变化的影响最小化是当前人脸识别系统在许多实际应用(如寻找走失儿童)中正确识别人脸的一个长期挑战。因此,实现无年龄变化的人脸识别,即年龄不变人脸识别(AIFR)具有重要意义。然而,AIFR在以下三个方面仍然具有极大的挑战性。首先,当跨年龄人脸识别的年龄差异较大时,年龄变化会对人脸外观产生较大影响,影响人脸识别的性能。第二,人脸年龄合成(FAS)是一个涉及人脸衰老/年轻化(也称年龄进展/退化)的复杂过程,因为人脸外观在很长一段时间内会发生剧烈变化,人与人之间也有所不同。最后,在保持身份不变的情况下,获取大量成对的人脸数据集来训练模型以得到具有自然效果的人脸是不可行的。

为了克服这些问题,目前的AIFR方法大致可以分为生成模型和判别模型两大类。对于人脸图像,生成模型[9,22,34]的目的是将不同年龄的人脸转换为相同年龄的人脸,以辅助人脸识别。最近,生成对抗网络(GANs)[12]已被成功地用于提高合成人脸的图像质量[24,27,51,56,58];他们通常使用one-hot编码来指定目标年龄群。然而,one-hot编码代表了年龄groud-level人脸转换,忽略了identity-level个性化模式,并导致了意想不到的伪影。因此,由于人脸合成的不愉快和身份的意外变化,AIFR的性能无法显著改善。另一方面,判别模型[5,49]侧重于从混合信息中分离出与身份相关的信息来提取年龄不变特征,从而使人脸识别系统只期望得到与身份相关的信息。虽然在AIFR中取得了良好的性能,但它们不能为用户(如警察)提供可视化的结果作为进一步验证身份的生成方法,这可能会在许多实际应用的决策过程中损害模型的可解释性。

为了进一步提高生成模型的图像质量,并为判别模型提供模型的可解释性,我们提出了一种统一的多任务学习框架,同时实现AIFR和FAS,称为MTLFace,可以同时实现两个任务;即学习年龄不变的身份相关表示,同时实现令人愉悦的人脸合成。更具体地说,我们首先通过注意机制将混合的高级特征分解为两个不相关的分量——身份相关和年龄相关的特征。然后我们在一个多任务学习框架中将这两个部分去相关,其中一个年龄估计任务是提取年龄相关的特征,而一个人脸识别任务是提取身份相关的特征;此外,带有梯度反转(gradient reversal)层[8]的连续跨年龄鉴别器进一步鼓励了与身份相关的年龄不变特征。此外,我们提出了一个身份条件模块来实现FAS的identity-level转换模式,并采用权重共享策略来提高合成人脸的年龄平滑度;也就是说,人脸的老化是平滑的。大量的实验表明,与现有的最先进的AIFR和FAS方法相比,其性能更优越,在自然环境下的人脸识别中具有竞争力。图1展示了我们的MTLFace中同一个人的年龄进展/退化的例子,表明我们的框架可以在保留身份的同时合成逼真的人脸。

我们的贡献总结如下。首先,我们提出了一个统一的多任务学习框架来联合处理AIFR和FAS,该框架可以学习年龄不变的身份相关表征,同时实现效果好的人脸合成。其次,我们提出了一种基于注意力的特征分解方法在高级特征maps上分离与年龄相关和身份相关的特征,与之前对特征向量的无约束分解相比,该方法可以约束分解过程。结合年龄估计和人脸识别任务,同时结合连续域自适应来监督分解过程。第三,与之前实现年龄group-level人脸转换的one-hot编码相比,我们提出了一种新的身份条件模块来实现identity-level人脸转换,并通过权重共享策略提高合成人脸的年龄平滑度。第四,在5个基准数据集上进行了大量实验,验证了该框架对AIFR和FAS的有效性,并在2个流行的GFR数据集上取得了较好的性能。最后,我们收集并发布了数百万张具有年龄和性别标注的跨年龄人脸数据集,可以促进AIFR和FAS的发展。此外,该方法也有望用于其他与人脸相关的研究任务;例如,预训练人脸年龄估计。

 

2. Related Work

Age-invariant face recognition (AIFR).  以前的研究通常通过从混合特征中分离年龄不变特征来处理年龄变化。例如,[10]采用隐因子分析(hidden factor analysis, HFA)对混合特征进行因子分解,从而减少身份相关特征的年龄变化。[52]利用潜在因子引导的卷积神经网络(LF-CNN)将HFA[10]扩展为深度学习框架。同时,[60]引入了年龄估计任务来指导AIFR。最近,基于CNN的判别方法在AIFR中取得了很好的结果。OE-CNN[49]对AIFR采用了一种改进的softmax损失[26],将人脸嵌入分解为两个正交分量,身份相关特征和年龄相关特征分别表示为angular方向和radial方向。同样,DAL[45]在假设两个成分不相关的情况下,以对抗的方式进行特征分解。

与我们相关的工作是[59],它采用基于cGANs的模型,利用跨年龄域的对抗训练提取年龄不变表征,同时实现两项任务。然而,它产生了只有微妙变化的过度平滑的人脸。与[59]不同,我们的框架具有以下优点:1)我们的特征分解是通过注意机制在特征maps上进行的;2)采用带梯度反转层的连续域自适应学习年龄不变的身份相关表征;3)身份条件模块可以实现identity-level人脸合成,提高合成人脸的年龄平滑度。

Face age synthesis (FAS).  现有的FAS方法大致可分为基于物理模型、基于原型和基于深度生成模型的方法。基于物理模型的方法[36,37,43]机械地模拟外观随时间的变化,但它们的计算成本很高,并且需要在很长时间内同一个人的大量配对图像。基于原型的方法[20,40]利用每个年龄段的人脸平均值来实现人脸的老化/年轻化,因此不能很好地保留身份。基于深度生成模型的方法[33,48]利用深度神经网络来完成这一任务。例如, recurrent face aging(RFA)[48]使用了一种回归神经网络来建模年龄进展/退化的中间过渡状态,通过这些过渡状态可以实现平滑的人脸衰老过程。受生成对抗网络(GANs)[12],特别是条件对抗网络(cGANs)[29]强大的生成高质量图像能力的启发,近年来许多研究[17,58,51,56]都利用生成对抗网络来提高合成人脸的视觉质量,并利用未配对的年龄数据训练模型。例如,[58]使用了一个条件对抗自动编码器(CAAE),通过遍历一个低维人脸manifold来实现年龄进展/退化。[51]引入感知损失来在人脸衰老/年轻化过程中保持身份。[56]设计了一个金字塔结构的鉴别器,以增强老化细节。

然而,这些方法主要是为了提高生成人脸的视觉质量,由于group-level人脸变换产生的伪影以及身份的意外变化,很难提高AIFR的性能。我们的方法在以下几个方面有所不同:1)所提出的MTLFace同时实现了AIFR和FAS,提高了AIFR中与身份相关的信息的视觉质量;2)提出的身份条件模块(ICM)实现了identity-level人脸年龄合成,不同于之前的group-level人脸年龄合成;3) ICM中的权重共享策略可以提高合成人脸的年龄平滑度。

 

3. Methodology

图2展示了提出的MTLFace的结构,其将在下面的章节中详细介绍。

(e处用id特征去计算Age regression和Age Classification前还要经过一个Gradient Reversal Layer,该梯度反转层在正向传播期间保持输入不变,并在反向传播期间通过将其乘以一个负标量来反转梯度。域分类时,若源域(身份)的标签是0,目标域(年龄)的标签是1,最大化域分类误差就是让域判别器分不清源域和目标域,如此这样源域和目标域在分布上就变得对齐了。又因为计算损失时是最小化损失,所以反向传播时乘以一个负标量。目标是将域自适应嵌入到学习表征的过程中,使最终的分类决策基于对域变化既具有鉴别性又不变性的特征,即在源和目标域中具有相同或非常相似的分布,使得得到的Identity Related Feature与年龄无关,但又能做身份识别) 

Gradient Reversal Layer代码为:

#coding:utf-8
import torch.nn as nn
from torch.autograd import Function
import torch


class GradientReverseFunction(Function):

    @staticmethod
    def forward(ctx: Any, input: torch.Tensor, coeff: Optional[float] = 1.) -> torch.Tensor:
        ctx.coeff = coeff #默认为1
        output = input * 1.0
        return output

    @staticmethod
    def backward(ctx: Any, grad_output: torch.Tensor) -> Tuple[torch.Tensor, Any]:
        return grad_output.neg() * ctx.coeff, None #所以反向传播其实就是给梯度加了个负号


class GradientReverseLayer(nn.Module):
    def __init__(self):
        super(GradientReverseLayer, self).__init__()

    def forward(self, *input):
        return GradientReverseFunction.apply(*input)
View Code

详情可见 Domain-adversarial training of neural networks - 1 - 论文学习

 

3.1. Attention-based Feature Decomposition

随着时间的推移,人脸发生了很大的变化,年龄变化通常会导致类内距离的增加,这是AIFR的关键问题。因此,由于混合的人脸表征与不相关的信息(如人脸形状和纹理变化)严重纠缠在一起,因此正确识别同一个人的两张具有很大的差距的人脸是有很大的挑战性的。最近,Wang等人设计了一个线性因子分解模块,将特征向量分解为两个不相关的分量[45]。正式来说,给定从输入图像中抽取的特征向量,其线性因子分解模块可定义为:

其中分别表示年龄相关和身份相关的分量。这种分解是通过残差映射来实现的。但存在以下缺陷:1)该分解是针对一维特征向量的,生成的身份相关分量缺乏人脸的空间信息,不适合FAS;2)这种分解是不受约束的,可能导致训练不稳定。

为了解决这些缺陷,我们建议通过一种注意力机制,即基于注意的特征分解(AFD),在高级语义空间分解混合特征maps。主要原因是在特征向量上的操作比在特征maps上的操作更复杂,因为像胡须、皱纹等衰老/年轻化的效果出现在语义特征空间,而在一维特征上却消失了。正式来说,我们使用类似ResNet的backbone作为encoder 去从输入图像中抽取混合特征maps ,即,AFD可以定义为:

其中表示element-wise乘法,σ表示一个注意力模块。这样,在年龄估计任务的监督下,注意模块可以将特征maps中的年龄相关信息分离出来,剩余部分作为身份相关信息,由人脸识别任务监督。结果表明,注意机制约束了分解模块,较好地检测出语义特征maps中的年龄相关特征。我们注意到被假定只包含由两个相应任务驱动的年龄和身份信息,其余的信息如背景信息对FAS也是重要的,这些信息通过从编码器到解码器的skip连接保存下来。图2(b)详细说明了提出的AFD。

在本文中,我们采用通道注意(CA)[15]和空间注意(SA)[54]的和平均值来突出通道和空间层次上的年龄相关信息。注意,这两个注意力的输出有不同的大小,我们先将它们每个拉伸到原始输入大小,然后求平均值。不同的注意力模块,如CA, SA和CBAM[54]也在第4节被测试。

 

3.2. Identity Conditional Module

主流的人脸衰老研究[24,27,51,56,58]通常将年龄分成几个不重叠的年龄组,因为随着时间的变化较小,年龄差距较小。这些方法通常使用one-hot编码来指定控制衰老/年轻化过程的目标年龄组[24,51,58],如图3(a)所示。因此,一个group-level的衰老/年龄化模式,例如人们在30岁时留胡子,由于使用了one-hot年龄条件,每个年龄组都可以了解到。其缺点有两方面:1)one-hot编码代表了年龄group-level衰老/年轻化模式,忽视了identity-level个性化模式,特别是对于不同的性别和种族;2)one-hot编码可能不能保证合成人脸的平滑性。

为了解决这些问题,我们提出了一个身份条件块(ICB)来实现identity-level老化/年轻化模式,并使用权重共享策略来提高合成人脸的年龄平滑性。该算法以AFD中的身份相关特征作为输入,学习identity-level的老化/年轻化模式。接下来,我们提出一种权值共享策略来提高合成人脸的年龄平滑度,从而在相邻年龄组之间共享一些卷积滤波器,如图3(b)所示。这个想法背后的原理是,随着时间的推移,人脸会逐渐改变,共享的滤波器可以学习相邻年龄组之间的一些共同的衰老/年轻化模式。注意,通过1 × 1的卷积从512维减少到128维,以减少计算成本。本文用超参数s来控制两个相邻年龄组共享多少个滤波器,其根据经验值设为1/8;也就是说,相邻的两个年龄组共享16个过滤器。我们将ICBs堆叠起来,形成一个身份条件模块(ICM)。

ICM代码为:

class TaskRouter(nn.Module):

    #sigma默认设置为0.1, unit_count默认设置为128,age_group默认为7
    #即共享滤波器数量默认为sigma*unit_count=12.8,向上取整为13
    def __init__(self, unit_count, age_group, sigma): 
        super(TaskRouter, self).__init__()

        #去掉(age_group - 1) * sigma * unit_count个共享的滤波器后
        #age_group个年龄组需要的滤波器数为conv_dim,即819
        conv_dim = int((age_group - (age_group - 1) * sigma) * unit_count) 

        self.register_buffer('_unit_mapping', torch.zeros((age_group, conv_dim)))
        # self._unit_mapping = torch.zeros((age_group, conv_dim))
        start = 0
        for i in range(age_group):
            #第i个age标记[start: start + unit_count]的128个位置为1,表示当输入的图age为i时,挑选的是标记为1的特征
            #又因为start间隔为115,所以相邻年龄之间共享13个过滤器
            self._unit_mapping[i, start: start + unit_count] = 1 
            start = int(start + (1 - sigma) * unit_count) #增加int((1-0.1)*128)=115
            # print('start is : ', start) #115,230,345,460,575,690,805

    def forward(self, inputs, task_ids): #task_ids为输入对应的年龄
        # print('inputs size is : ', inputs.shape) #torch.Size([batch_size, 819, 14, 14]) #输入为identity Related Feature
        #self._unit_mapping索引对象
        #第二个参数0表示按行索引,1表示按列索引
        #第三个参数为索引序号
        #相当于得到task_ids对应的mapping
        #task_ids大小为(batch_size, )
        mask = torch.index_select(self._unit_mapping, 0, task_ids.long()) \
            .unsqueeze(2).unsqueeze(3)
        # print("mask shape is : ", mask.shape) #mask shape is :  torch.Size([batch_size, 819, 1, 1]),这里的2是batch_size
        # print("inputs shape is : ", inputs.shape) #inputs shape is :  torch.Size([batch_size, 819, 14, 14])
        inputs = inputs * mask
        return inputs


class ResidualBlock(nn.Module):
    def __init__(self, unit_count, age_group, sigma):
        super(ResidualBlock, self).__init__()
        conv_dim = int((age_group - (age_group - 1) * sigma) * unit_count)
        self.conv1 = nn.Sequential(nn.Conv2d(conv_dim, conv_dim, 3, 1, 1), nn.BatchNorm2d(conv_dim))
        self.router1 = TaskRouter(unit_count, age_group, sigma)
        self.conv2 = nn.Sequential(nn.Conv2d(conv_dim, conv_dim, 3, 1, 1), nn.BatchNorm2d(conv_dim))
        self.router2 = TaskRouter(unit_count, age_group, sigma)
        self.relu1 = nn.PReLU(conv_dim)
        self.relu2 = nn.PReLU(conv_dim)

    def forward(self, inputs):
        x, task_ids = inputs[0], inputs[1]
        residual = x
        x = self.router1(self.conv1(x), task_ids)
        x = self.relu1(x)
        x = self.router2(self.conv2(x), task_ids)
        return {0: self.relu2(residual + x), 1: task_ids}
View Code

详情看源码

(这样得到的即是年龄不变的,能够进行人脸识别;但是它又能够训练得到identity-level age condition,进行衰老/年轻化的人脸合成)

 

3.3. Multi-task Learning Framework

本节介绍我们的MTLFace,包括AIFR和FAS。

Age-invariant face recognition (AIFR) task.  为了鼓励AFD去鲁棒地分解特征,我们使用年龄估计任务和一个人脸识别任务去监督特征分解。具体来说,通过一个年龄估计任务描绘年龄变化,同时编码了身份相关信息。我们使用一个带有两个 分别有512和101个神经元的 线性层的年龄估计网络A去得到类似deep expectation(DEX)[39]的年龄回归,通过计算一个softmax期望值去学习年龄分布。另一个线性层则添加在最后用于年龄分类,正则化学习到的分布。在这里,N是年龄组的数量。用于优化年龄估计的损失函数可定义为:

其中分别为ground truth年龄、ground truth年龄组、用于年龄回归的均方差(MSE)和用于年龄组分类的交叉熵(CE)损失。

接下来我们使用512个神经元的线性层 去抽取特征向量,然后使用CosFace损失去监督用于身份分类的的学习。我们还介绍了一个跨年龄域对抗学习,通过一个带有梯度反转层(GRL)[8]的连续域自适应[46]去鼓励为年龄不变的(即某个人不同年龄的照片得到的是相同的)。AIFR最终的损失为:

其中,第一项是CosFace损失,第二项是年龄估计损失,最后一项是域适应损失,yid是身份标签,λ控制不同损失项的平衡。请注意,第二个和第三个项使用相同的网络结构,但有不同的输入,并且是独立训练的。为了简单起见,我们忽略了激活函数和batchNorm,除了AFD之外,我们的人脸识别模型严格按照[6]中的设置设计。

Face age synthesis (FAS) task. 图2(f)展示了本文方法的FAS过程。详细来说,identity-level age condition源于具有区分度的人脸表征,使用由一系列的身份条件块(ICBs)组成的身份条件模块得到 。然后,解码器D根据从编码器E中提取的多级高分辨率特征(multi-level high-resolution features),在学习到的identity-level age condition的控制下,重建老化/年轻化的人脸。形式上,将输入人脸渲染给目标年龄为t的的过程可以写成:

其中表示从编码器的不同层抽取的不同级的高分辨率特征的索引。

为了提高生成人脸的视觉质量,使用GANs框架对FAS任务进行训练。在本文中,我们采用[18]的PatchDiscriminator作为我们的discriminator 来强调生成图像和真实图像的local-patch。为了提高生成图像的质量和稳定训练过程,利用least-squares GANs[28]对GANs框架进行优化,具体公式如下:

(即使用生成的和表示target label的,即目标输入对应的年龄条件串联后输入判别器,得到的结果来计算损失) 

其中是使用在传统cGANs框架中用于对齐年龄条件的one-hot编码,表示沿通道维度的矩阵串联。为了保存输入人脸的身份且改善年龄准确度,我们利用编码器和AFD去监督FAS任务。最后,如图2所示,我们可以实现人脸整体的端到端的衰老和年轻化。这个过程可以表述为:

(就是使用生成的图输入到编码器中得到生成的图的,然后使用进行Age Estimation后的年龄和生成图对应的target age t计算age loss,使用生成图的身份与其原始身份计算身份损失) 

 

用于优化FAS任务的最终的损失为:

其中控制FAS任务中不同损失项的重要性。

在least-squares GANs中用于优化判别器的损失函数为:

(使用原图和对应的表示source_label,即原图年龄的串联后输入判别器得到,用来计算第一项损失值;然后使用生成的和表示target label的,即目标输入对应的年龄条件串联后输入判别器,得到的结果来计算后一项损失。目的是让判别器能够正确判定原图和生成图的年龄)

在测试阶段,与现有FAS方法的唯一区别是我们的方法需要指定相应的滤波器组。因此,我们的方法具有与[14]类似的优点,只需对输入人脸进行一次编码,而不是以往方法[24,27,51,56,58]的N次编码(其中N为年龄组的数量),能显著降低计算成本。

Optimization and inference. 在我们的MTLFace中,AIFR学习判别人脸表征和年龄估计,而FAS产生视觉结果,提高了AIFR模型的可解释性。因此,以GAN-like的方式优化这两个任务,可以共同完成这两个任务;它们相互影响,相互促进。换句话说,AIFR鼓励FAS渲染人脸以保留其身份,而FAS可以促进身份相关特征的提取,并提高AIFR模型的可解释性。因此,我们在一个统一的、多任务的、端到端框架中交替训练这两个任务。

 

4. Experiments

4.1. Implementation Details

Data collection. 目前对AIFR的研究缺乏一个包含数百万张年龄差距较大的人脸图像的大规模人脸数据集。为了促进AIFR和FAS的发展,我们创建并发布了一个新的跨年龄名人的170万张脸数据集(LCAF)。具体来说,我们首先使用public Azure Facial API[2]来从[6]提供的干净MS-Celeb-1M数据集中估算人脸的年龄和性别。然后,我们从总共5M张人脸中随机选取人脸,检查人脸是否标注正确,如果有明显的错误,我们会尽量手动纠正;我们主要关注20岁以下的年轻人,他们经常被API[2]错误标记。最后,通过平衡年龄和性别,构建了一个大规模的平衡的年龄数据集。为了进行公平比较,我们进一步构建了跨年龄人脸数据集(SCAF)的子集,其中包含来自12K个个体[45,49]的约50万张图像。我们注意到,训练(LCAF)和测试数据可能很少,甚至没有身份重叠,因为[6]已经通过检查训练和测试数据之间的人脸相似性,从clean MS-Celeb-1M数据集中删除了500多个身份。参考主流文献[14,23,24,27,56],每个年龄组的时间跨度为10年,本文将年龄分为7个无重叠组;例如10-, 11-20, 21-30, 31-40, 41-50, 51-60, and 61+。请注意,在7组中执行FAS比之前的研究中在4组中执行FAS更具挑战性。图4给出了SCAF的示例图像和数据集统计。

Training details. 我们采用类似于[6]的ResNet-50作为编码器。在解码器中,对身份年龄条件进行双线性采样,并使用两个残差块[13]从中提取的多级高分辨率特征进行处理,每一个都经过instance normalization[44]和ReLU激活。合成的人脸尺寸为112 × 112,由1 × 1卷积层生成。ICM有四个ICBs。在鉴别器中,6个卷积层的步数为2,2,2,2,1,1,除最后一个卷积层外都遵循spectral normalization[30]和leaky ReLU激活,输出7 × 7置信度map。用SGD优化AIFR,初始学习率为0.1,momentum为0.9;用Adam训练ICM、解码器,学习率固定为10−4,β1为0.9,β2为0.99。我们在8个NVIDIA GTX 2080Ti gpu上训练了批处理大小为512的所有模型,LCAF迭代次数为110K, SCAF迭代次数为36K。AIFR的学习率先从0线性增高到0.1,然后在LCAF的5K、70K和90K迭代数 以及 SCAF的1K、20K和23K迭代数上, 学习率都降低了0.1倍。损失函数中的超参数根据经验设置为:为0.001,为0.002,为75,为0.002,为10。CosFace[47]的乘数margin和缩放因子分别设置为0.35和64。所有图像都对齐为112x112,带有MTCNN[57]检测的5个面部landmarks,然后线性归一化到[-1,1]

 

4.2. Evaluation on AIFR

接下来,我们在多个跨年龄基准数据集(包括CACD-VS[4]、CALFW[61]、AgeDB[31]和FG-NET[1])上评估MTLFace,并与最先进的方法进行比较。请注意,由于[45,49,59]中的版本仅供商业使用,因此不包括MORPH。

 Result on AgeDB.  AgeDB[31]包含手工标注年龄标签的568个不同受试者的16488张人脸图像。提出了四种人脸pair不同年龄差异下的年龄不变人脸验证协议;即5年、10年、20年和30年。与LFW[16]类似,对于每个协议,该数据集被分割为10个fold,每个fold包含300个类内对和300个类间对。我们严格遵循30年的协议来进行10-fold交叉验证,因为30年的协议是最具挑战性的。我们使用SCAF训练的模型来评估其在AgeDB上的表现,以便进行公平比较。表1a显示了与其他最先进的AIFR方法相比,我们的模型的验证准确度,显示了本文方法的优越性能。

 

Result on CALFW. Cross-age labeled faces in the wild (CALFW)数据集[61]设计用于年龄差异较大的无约束人脸验证,其中包含了使用LFW中相同身份收集的4,025个个体的12,176张人脸图像。类似地,我们遵循与LFW相同的协议,其中每个fold包含600对正和负对。我们在LCAF上训练模型,在这个数据集上评估我们的方法,结果如表1b所示。特别是,我们的方法与最新最先进的AIFR方法相比有很大的优势,在CALFW上建立了一个新的最先进的方法。

Result on CACD-VS.  作为AIFR的公共年龄数据集,跨年龄名人数据集(cross-age celebrity dataset, CACD)包含了2000名自然环境下名人的163446张人脸图像,在年龄、光照、姿势等方面存在显著差异。自被搜索引擎收集以来,CACD一直存在着错误标记和重复图像的噪声。因此,为了进行公平比较,我们构造了一个仔细标注后的CACD版本,即CACD verification sub-set(CACD-VS),它也遵循LFW的协议。表1c给出了该方法与其他最先进技术在CACD-VS[4]上的比较。我们的MTL-Face大大超过了其他最先进的技术,在最新的技术上得到了0.15的改进。

 

Result on FG-NET. FG-NET[1]是AIFR最受欢迎和最具挑战性的年龄数据集,它包括从自然环境收集的82名受试者的1002张人脸图像,这些受试者的年龄有很大的变化,从儿童到老人。我们严格遵循[45,49]中的评估pipeline。具体来说,该模型在SCAF上进行训练,并在leave-one-out和Megaface challenge 1 (MF1)协议下进行测试。在leave-one-out协议中,一张人脸被用来匹配其他的脸,重复1002次。rank-1识别率如表1d所示。我们的方法大大优于以前的工作。另一方面,MF1包含来自690K不同的个体的额外的1M张图像,作为gallery集的干扰,其中模型在large和small训练集协议下进行评估。small协议要求训练集小于0.5M张图像。在FG-NET上严格遵循small协议来评估我们训练好的模型,实验结果报告在表1e中。由于MF1中的干扰包含大量错误标记的probe和gallery人脸图像,我们的方法获得了与其他方法相比更有竞争力的性能。

Ablation study.  为了研究不同模块在MTLFace中的有效性,我们基于AIFR的四个基准数据集进行了消融研究,考虑了我们方法的以下变体:1)Baseline:我们去除所有额外的组件,只用CosFace损失来训练人脸识别模型。2) +Age:该变体在CosFace和年龄估算损失的共同监督下训练,类似于[45,60]。3) +AFD (CA)、+AFD (SA)、+AFD (CBAM)、+AFD:这4个变体通过不同的注意模块(CA[15]、SA[54]、CBAM[54]和新提出的注意模块),利用基于注意的特征分解方法,突出了不同层次的年龄相关信息。4)Ours:我们提出的MTLFace是由AFD和跨年龄域自适应损失同时训练的。实验结果见表1f。我们注意到AgeDB-30的Baseline模型的验证准确率高于ArcFace和DAAE,因为训练数据(即SCAF)是年龄平衡的,这是我们收集数据集的一个重要特征。即使在人脸识别模型中执行年龄估计任务,与Baseline模型相比,它也不能得到AIFR的任何改进。另一方面,AFD在所有跨年龄数据集上实现了显著的性能改进。然而,由于AFD同时强调了通道和空间层面的年龄相关信息,相比于single level(CA和SA)或sequential level(CBAM),我们的方法实现了一致的性能改进,显示了其有效性。此外,使用跨年龄域的对抗训练导致额外的性能改进。

 

4.3. Evaluation on GFR

为了验证我们的MTLFace对一般人脸识别(GFR)的泛化能力,我们进一步在LFW[16]和Megaface Challenge 1 Facescrub (MF1-Facescrub)[19]数据集上进行了实验。LFW[16]是最受欢迎的GFR公共基准数据集,它包含来自5749名受试者的13233张人脸图像。MF1-Facescrub[19]使用来自530名名人的106,863张人脸图像的Facescrub数据集[32]作为probe集。MF1最具挑战性的问题是,它在gallery库中额外使用了1百万张人脸图像来分散人脸匹配的注意力。也就是说,由于MF1中的噪声干扰极大,MF1的结果不如LFW可靠。我们严格遵循与[45,49]相同的过程,其中训练数据集包含0.5M张图像(SCAF)。表1g报告了LFW上的验证率和MF1-Facescrub中针对最先进的GFR方法的rank-1识别率。我们的方法在两个数据集上都取得了较好的性能,证明了我们的MTLFace具有很强的泛化能力。我们强调,我们提出的MTLFace可以提供逼真的合成人脸来提高模型的可解释性,这是其他方法所没有的[45,49]。

 

4.4. Evaluation on FAS

我们进一步评估了在SCAF上训练的FAS模型。图5给出了LCAF、MORPH、FG-NET等外部数据集上的一些样本结果。该方法能够较好地模拟不同年龄组的人脸年龄合成过程,具有较高的视觉保真度。尽管存在种族、性别、表情和遮挡方面的差异,合成的人脸仍然像照片一样真实,在皮肤、肌肉和皱纹上有自然的细节,同时始终保持身份,确认了所提方法的泛化能力。

 

我们与先前的研究,包括CAAE[58]和AIM[59],在MORPH和FGNET上进行了定性比较。从图6可以看出,CAAE和AIM由于图像重建都会产生过于光滑的人脸,而我们的MTLFace则是利用身份年龄条件,基于编码器提取的多层次特征来合成人脸。需要注意的是,竞争对手的结果是直接从他们自己的论文中引用的,这是一种公平的比较,在FAS文献[14,23,24,27,56]中被广泛采用,以避免任何由于自我实现而导致的偏差或错误。年龄准确性和身份保留两项评价标准与CAAE[58]、IPCGAN[51]的定量比较以及身份条件模块的消融研究可见附录。

 

5. Conclusion

在本文中,我们提出了一个多任务学习框架,称为MTLFace,以同时实现AIFR和FAS。我们提出了两个新的模块:将特征分解为与年龄和身份相关的特征的AFD 以及 实现identity-level的人脸年龄合成的ICM。在跨年龄和通用基准数据集上的大量实验证明了本文方法的优越性。

 

posted @ 2021-04-20 18:24  慢行厚积  阅读(4919)  评论(2编辑  收藏  举报