APP下载

面向低质量数据的3D 人脸识别

2021-01-22勋,周

电子科技大学学报 2021年1期
关键词:低质量特征向量人脸

龚 勋,周 炀

(西南交通大学信息科学与技术学院 成都 611756)

人脸作为人类的内在属性,具有唯一性和确定性,因此人脸识别被视为一种非侵入性的生物特征[1]正迅速成为身份识别和监控领域的主要工具之一。得益于互联网搜索技术的进步,2D 人脸数据集可以方便地通过网络搜索技术获取,因此数据规模通常是百万级的。在海量数据的支持下,基于卷积神经网络(convolutional neural networks, CNN)的人脸识别算法在2D 人脸识别上发挥了巨大的潜力。如FaceNet[2]使用200 万人脸数据来训练CNN,在LFW[3]测试基准上达到99.63%的准确率,超过了人类的水平。由于2D 人脸数据规模足够大,当前的2D 人脸识别的研究[2,4-7]主要集中在设计更合理的损失函数,让不同身份间的人脸特征更加分离,相同身份间的人脸特征聚集更紧凑。尽管性能得到了较大提升,但2D 人脸仅包含图像的纹理信息,仍不可避免地受到光照、姿态、表情等因素的干扰[8]。

3D 人脸除了包含基本的纹理信息,也包含人脸的深度信息,本质上可以不受光照变化的约束,能够克服2D 人脸识别的不足。因此,关于3D 人脸的识别越来越受到研究者的重视[9-13]。3D 人脸的数据采集不能像2D 人脸数据[14-16]一样通过网络搜索收集,只能通过特定的三维相机获取,经济及时间代价高,导致3D 数据量非常有限。当前主要的高质量3D 数据集ND-2006[17]只包含888 个人的13 450 个模型,Bosphorus[18]只包含105 个人的4 666个模型。这与2D 人脸数据集中的MS-Celeb-1M[19]10 万个人的1 000 万张人脸图片,Casia-WebFace[20]1 万个人的47 万张人脸图片相差甚远。由于数据规模小且质量较高,高质量3D 人脸识别难度相对低质量人脸数据较低,3D 高质量人脸识别方法[21]在多个测试标准上如FRGCv2[22]、Bosphorus[18]和BU-3DFE[23]上已经接近满分。但是,高质量3D 人脸数据采集时间成本高、采集流程复杂、设备昂贵且需要对象配合,一定程度上限制了3D 人脸识别技术的发展。

相对于高精度扫描仪,低精度设备(如Microsoft Kinect,Intel RealSense 等)价格低廉、使用方便,具备更广阔的应用场景。与高质量3D 人脸相比,低质量人脸图像表面有大量的毛刺、孔洞,识别难度更高,通常这类数据更多使用在姿态估计[24]和行为识别[25]等领域。虽在人脸识别[11,16-18,26]上也存在一些尝试,但所涉及的数据规模有限,实用性不足。在大规模低质量3D 人脸数据集Lock3dFace[27]上当前最高的识别准确率Led3D[28]只有54.28%。

基于以上分析,研究基于消费级相机采集的低质量3D 人脸数据应用价值强,是3D 人脸识别未来的发展趋势。针对这类数据,本文提出了SAD和IR Loss 两种新方法,基于低质量的3D 人脸的几何信息实现3D 人脸识别。SAD 和IR Loss 可以作为两个独立的模块嵌入到CNN 网络训练过程中。在推理阶段,这两个模块都不会参与运算,不会影响网络的运行效率。与当前Lock3DFace[27]数据集准确率最高的测试模型Led3D 相比,在不清理任何测试数据的情况下,本文方法准确率达54.83%,而在遮挡和姿态子集,本文方法的准确率分别有17.46%和7.54%的提升。

1 相关工作

本节从高质量和低质量两方面简要介绍3D 人脸识别方法、人脸识别损失函数及CNN 中的Dropout 方案的相关工作。

1) 高质量3D 人脸识别。近年来,随着传感器技术的进步和高质量3D 人脸模型数据库的推广,3D 人脸识别技术得到了较大的发展。与2D 人脸识别领域相比,基于3D 人脸的深度学习方法的探索并不广泛,这主要是因为缺乏大规模公共3D 数据库。基于深度学习的人脸识别技术对数据规模极度依赖,因此需要对人脸数据进行增强。文献[10]整合现有基准,通过生成表达式和姿势以及随机裁剪增加样本,生成10 K 增强深度人脸,使用这些数据在2D 人脸预训练模型VGG-Face[29]网络上微调,在Bosphorus[18]测试基准上取得当时最高的精度98.1%。文献[21]通过添加私有数据集和合成虚拟ID 进一步增强数据,并从零开始训练深度模型,在多个3D 人脸测试标准[17-18]上都较高。高质量深度人脸因为缺乏大规模的统一测试数据集,测试结果基本接近满分。

2) 低质量3D 人脸识别。对于低质量数据的3D人脸识别,研究比较有限。最先采用传统的特征提取方式,如ICP、PCA、LBP 和HOG,并出现一些 效 果 较 好 的 方 法[9,11,13,30]。但 这 些 方 法 使 用 的 数据库在主题或图像数量方面很小,所涉及的变化和数量也很少。文献[31]使用孪生神经网络进行RGB和深度图像的训练,用于面部验证任务。文献[32]在文献[11]的基础上,采用了一种称为基于学习的重建方法,使用自动编码器从RGB 和深度图像中获取映射函数,并使用映射函数中重构的图像进行识别。文献[33]使用交叉质量数据验证,低质量3D 人脸识别难度更大。文献[32]使用深度学习技术解决了特征融合问题,将RGB 和深度两种模式提供的共同和互补信息有效融合。这些方法除了使用几何信息,还使用了RGB 信息,但并不能完全克服2D 人脸识别中光照、姿态等造成的影响,而本文只使用了几何信息。

3) 人脸识别中的损失函数。损失函数是深度学习的关键部分,是人脸识别方向的研究热点,在大规模数据上充分提取到训练数据的信息至关重要。人脸识别中的损失函数的主要目的是增大不同身份人脸特征向量的类间距离以及缩小相同身份人脸特征向量的类内距离,使用这一思路惩罚网络,使相同身份人脸的特征向量聚集在一起。早期的损失函数主要是基于欧式距离的损失,如triplet loss[2],它主要构建不同的正负样本对,利用欧氏距离来度量特征之间的相似性。后来在这些方法的基础上衍生出center loss[34]和range loss[35],通过最小化类与类中心之间的欧式距离来训练整个模型。但是基于欧式空间的约束不足以实现最优泛化,所以在之后的工作中,研究者改进Softmax 损失函数来增大人脸特征向量类间距离的同时减小类内距离,如LSoftmax[36],Am-Softmax[37]。在最近的研究中增加margin 的人脸识别损失能够增加模型学习的难度,所以将角度约束集成到Softmax 损失函数中,SphereFace[4]、CosFace[5]、ArcFace[6]都应用了这种思想。本文方法首次将2D 人脸识别中的聚类中心的思想运用到3D 人脸识别,并根据低质量3D 数据存在噪声信息的特点,提出新的类间正则化损失函数。与ArcFace[6]相比,本文方法除使用margin来降低人脸特征向量与类中心的相似度外,还对不同类别的类中心进行显示约束,让欧氏距离最近的不同类别的类中心相似度变低,避免了类中心相似度越高,不同身份人脸相似度越高的问题。

4) Dropout[38]是一种用于缓解神经网络过拟合的正则化技术。具体来说,在训练阶段,对神经网络全连接层的每个隐藏节点随机置零,丢弃部分信息。这样网络在学习的过程中鲁棒性更高,达到良好的正则化效果。与全连接层不同的是,Dropout不能在卷积特征图上使用,因为空间相邻像素在卷积特征图上具有很强的相关性,它们共享冗余的上下文信息。因此,传统的基于像素的Dropout 不能完全抛弃卷积特征图信息。为了在卷积层上应用Dropout,文献[39]提出了MaxDrop,即在特征图上通过通道或空间的方式去除最大激活的像素,这种方法能删除强激活的神经元,但也存在一定的局限性,因为卷积操作会共享周围的神经元信息,从而降低丢弃后的效果。文献[40]提出了Spatial Dropout,即随机丢弃特征图的部分通道,而不是丢弃每个像素。这种基于通道的丢失,可以解决像素丢失的问题。本文方法与Spatial Dropout 的不同之处在于,本文只去除强激活区域,而不是整个通道区域。并且本文的方法只在最后一层的卷积层使用,不存在被共享特征的上下文信息。

2 人脸点云处理

3D 人脸主要是由空间中一系列的点组成,将所有的点按照x,y,z坐标放置在对应的坐标系下得到的一个点集合。由于构成人脸点云数据规模较大,为了易于数据对齐并充分利用点云的几何及拓扑信息,本文首先对3D 点云数据进行预处理,然后生成深度几何图像用于后续识别。本节主要描述点云数据的处理过程,包括鼻尖校准、人脸标准化、数据增强和几何人脸表示。数据处理流程如图1 所示。

图1 人脸点云数据处理流程

2.1 鼻尖校准

鼻尖通常被作为3D 人脸的原点,鼻尖位置深度值不准确会干扰三维人脸的表示。虽然现有数据集(如Lock3DFace[27])提供了鼻尖位置的x和y轴坐标,但在低质量3D 人脸上存在大量的毛刺和孔洞,通常会导致位置不准确。本文以给定的xy轴坐标为中心,周围选择10×10 的网格,以其中值作为鼻尖位置的深度值,如图1a 所示。需要注意的是,对于原始数据集中未提供鼻尖位置的少量样本,本文使用手动标注的方式设定鼻尖位置。

2.2 人脸标准化

在3D 人脸数据集中,除包含人脸信息外还包含大量的背景信息。在确定鼻尖位置之后,本文首先以2D 深度图的鼻尖xy轴坐标为中心,在原始2D 深度图上裁剪出160×160 像素的区域作为人脸区域,然后把裁剪后的人脸区域映射到3D 坐标系中,得到3D 的人脸区域,整体移动人脸,将鼻尖移动到坐标(0, 0, 100)。最后把3D 人脸中深度值大于400 的点视为背景去掉,得到标准化的三维人脸,如图1b 所示。

2.3 数据增强

由于训练数据有限,本文需要对现有的数据进行扩充,数据增强通过旋转三维坐标轴实现。将原始3D 人脸点云图绕y轴从-75°旋转到75°,每间隔15°保存3D 人脸,绕x轴从-30°旋转到30°每间隔15°保存3D 人脸,每张深度图共生成14 张额外人脸,如图1c 所示。

2.4 深度人脸表示

本文使用归一化曲面法向量作为最终的人脸表示,计算过程使用文献[41]中的方法,将人脸的x,y,z轴法线贴图图像(normal map image, NMI)NMIx、NMIy、NMIz的结果作为人脸的3 个通道堆叠,如图1d 所示。需要注意的是,本文没有对3D 人脸的姿态进行校正,这主要是因为在大姿态时,校正后的正面人脸信息丢失严重,无法满足识别要求。为了追求处理效率,本文方法仅使用了最原始的深度信息,不做任何的滤波和填充处理。

3 3D 人脸特征提取

低质量3D 人脸表面具有大量的孔洞和毛刺,给识别造成一定的难度,这主要是因为CNN 在学习的过程中会把部分噪声当作人脸特征,导致识别效果较差。为了解决这一问题,本文提出了基于空间注意力机制的Dropout 方案,在高层语义特征上进行随机遮挡,避免网络只把噪声信息当作人脸特征。同时,为了避免遮挡后不同身份间的人脸特征相似度过高,本文提出了一个新的类间正则化损失函数,以增加不同身份人脸特征聚类中心之间的相似度。

3.1 基于空间注意力的Dropout

图2 本文方法整体流程图

本文使用Grad-Cam[42]可视化了原始ResNet-20[43]网络和加入SAD 后的ResNet-20 网络,最后一层卷积层的结果如图3 所示。其中,图3a 为原始ResNet-20 网络的结果,在不加入SAD 时,网络提取到的人脸特征比较单一和集中,由于低质量3D数据的噪声来源具有不确定性,容易把噪声特征识别成人脸特征。图3b 为加入SAD 后的ResNet-20网络的结果,ResNet-20 网络加入SAD 后,模型提取到了更分散的人脸特征,更利于抑制低质量3D 人脸噪声信息的干扰。

图3 不同模型最后一层的卷积层的可视化

3.2 类间正则化损失函数

经过SAD 遮挡后的特征包含部分值为0 的神经元,为了避免在池化过程中遮挡信息丢失,本文没有使用常规的池化方法,而是直接将特征图reshape 成一维特征向量,并通过两个全连接层对人脸特征进行降维。其中,第一层全连接层主要是把reshape 后的人脸特征向量降维到固定512 维,表示当前的人脸特征,用来计算人脸之间的相似度。第二层全连接层把人脸特征向量降维到训练集中人脸的类别数N,用来预测每个人脸的ID。特征图在被遮挡后,得到的特征向量会存在部分0 值的神经元,导致不同身份人脸的特征向量之间的距离过近,为了解决这一问题,本文提出了新的类间正 则 化 损 失 函 数(inter-class regularization loss, IR Loss)。

当前基于深度学习的3D 人脸识别方法[9-13]主要设计更合理的网络结构,本文方法除考虑网络鲁棒性外,还在损失函数上针对低质量3D 人脸数据重新设计,对人脸特征向量的相似度做更严格的约束。类间正则化损失函数以2D 人脸识别中基于margin 的损失函数ArcFace[6]为基础,进一步对每个类别的聚类中心进行约束,让不同类别的聚类中心更分散。IR Loss 的实现如下:

在图4 中,本文从Lock3DFace 数据集中随机抽取10 类数据,每类包含20 个人脸数据。使用t-SNE 将人脸特征向量降维到2 维,实现人脸特征可视化。其中图4a 表示ResNet-20[43]网络使用Softmax 损失函数的结果。图4b 表示ResNet-20 网络使用IR Loss 的结果。结果表明,在使用相同的ResNet-20 网络结构下,IR Loss 相对于Softmax 损失函数得到的同类特征更紧凑,不同类别间人脸特征更加分散,进一步验证了本文方法的有效性。

图4 使用不同损失函数的特征可视化

4 实验结果与分析

4.1 数据集及测试方法

4.1.1 数据集

Lock3DFace[27]是目前规模最大的低质量3D 人脸公开数据集,由KinectV2 收集。它包括5 671个视频序列509 个个体,每个视频序列包含59 帧图片。包括表情的变化、遮挡、姿态和时间4 个子集,是目前最具挑战性的3D 人脸识别数据集之一。

CurtinFaces[44]是一个低分辨率的3D 人脸数据集。微软Kinect 传感器共捕捉52 人的5 000 多张RGB-D 图像。变化包括姿势、照明、面部表情和装饰性的太阳镜遮挡等子集。CurtinFaces 中的人脸模型由于姿态变化大且质量不高,使得人脸识别任务具有极大的挑战性。

Bosphorus[18]包含105 个人的4 666 张3D 脸。由结构光3D 系统采集,呈现了表情、遮挡和姿态的变化。

FRGCv2[22]由466 个人的4 007 个3D 面部模型组成,数据集由高精度激光3D 扫描仪采集,每个人的表情都不同。

4.1.2 测试方法

1) 闭集测试。实验部分选择当前Lock3DFace数据集准确率最高的Led3D[28]的方法作为基准,主要在Lock3DFace 数据集上进行了实验。为了实现更公平的对比,本文采用与文献[28]相同的设置。具体来说,选择509 个人的中性表情的第一个视频前6 帧作为训练集,并按照2.3 节中的方法进行增强,剩余视频作为测试集,并分别划分为4 个子集(表情、遮挡、姿态、时间)。在测试阶段,对所有视频的每一帧的标签进行预测,选择所有数据帧中出现次数最多的结果作为该视频的真实预测标签,需要注意的是由于视频中每帧人脸图片的相似度极高,本文只选择了每个视频的前6 帧数据。

2) 开集测试。文献[28]还提出了另一种测试设置,随机在509 个个体中选择340 类的全部视频数据的6 帧用于训练,剩余的169 类作为测试数据。训练集中的每个人的第一个中性表情的前6 帧用于数据增强,其余数据使用原始数据。用于测试的169 个个体的每个视频分别提取6 帧,中性表情的第1 帧作为gallery,剩余帧作为probe,包含5 个子集(标准、表情、遮挡、姿态和时间)。通过计算probe 集中每个样本与gallery 集中特征向量的余弦距离,来统计测试结果。

3) CurtinFaces 协议。为了探索在新的场景中本文方法的有效性,本文也在CurtinFaces[44]数据集上进行了实验。与文献[44]中的测试方法一致,使用每个人中性表情的16 张图片作为训练集,并按照2.3 节中的方法进行增强。每个人的剩余数据作为测试集,分为3 个子集(姿态、光照和遮挡)。选择每人一张中性表情作为gallery,剩余数据作为probe。

所有的训练和测试数据都按照第2 节中的方法预处理,本文的方法只使用3D 人脸的几何信息。

4.2 训练参数

本文的特征提取网络统一使用ResNet-20[43],所有的训练数据都被调整到128×128。权重衰减设置为0.000 5,初始学习率为0.1,衰减周期为10,衰减乘数因子为0.1。模型先在FRGCv2 和Bosphorus两个高质量数据集进行预训练,然后在对应的训练数据集上进行微调。所有的CNN 使用相同的SGD优化器进行训练,Batch Size 为64,遮挡比例k设置为0.6。实验的硬件平台为:Intel(R) Xeon(R)CPU E3-1 231 v3 @ 3.40 GHz(NVIDIA TiTan Xp)12 GB;软件环境为:Windows 10,Pytorch1.1.0。

4.3 实验结果和分析

4.3.1 参数讨论

为了评估IR Loss 中超参数s和m对结果的影响,本文选择了4 组参数在ResNet-20[43]网络上分别训练4 个模型,遵循4.1 节中的开集测试协议,具体参数值如表1 所示。结果表明,在m=0.5 和s=64时,识别准确率最高。s和m为正相关,s越大,对应的m更大。

表1 不同超参数设置对结果的影响 %

对于SAD,本文也设置了不同的k值,来探索不同遮挡比例对结果的影响。实验结果如图5 所示,遮挡比例k=0.6 时网络的识别准确率最高,并且所有的遮挡比例的结果均优于表1 中不添加SAD 的结果。遮挡比例应该设置到合适的范围,太大或太小都会降低SAD 模块的性能。

图5 遮挡比例k 与平均识别率曲线

4.3.2 消融实验

为了评估SAD 和IR Loss 模块的贡献。本文遵循4.1 节中的开集测试协议,训练4 个网络:1) 原始的ResNet-20[43]网络结构,使用Softmax 损失函数;2) 使用IR Loss 作为损失函数的ResNet-20 网络;3) 在最后一层卷积层之后插入SAD 的ResNet-20 网络;4) 具有IR Loss 和SAD 模块的ResNet-20 网络。表2 显示了4 种方法的结果,与基准网络ResNet-20 相比,可以看到SAD 和IR Loss提高了性能。一方面,SAD 能够遮挡部分噪声信息,在正面识别结果上取得更高的识别率。另一方面,IR Loss 证明了约束不同类别间的类中心距离可以有效提高识别率。在最终结果中,结合SAD和IR Loss 的模型能取得最佳性能,且结合之后提升效果最明显。

表2 不同模块的识别准确率比较 %

4.3.3 CurtinFaces 测试结果对比

为了评估在其他数据集上本文方法的性能,本文在另外一个大规模的低质量3D 人脸数据集上验证,并与基准方法[44]和Led3D[28]比较。测试协议使用文献[44]中的方法,实验结果如表3 所示。结果表明,本文方法在不同的数据集上具有很好的鲁棒性,获得了最高的准确率,本文方法的CMC 曲线如图6 所示。其中文献[44]中的方法结合了RGB 信息,Led3D 和本文的方法只使用了几何信息。相对于Led3D,本文的方法的识别结果在光照、姿态、遮挡方面都有较大提升,这主要是因为Led3D 对数据预处理要求较高,需要对低质量数据进行填充、滤波、裁剪等一系列复杂预处理。本文方法能够从最原始的低质量人脸数据中,提取鲁棒的特征。

表3 CurtinFaces 数据集的识别率比较 %

图6 本文方法在CurtinFaces 数据集上的CMC 曲线

4.3.4 Lock3DFace 测试结果对比

将本文方法与多个不同的网络结构[29,42,45-46]对比,以验证方法的有效性,结果如表4 所示。本文方法在多个子集上取得了最好的结果,并超过了更深的ResNet-34 网络,在遮挡和姿态两个子集中取得了较大提升。特别地,为了与Led3D[28]的测试协议保持一致,本文使用4.1 节中的闭集测试协议。为了避免复现结果与原文有差异,表4 中非本文方法的结果均从文献[28]中摘录,本文统计结果包含所有的原始数据,没有剔除任何数据。测试子集的样本数量分别为:“表情”1287 个、“遮挡”1005 个、“姿态”1014 个、“时间”1352 个。

表4 Lock3DFace 数据集测试结果 %

5结束语

数据质量差、包含大量噪声是提取低质量3D人脸特征的难点。为了解决这些问题,本文提出了一个新的Dropout 方法SAD和损失函数IR Loss。作为两个独立的模块,很容易嵌入到其他网络中,而不产生任何计算复杂性。可以有效地协同提取3D人脸特征,为模型特征表示提供了有力的工具。广泛的实验已经在两个最具有挑战性的低分辨率3D人脸数据集中给出,结果显示本文的方法优于其他先进的3D人脸识别方法。

但是本方法也存在一定的局限性,主要是在SAD和IR Loss单独使用时,相对于组合使用,对识别准确率提升不明显,需要结合使用。并且IR Loss存在两个超参数,其数值的设置只能根据经验给出,没有具体量化的计算公式。本文方法的本质是降低训练数据上的不确定性噪声信息对特征提取的干扰,在细粒度识别、行人重识别、分类等领域也可能发挥作用,在未来的工作中还需要进一步探索。

本文的研究工作得到了北京航空航天大学的支持,感谢其提供Lock3DFace[30]数据集。此外,本文代码将在https://github.com/SW JTU-3DVision进行共享。

猜你喜欢

低质量特征向量人脸
克罗内克积的特征向量
高中数学特征值和特征向量解题策略
有特点的人脸
玻璃窗上的人脸
低质量实用新型专利申请授权对经济秩序的影响
三个高阶微分方程的解法研究
低质量的婚姻不如高质量的单身,是真的吗?(一)
高质量的独处
破解学前教育低质量现象
“领家系”可爱脸VS“高冷系”美人脸