本文解读的是 CVPR 2020 论文《Rotate-and-Render: Unsupervised Photorealistic Face Rotationfrom Single-View Images》,作者来自香港中文大学和商汤科技。本篇解读首发于知乎。
作者 | 周 航
编辑 | 丛 末
- 论文:https://arxiv.org/pdf/2003.08124.pdf
- 代码:github.com/Hangz-nju-cu
1
前言
这篇论文既异于传统、摆脱监督、从全新角度看待人脸旋转问题,又方法极简、模块原始、效果上还有较大提升空间。终究能幸运地受到reviewer和AC的青睐,也肯定了文章的贡献。虽然文章简朴又不完美,但正因此才留下了更多的想象和空间。
2
核心思想概括
人脸旋转问题的本质是恢复被遮挡部分人脸的结构和纹理,而现有的方法多基于同一人脸的多视角数据训练进行直接的新视角生成,从而导致了各种问题。
本文的核心就是通过单张图像和3D人脸建模,渲染从任意角度旋转到当前角度的带遮挡伪影和瑕疵的人脸,从而和原图构建训练数据对。其构造过程用到了两次人脸纹理获取,三维空间旋转和渲染。
整个工作值得大家引用的亮点在于:
- 无监督(自监督)的人脸旋转框架,摆脱多视角数据。
- 大数据集MegaFace的人脸识别效果提升。
- 一键可跑的开源代码。
3
背景介绍
近年来由于GAN的出现,人脸旋转(转正)任务取得了快速进展,但是现有方法主要依赖对同一人的多视角数据。一个简单的例子就是如图基于GAN的经典人脸转正论文TP-GAN[1]的训练框架,将侧脸的图片作为网络输入并将正脸图像当做生成模型的监督。
传统人脸转正pipeline
这一训练方式的一大障碍是对高质量的多视角配对训练数据的依赖。因此,它们的生成结果受到数据量以及数据分布的限制,从而会造成对特定数据的过拟合(见下图中一些以往方法的结果,会生成Multi-PIE数据蓝色的滤镜和背景)。
和GAN-based方法对比结果
而本文方法的出发点就是摆脱多视角的监督,从而解决由于多视角监督带来的domain泛化能力问题。在本文中,我们提出一种新颖的无监督框架,利用三维人脸建模,通过反复的旋转和渲染操作构建自监督,并用一个普通的Pix2Pix生成最终图像。该框架不依赖于同一人的多视角图像,就可以生成其他视角的高质量图像,并且框架适用于各个非限定的场景。我们做了大量的实验来验证我们的方法的性能。此外,我们发现将生成的数据用于人脸识别模型的训练,对于人脸识别的性能也有显著提升。
4
方法
文章提出的无监督框架如下图所示:
整个框架主要包含三个模块,三维人脸重建模块,通过旋转和渲染构建训练数据的Rotate-and-Render模块,以及将渲染图像重建到真实图像分布的Render-to-Image模块。接下来是没有公式的细节介绍。
1、三维人脸重建模块
三维人脸重建技术在这里只是作为工具使用,任何传统或者深度的三维人脸重建方案都可适用,就不多加阐述。简单来说通过三维重建我们可以获取整个人脸的结构信息,由若干归一化的三维顶点坐标组成的矩阵v和p姿态信息,然后用如下图(a)所示的简单人脸纹理获取方案,就可以给各个顶点注册一个rgb值。而我们使用的渲染方案如下图(b)所示,就是纹理注册的逆过程。
2、Rotate-and-Render训练策略
Rotate-and-Render 训练数据构建策略
3、Render-to-Image生成模块
为了消除在Rotate-and-Render过程中的伪影,我们用Render-to-Image模块来生成符合真实图像分布的图像。整个模块如下图所示:
Render-to-Image网络输入和loss
因为网络结构不是我们的novelty所在,我们对生成器的选择比较随便,直接使用了CycleGAN的ResBlock生成器来生成图像。在训练过程中,我们则直接借用了Pix2PixHD的loss function,采用multi-layer discriminator 和 perceptual loss来训练鉴别器。我们分别采用GAN的loss、feature matching loss、perceptual loss来监督GAN的训练,具体的形式可以参见paper或者code。
5
实验结果
在实验中,我们分别验证了生成图像的质量以及生成图像用于人脸识别的性能的好坏。
1、生成图像的质量对比
下图是和基于三维重建的方法的对比结果,而和基于GAN的方法对比在开头处。可以看到,无论是对比哪种方法,我们提出的方法生成图像的质量都是更好的,而且身份信息也得到有效保留。
与3D方法的对比结果
2、生成图像用于人脸识别
这里不同于一般的论文,我们还将生成的图像用于数据增强,训练人脸识别模型。我们在测试数据LFW、IJB-A、Multi-PIE和MegaFace上分别验证了我们方法的性能。值得注意的是,以往的方法局限于多视角图像的获取,只有在特定场景的小数据集上(与训练数据相同domain)才会有比较好的结果,比如Multi-PIE。而我们提出的方法则没有这种限制,可以应用在各种场景中。我们也是第一个在MegaFace这种大数据集上进行人脸旋转的方法。
如下四个表格分别是在LFW、IJB-A、Multi-PIE和MegaFace的性能:
可以看到,无论在哪种测试集上,我们的方法都取得了最好的结果。
6
总结
在本篇论文中,我们利用三维人脸先验的优势,结合我们提出的Rotate-and-Render的模块,来进行人脸旋转。方法的关键是,利用Rotate-and-Render将人脸旋转两次回到原始角度,构建自我监督信号。并通过GAN将渲染的图像转换为真实图像。通过全面的实验,论文方法的以下优势得到验证:
- 不需要多视图或者成对的数据,就可以进行训练,这是大部分现有方法无法实现的。
- 不仅仅可以将人脸旋转到正面,我们的方法可以旋转到任意角度。
- 大量的可视化表明,我们的方法可以生成逼真的旋转图像,保留原有的纹理细节以及光照等。
- 将生成的图像用于训练人脸识别模型,可以提高人脸识别的性能。
文末讨论
这里作者也无保留地介绍本文的缺陷。首先文章依赖于现有的三维人脸建模工具,所以不准确的建模会影响生成人物的ID。同时由于Render-to-Image的网络模型选择随意,无法处理较高分辨率的图像,所以生成结果也许未及本次CVPR的平均水准(笑)。但是因为文章的重点是突出无监督的框架,所以希望把这些可能地改进方向作为整个方向后续可能的未来工作。
更多的细节还请大家参见原文和代码。
参考文献:
[1] Beyond Face Rotation: Global and Local Perception GAN for Photorealistic and Identity Preserving Frontal View Synthesis. ICCV 2017.