UV-GAN: Adversarial Facial UV Map Completion for Pose-invariant Face Recognition
对抗式人脸UV映射完成后的姿态不变人脸识别
一.背景
①传统DCNN下的人脸识别:
问题:用DCNN提取的人脸表示用于人脸识别的模型在正脸间的识别性能很好,但是在侧脸-正脸之间的识别性能则会下降10%。由此可见,姿态不变的人脸识别仍然是一个具有挑战性。
理论上的解决方法:想要去学习姿态不变具有识别力的表示需要去收集大姿态变化的训练数据。
阻碍:web-face 通常有长尾分布并且所有身份的完整姿态提供良好覆盖的数据收集和标记是不可行的。
②3D人脸对齐模型的发展:
问题:最近提出的鲁棒3D人脸对齐方法,在3D人脸模型和2D面部图像之间确立了密集和稀疏的对应关系。3D人脸对齐模型的发展给面部纹理带来了挑战。
解决方法:
利用拟合模型对图像进行采样,可以创造UV图。
阻碍:但由于自遮挡,这样的UV图总是不完整的。
二.介绍
本文的解决方法:
提出了一个框架UV-GAN,用生成的UV图生成任意姿态的2Dface,作为训练深度人脸识别/验证模型的姿态变量。解决了人脸识别的问题的同时而不需要大量多姿态的训练数据
为了扩大不同姿态下训练图像的多样性(连同姿态标签),在不增加标签成本的情况下,我们从CASIA数据集中合成了大量的侧脸图像。也使用这种合成的方法去减少训练过程中姿态的差异。
本文的贡献:
第一个用local、global和identity-preserving 对抗网络解决UV图实现的问题
UV-GAN可以在受控的和野外条件下生成真实的、连贯的UV图,即便是缺失区域占UV图的50%。利用完整的UV和相应的3D形状,我们能够合成任意姿态的二维人脸图像。
在训练时,我们的姿态合成方法合成丰富的姿态变化的训练数据。而且不用手动标记label
在测试时,我们的方法可以减少验证对之间的pose差异以获得更好的性能。在CFP 上获得了94.05%的性能。
三.结构
UV纹理补充:
一旦我们估计出人脸图像的三维形状,它的可见顶点可以通过z-buffering计算出来,然后利用z-buffering为UV纹理生成一个可见遮罩。对于那些不可见的部分(即缺少纹理),我们希望用保持身份的纹理填充它们。我们提出了一种生成式的UV补全对抗网络UV- gan,它由一个UV生成模块、两个判别器器和一个额外的模块组成,以保持人脸的身份。
生成模型
给定带有缺失区域的UV纹理作为输入,生成器作为一个自动编码器去构造新的示例。
编码器和解码器镜像层之间用跳跃链接
Incomplete UV texture +random noise +mirror image =生成器的输入
与初始化噪声矢量的GAN模型不同,我们的编码器获得的隐藏表示捕获了更多的变化以及不可见区域和可见区域之间的关系,从而帮助解码器填补缺失区域。
判别模型:
尽管之前的生成模块可以用小的重建错误来填充缺失的像素,但是它并不能保证输出的纹理在视觉上是真实的和信息丰富的
判别器由两个模型组成:局部和全局判别
首先训练一个全局判别器去确定整个UV图的可信度。其核心思想是合成内容不仅要看起来真实,而且要符合周围的语境。
其次定义一个局部判别器,主要针对人脸中心。引入局部判别器有两个原因:1.对于在野外的UVface,外脸(如耳朵、前额)通常嘈杂且不可靠。2.内脸具有更多的信息。局部模块增强了中心面区域的低噪声和更清晰的边界。
全局判别器和局部判别器相结合的优点是:全局判别器保持了人脸图像的上下文,而局部判别器则使生成的纹理在人脸中心区域具有更强的信息量。
身份保留模型:
在合成人脸的同时保留身份是通过生成网络进行识别发展中至关重要的部分。
利用中心损失来提高UV-GAN的身份保持能力
在resnet-27的平均池化层之后的激活定义中心损失函数
Resnet-27在CASIA数据集中预训练,使用softmax loss去分类10000个身份。
它捕捉了识别身份最突出的特征和面部结构。用中心损失来保持合成纹理的一致性。
在训练过程中特征嵌入的网络是固定的,所有生成的样本都位于它们自己固定的
feature centre附近
目标函数:
提出的UV-GAN的最终的损失函数是所有损失的加权和:
L=全局和局部对抗损失+生成器损失+身份保存损失(中心损失)–
除生成器损失之外,其他损失的系数是作为衡量不同损失的权重
四.实验
设置
对于UV补充,原图UV图的原始尺寸是377595和re-scale不完整UV图为256256作为UV-GAN模型的输入。
生成器和判别器的结构采用了【19】参考文献。局部判别器的输入为128*128。局部判别器和全局判别器结构相同。
为了每一个完整人脸UV图可以被用于训练,创建了20合成2D面部图像在[-90,90]之间的任意角度,使用visibility masks and use the corresponding incomplete facial UV maps for training.
网络的实现用TensorFlow。用100个epoch,batch-size为8,学习率为0.00001,损失的权重为1 = 10−2, 2 = 4 × 10−2, and 3 = 10−3
数据集:
UVDB用来训练提出的网络UV-GAN。
有三个不同的来源:
第一个子集包含3564个主题(3564个身份和六个表情,总共21384单独的UV图),由3dmn扫描得到的。
第二个子集由337个身份(每个光照设置有2514张独特的面部UV地图,总共50280张)。第三个子集是WILDUV从UMD视频数据集中构造的。我们选择了具有较大姿态变化的视频来覆盖所有不同的姿态,最终开发了第一个野外UV数据集,包含1,892个身份(5,638个唯一身份的UV地图)。
对于MultiPIE子集,前200个主题用于训练,其余137个主题用于测试。对于人脸合成,我们使用了UVDB的所有训练子集
UVcompletion
为了定量评估UV完井结果,我们使用了两个指标。
第一个是峰值信噪比(PSNR),它直接测量像素值的差异。
第二种是结构相似度指数(SSIM),它估计两幅图像之间的整体相似度。
这两个指标是计算预测UV图和原图
姿态不变人脸识别
用人脸检测和3DMM拟合对所有的图片进行预处理。之后,将人脸图像裁剪为112×112。
为了研究训练数据和损失函数对识别的影响,使用在实验时使用相同的网络结构RESNET-27,并且没有任何附加条件。只改变训练数据和损失函数,包括中心损失,sphereface 和softmax loss
本文的数据增强方法:创建每人300张图像,正脸在训练数据中,我们产生非正脸的视图,这些视图保存了对身份识别至关重要的准确的面部细节。对于训练数据中的非正面人脸,我们只增加姿态角度来生成自遮挡面积较大的非正面人脸。
VGG2
本实验旨在评估姿态变化(正面、四分之三和侧面视图)对模板匹配的影响。
当研究不同的姿势对时,相似性会大大降低,例如前向四分之三和前向侧面,这意味着不同姿势之间的识别是一个具有挑战性的问题
在匹配具有较小姿态间隙的配对时,识别结果会更好,这意味着在测试中最小化姿态间隙,例如人脸正面化或人脸正面旋转,是非常有益的。
当训练数据包含较大的位姿变化(如VGG2)时,识别效果较好。也就是说,姿态不变的特征嵌入可以直接从这些数据中学习,而不需要任何特殊的技巧。
通过简单的增加身份的数量,而在训练数据中没有较大的姿态变化,是不可能学到姿态不变嵌入的。
在本文提出的CASIA-angUV数据集学到的姿态不变嵌入比直接在CASIA 数据集中的好。
在CASIA- auguv上训练的模型的性能接近于在VGG2数据集中训练的模型的性能,VGG2数据集比CASIA大6倍。因此,很明显,通过在训练集中加入较大的姿态变化,使用提出的UV-GAN可以提高性能。
小记: