Advertisement

GazeNeRF: 3D-Aware Gaze Redirection with Neural Radiance Fields

阅读量:

1.Introduction

1.1什么是 Gaze redirection

输入一张人脸图,输出经过调整过的人脸图,该人脸的视线方向发生了变换,其他信息不变

1.2 Gaze redirection 的应用

视频会议、图像和电影编辑、增强虚拟人的逼真度

1.3目前常见的方法与不足

主要介绍了一些2D方法,分为warping和生成式的方法

生成式法:Gan、 encoder-decoder、VAEs

不足:没有考虑到任务的三维性质(如视线方向的改变本质上是三维旋转问题);眼球与其他的人脸特征难以解耦,很难保证其他特征能保持

1.4 本文提出的方法GazeNeRF

将眼球和其他人脸特征解耦开来,并对眼球部分进行刚性旋转

设计了一个two-stream MLPs,一个MLP处理眼睛,另一个处理其他特征

2.Related work

2.1Gaze redirection

warping的方法:生成不了新的像素,是对图像部分区域的变形

gan的方法:循环一致损失生成高质量图像、训练gaze estimator去计算gaze loss实现视线调整

encoder-decoder、VAEs:需要成对的sample,提出了旋转矩阵的方法调整视线,但由于其他特征耦合在其中,故直接旋转会破坏其他信息,是一种弱先验的使用

3.Method

3.1 HeadNeRF

gazeNeRF是在headNeRF基础上的工作,和headNeRF相似,为了得到不同的人脸, 每一个点x的采样会受到人的特征信息的影响,即z_{id},z_{exp},z_{alb},z_{ill},分别代表人脸的形状、表情、纹理、光照情况特征。所求的NeRF模型就是作以下的变换:

其中 z_{id},z_{exp},z_{alb},z_{ill}的初始化是由一个3D morphable model(来自3d face from x: Learning face shape from diverse sources.)的人脸参数获得。

3.2 GazeNeRF
  • two-stream MLPs

GazeNeRF的输入中包含人脸的语义分割图,所以将一个完整的人脸提取出无眼的人脸和眼睛两个部分。

而后其设置了一个two-stream MLPs,其中一个MLP用来生成眼睛的特征图,另一个MLP生成除了眼睛部分之外的无眼脸的特征图。这两个MLPs的功能可以写成下式:

和HeadNeRF比加了一个输入g,g是原图中人眼的视线方向的特征,主要组成是定义了视线方向的yaw和pitch角度。此外这里的输入四个z初始化也是同HeadNeRF用3DMM获得。

  • 三维的变形

通过上述结构可以先渲染出两个low-resolution的特征图,F_{fw/o},F_{e},两个的形状为(64,64,258),分别代表无眼脸特征和融合了视线方向的眼部特征。

F_{e}即融合了视线方向的眼部特征图,将其变形为(64,64,86,3),然后用一个旋转矩阵R乘以它,就得到了视线方向更改后的眼部特征图。这里的旋转矩阵R里的参数是我们想要最后生成的人脸的视线方向,和前文将的g是不同的。称旋转过后的眼部特征图为F_{e-rot}

F_{fw/o}会经过一个畸变操作,论文里对此没详细讲。

最后将处理过后的F_{e-rot}F_{fw/o}进行一个max操作就能得到完整的人脸图F_{wf}

  • 特征图融合与人脸图的渲染

至此就得到了三个特征图:旋转后的眼部特征图F_{e-rot},无眼脸特征图F_{fw/o}以及完整人脸特征图F_{wf},将这三个特征图经过一个统一的下采样网络i_{mega}就能得眼部图,无眼图和完整的人脸图。

  • Loss

使用了多个loss进行训练,分别为人脸重建损失,人脸感知损失,视线损失,与一个正则项损失。其中视线损失是利用了一个预训练的gaze estimator得到人眼的视线方向。





图有点乱,感兴趣可以去找paper看。

4.Experiments

指标Gaze,Head,LPIPS,ID。其中Gaze和Head指标是指用另外两个预训练的网络去评测眼睛视线方向和头部方向的和理想值的差异。

5.思考

这篇论文读下来思路还是比较好理解的,比较好的创新点是two-stream MLPs的架构,实现一种解耦效果。

全部评论 (0)

还没有任何评论哟~