张子康,殷松峰,曹良才,刘 成
(1.安徽建筑大学 电子与信息工程学院,安徽 合肥 230601;2.清华大学 合肥公共安全研究院,安徽 合肥 230601;3.清华大学 精密仪器系 精密测试技术及仪器国家重点实验室,北京 100084)
得益于近些年来深度学习技术的快速发展和各种大规模训练数据的公开[1-3],人脸识别[4-5]技术取得了令人瞩目的成果。然而,在长期失踪儿童寻找、犯罪嫌疑人监控等领域,跨年龄人脸识别(age-invariant face recognition,AIFR)所面临的人脸变异大、识别精度不足、光学图像质量不佳等突出问题,成为当前人脸识别研究的重要挑战。
目前,跨年龄人脸识别的策略可大致分为基于生成模型和鉴别模型两种类别。生成模型的核心思想是对年龄变化进行建模,如使用基于生成对抗网络[6-7]的模型,利用原始人脸图像生成特定年龄组的高质量图像,以实现跨年龄人脸识别。生成模型往往存在计算量大、模型不稳定等缺点。相比之下,越来越多的研究关注于鉴别模型的改进,利用隐藏因子分析方法可以从混合人脸特征中去除年龄因子,提取具有鲁棒性的身份特征[8]。采用去相关性对抗学习算法(decorrelated adversarial learning,DAL)能够建立成对特征的相关性,以对抗的方式降低成对特征之间的潜在联系[9]。采用多任务学习框架(multi-task learning framework,MTLF),基于注意机制可以在高级语义空间中分离年龄特征,保留更多的身份信息[10]。上述研究假定年龄特征和身份特征,可以使用线性分离方式完美解耦,没有充分考虑由于年龄特征和身份特征共有而难以分割的信息,从而制约了跨年龄识别准确率的进一步提升。
本文提出一种新的深度特征解耦-耦合学习框架,用于跨年龄人脸识别任务,引进共享特征(identityage sharing features,ISF)来补充身份特征。通过对混合人脸特征的解耦和对身份相关特征的耦合,获取完整的身份特征,进一步提高跨年龄人脸识别的准确率。
解决跨年龄人脸识别问题的核心在于提取到不受年龄信息干扰的身份特征。本文提出的跨年龄人脸识别模型框架如图1 所示,主要分为3 个模块:混合人脸特征提取模块、特征解耦模块、特征耦合模块。首先对输入的人脸图像进行面部表征提取,得到混合特征;然后使用特征解耦模块将混合特征解耦为纯年龄相关特征、纯身份相关特征、以及共享特征;利用特征耦合模块,将对人脸识别有用的纯身份相关特征和共享特征在多个维度上进行耦合,得到完整的身份特征;最后通过多任务训练策略进一步对模型监督优化。
图1 年龄不变人脸识别模型框架Fig.1 Model framework of age-invariant face recognition
本文混合人脸特征提取模块采用基于Transformer架构的CvT[11]模型。CvT 模型通过将卷积处理引入到Transformer 的操作,使其具备了卷积神经网络(convolutional neural networks,CNN)与Transformer这两类网络架构的优点。相比于纯粹的CNN 或者Transformer 架构,CvT 模型在提取特征信息方面性能更强,并且参数更少。本文对基于Transformer架构的 CvT 模型进行改进,移除最后的特征压缩阶段,输出大小为7×7 像素的特征图,以保留更多的图像信息,避免图像压缩时某些特征消失,造成人脸识别信息缺失。
以往的研究采用线性分离方式对身份特征和年龄特征进行解耦,忽略了线性分离破坏共享特征的可能,造成某些特征缺失。为了更好地去除面部信息中冗余的年龄信息,本文提出一种新的人脸特征解耦-耦合框架,如图2 所示。
图2 深度特征解耦-耦合学习框架Fig.2 Deep feature decoupling-coupled learning framework
初始的混合人脸特征图Xcrude∈RC×H×W,是由混合特征提取模块T从输入的图像I中提取(Xcrude=T(I)),定义的人脸特征组成如下:
式中:Xpure_id和Xpure_age分别表示纯身份特征和纯年龄特征;Xshared代表年龄和身份共享的特征。更详细地说,本文设计了一个类似文献[12]中的多头自注意卷积模块来捕捉共享特征,称为共享特征提取模块(shared feature extraction module,SFE),其结构如图3 所示。将其残差部分视为可分离的身份和年龄特征,表示如下:
图3 SFE 结构示意图Fig.3 Structure diagram of SFE
接下来,利用注意力机制[9]对可分离的混合特征进一步解耦:
式中:ρ表示注意模块;°代表元素级乘法。
纯身份特征和共享特征都含有身份相关信息,为了保证身份信息的完整性,在多个维度对这两种特征进行重组,得到一个完整的身份特征向量,用于最终的身份识别任务。本文设计了两种身份特征增强函数φ 和 γ,对应不同维度上的共享特征,旨在增强共享特征身份信息的表达,抑制不同维度下共享特征中的年龄信息表达。依据不同的作用,本文将这两个函数分别称为初始身份增强模块(initial identity augmentation modules,IIA)和压缩身份增强模块(compressed identity augmentation modules,CIA),表示如下:
式中:φ表示共享特征图部分的身份增强;γ表示共享特征向量部分的身份增强。在最后的特征向量重组阶段,本文在Xinitial_id上附加一层降维线性层C,用于身份分量监督及其后的向量重组。对于所得到的两个身份相关向量之间的重组,引入映射函数 ω,称之为向量重组模块(vector reorganisation module,VRM)[13],定义如下:
VRM 的结构如图4 所示。在最后的测试阶段,提取完整的身份特征向量Eid用于身份识别。
图4 VRM 结构示意图Fig.4 Structure diagram of VRM
本文引入多任务训练策略对人脸身份特征进行监督学习,加以优化。如图1 所示,监督模块存在3 种基本类型:年龄鉴别器、身份鉴别器和去相关任务鉴别器。
对于年龄特征的学习,引入两个年龄鉴别器,用于共享特征和年龄特征的监督学习。严格遵循相关文献[10,14-15]中对年龄成分的做法,根据不同的年龄间隔将年龄分为8 个年龄组,在获得的年龄特征上附加一个降维线性层F∈R1024×8,最后使用具有交叉熵损失的softmax 层进行年龄分类。年龄分类任务的损失函数定义为
式中:gage为真实的年龄分类组标签;ℓce为交叉熵损失。
对于身份信息的学习,引入4 个身份鉴别器,对解耦-耦合过程中的身份分量特征进行监督学习,以确保身份信息的正确性和完整性。除了最终用于身份识别的身份特征是由ArcFace[16]损失监督(s=64,m=0.3),其他的身份特征分量都是由CosFace[17]损失(s=64,m=0.35)监督学习的。身份识别的损失函数定义如下:
式中:Xshared表示共享特征图;Xinitial_id表示重组的特征图;yid表示身份标签;C表示使用降维线性层提取特征向量。
为了鼓励年龄和身份两种特征的解耦,本文对纯粹身份特征和纯粹的年龄特征之间进行相关性分析[9,15,18],以对抗的方式降低两种特征之间的潜在联系性。在相关性降低的对抗性学习中,去相关任务鉴别器即为年龄和身份之间的最大相关性:
综上所述,在多任务学习训练框架下AIFR 最终损失的公式定义为
式中:λ1、λ2、λ3、λ4、λ5和 λ6是平衡这些损失的标量超参数,其大小依次设置为0.1、0.1、0.3、0.3、0.1、0.1。
本文用到的数据集如表1 所示。选择MS1MV2[3]作为训练数据集,它是经过清洗后的MS-Celeb-1M数据集,包含约580 万张图像以及85 742 个不同的身份。测试集包括AgeDB-30[19]、CACD-VS[20]、CALFW[21]、LFW[22],测试集实例如图5 所示。
表1 本文所采用的数据集Table 1 Adopted data sets
图5 测试实例Fig.5 Examples of test
网络架构包含:1) 主干网络 使用CvT-24 网络模型,输出的特征图数量为1 024,大小是7×7 像素;2) 共享特征提取模块(SFE)通过“多头自注意+卷积”从初始混合人脸特征中提取出共享特征,并将残差部分视为可分离的年龄特征和身份特征;3) 年龄鉴别器 对年龄特征堆叠2 层“FC+ReLU6”,进行年龄分类;4) 身份鉴别器 只有最后一个完整的身份特征向量使用ArcFace 损失监督,其余的使用CosFace 损失进行监督学习;5) 初始身份增强模块(IIA)增强共享特征图阶段的身份信息,这个模块类似于文献[23]的Inception 结构;6) 压缩身份增强模块(CIA)对共享特征向量进行身份特征增强,对压缩后的共享特征通过1 层“FC+Mish[24]+Batchnorm”映射为增强的身份特征向量;7) 向量重组模块(VRM)2 个向量通过2 层“FC+Mish”进行重组,重组后的向量认为是完整的身份向量;8) 去相关性任务鉴别器 将可分离的年龄特征和身份特征分别输入到FC 层,得到它们各自的特征向量,然后进行去相关对抗处理。训练细节:首先将年龄分为8 个不重叠的年龄组0~12、13~18、19~25、26~35、36~45、46~55、56~65 岁和66+,然后根据分组年龄标签进行年龄估计任务;训练模型时,设置batch size 大小为64,训练迭代次数为35 轮;使用随机梯度下降法对网络模型进行优化,初始学习率设定为 0.003,在迭代次数为 5、10、15、20、25 时,学习率分别降为上一次的 0.2 倍;设置momentum 大小为0.9;使用1 块GPU(NVIDIA V100)进行加速训练。测试环境:Python3,pytorch 1.5.1,显卡为 NVIDIA V100,CUDA 版本为 11.4。
本文使用MS1MV2 数据集进行模型训练,并在3 个公开的人脸老化数据集 AgeDB-30、CACDVS、CALFW 和一个基准数据集LFW 上进行模型测试,结果如表2 所示。可以看出,本文提出的方法超过了之前关于AIFR 研究的结果,识别准确率比最先进的MTLFace 方法在AgeDB-30 数据集上高了0.84%,在CACD-VS 数据集上高了0.03%,在CALFW 数据集上高了0.11%。本文提出的方法在LFW 数据集上取得了99.73%的结果,证明了该方法具有很强的泛化性。不同的数据集上存在结果差异,是因为不同的跨年龄人脸测试集图片来源不同,AgeDB-30 的图像采集自实际场景下的人脸,CACD-VS 是来自2 000 位名人的照片,CALFW 是基于LFW 的跨年龄数据集。光照、遮挡、姿势等因素也会对人脸识别造成干扰。
表2 不同的方法在4 个数据集上的准确率Table 2 Accuracy of different methods on four data sets Acc/%
为进一步分析身份-年龄共享特征对跨年龄人脸识别任务的影响,在3 个人脸老化数据集上进行了消融实验。1) Baseline:直接采用CvT 网络提取身份特征向量进行身份识别。2) Baseline+Age:在1) 的基础上,增加年龄估计任务,并通过联合监督年龄和身份来训练模型。3) 本文提出的ISF:使用ISF 方法对3 个人脸验证集进行评估。表3 显示了消融实验测试的结果,在这3 个数据集上性能的提升验证了本文方法的有效性。
表3 消融实验Table 3 Ablation test Acc/%
本文在DAL 和MTLFace 人脸识别的结构上,引入共享特征来避免AIFR 特征分解缺陷的方法。该方法解决了使用线性分离方式解耦特征的局限,对于无法分割的特征也进行了相应的处理,提高了身份特征的完整度。提出的多鉴别器监督学习策略可以规范特征的耦合,加快模型的收敛速度。在多个数据集上的实验结果证明该方法能够显著提升跨年龄人脸识别的准确率。本文方法可以改善使用线性分离方式解耦特征的局限,扩展应用到姿态不变性、遮挡、表情等其他特征分解实例,解决类似的解耦不充分问题。