论文阅读:FACIAL: Synthesizing Dynamic Talking Face with Implicit Attribute Learning

前言

输入是声音和短视频, 输出是带有头部姿态的视频。 整个结构分为两部分, 一个是FACIAL-GAN, 可以合成隐式属性(头部姿态)和显式属性(嘴部运动), 这些参数对渲染3d人脸有作用, 然后通过后续的网络进行操作。

方法

在这里插入图片描述

整体框架如图。 给定音频, FACIAL-GAN生成显式的属性和隐式的属性, 输入的视频进行3d重建, rendering过程中还需要一个网络生成的eye-attention maps.

问题公式化

在这里插入图片描述
A是audio, 通过encoer编码声音生成显式的lip属性和隐式的pose和eye属性, V是参考视频, 注意不同的属性需要不同的编码策略, 嘴唇和音节相关, 而隐式特征依赖上下文信息,比较长。

FACIAL具体内容

此模型有三部分, 一部分是生成上下文关系的G_tem(temporal correlation generator), 一个是提取每帧特征的G_loc(temporal correlation generator), 还有个属性鉴别器D_f 判断生成属性的真假。
下面是整体模型图:
在这里插入图片描述
T帧滑窗通过G_tem得到隐式的属性, 每帧通过deepspeech得到的特征通过G_loc得到每帧的特征, 然后耦合通过fc得到最后每帧的特征, f是表情参数, p是头部姿态参数, e是眨眼au估计.
下面是G_tem的网络结构, 可以看到输入是1*128*29
在这里插入图片描述
然后是G_loc的网络, 可以看到输入是1*16*29在这里插入图片描述
注意哈,这里G_tem的输入是128帧, 然后G_loc的每个a_t是16帧组成的
在这里插入图片描述

网络的初始化状态为:
在这里插入图片描述

总的公式如下:
在这里插入图片描述
在这里插入图片描述
表示分割和提取特征X的第t个特征块

公式表示给定s, 提取A的特征, ➕是feature concatenation

Loss函数

在这里插入图片描述

L_s是初始状态的L 1 norm 损失
在这里插入图片描述

注意这里还增加了运动损失U 来保证帧间的连续性
在这里插入图片描述

在这里插入图片描述
(帧和帧的)
在这里插入图片描述
(帧间的)

  • 鉴别器D_f 的loss定义:

在这里插入图片描述

最终loss定义如下:
在这里插入图片描述

隐式部分编码
  • 这里的渲染是结合参考视频中的几何、纹理和照明系数,以及输入音频中生成的表情和头部姿势系数
  • 哦哦, 这就是参考视频的作用, 那我能不能只用第一帧的参数呢?

3D的优点是能够更好的描述头部姿态, 缺点是很难捕捉面部上部区域的细微运动, 比如眨眼.
直观的做法是把face image和blink value直接级联起来, 但是卷积无法识别眼睛这部分的通道,
这里作者通过使用眼睛注意力map, 先定位眼睛区域, 然后根据blinking AU改变眼睛区域的像素值
那么眼睛区域怎么定位呢? 我们可以借助3d model中眼睛部位的顶点,
在这里插入图片描述
center_x, center_y是eye landmark的中心值, th是阈值, 调整眼睛区域大小
在这里插入图片描述

  • 这里的预测AU值大说明有眨眼, 小就说明没有眨眼,那是怎么表现眨眼的呢?直接用眨眼的部分替换掉?还是说直接变黑? 那眨眼的连续过程又是怎么表示的呢? 插值吗?
渲染部分

将渲染图像与眼睛注意力图相结合变为 W*H*4, (rendering image 3 channels, attention map 1 channel)
这里一次输入是2N_w的window, 当前帧在窗的中间

rendering-to-video 网络由一个生成器G_r和多尺度鉴别器 D_r = (D_r1, D_r2, D_r3)组成
生成器的输入是stacked tensor X_t
在这里插入图片描述
size为
在这里插入图片描述

  • 所以这里的生成是8N_w生成一帧吗?

后面条件鉴别器D_r 将stacked tensor X_t 作为输入, 渲染部分的损失为:

在这里插入图片描述

L_FM 是借用的别的论文中的, I是 real image(这是怎么监督的呢?变化的那部分在哪呢?有对应吗?)
在这里插入图片描述
VGG损失用于语义级别的相似性, L1是绝对像素损失

总结如下:
在这里插入图片描述

数据集

  • 视频
    这里的数据集是作者自己的, 包含动态头部姿势、眼球运动、嘴唇同步,以及自动收集的每个帧的3D人脸模型。
    发邮件还没有要到数据集

  • 音频
    使用DeepSpeech输出为5029, 插值为3029, 也就是每秒分30帧, 和视频对应起来.

  • 头部姿态和眼部运动
    使用openface(Openface: A general-purpose face recognition library with mobile applications) 用于生成每帧的人脸参数
    头部姿态是6维的欧拉角和三维变换矩阵组成
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 眨眼
    AU用来描述眼球运动的强度 所以假如我要用AU的时候还得一帧一帧标注? 大小代表眨眼的强度

  • 3D模型
    使用的是之前弱监督那个

  • 数据集统计
    有450个视频片段, 每个片段大约1分钟, re-normalize 每个视频为每秒30帧, 总共535400帧. 使用5-1-4的train-val测试分割进一步分割数据集.
    数据集clip有一个固定的camera和适当的照明,只有一个说话人.

实验

train

训练包括两个步骤,

  1. 首先优化 L_facial 也就是属性生成的部分, 在音频和属性建立起映射
  2. 然后给定一个参考视频, 首先提取其音频特征, 3D face model, 头部姿态p 和 眨眼AU值. 然后 fine-tune L_facial学习个性化的talking style
  3. 对渲染损失Lrender进行了优化,把带有eye attention的图映射到rendered image
test

给定输入音频, 首先使用fine-tuned FACIAL-GAN 将音频映射到表情f ,头部姿态p和眨眼AU, 这些都具有参考视频的个性化谈话风格, 然后进行渲染
假如生成视频超过参考视频也没关系, 因为不是简单的替换而是借助参考视频的参数渲染成的帧

实验时T是128帧, 滑动窗口是5帧

评价指标

  • Landmark distance
  • Sharpness metric(cumulative probability blur detection (CPBD)
  • Lip-sync metric 通过SyncNEt衡量视听(AV)偏移量和置信度分数,以确定唇部同步误差
  • Eye blink metric
  • Personalization metric: 一个高质量的系统应该能够为不同的身份生成个性化特征。具体还是找找代码部分, 大体是头部姿态的分类
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

live_for_myself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值