(1)数据:
1):随机获取5帧参考帧
2):处理这5帧连续帧,:source_frames:连续5帧的crop_moth
b)audio_list:连续5帧的每一帧对应的5帧音频mel特征
c):refs:fintune 固定参考帧,为video.refs,给这连续5帧每一帧配固定的5帧参考帧。
video.refs 为整段视频的突出表情帧,ref_desc_list = [“闭嘴”, “张嘴”, “嘟嘴”, “半张嘴”, “张大嘴”]
ref_desc_list通过当前帧与ref_normal_landmarks作相似度,计算得来。
d): refs:pretrain 随机5帧参考帧
(2)网络:
N=5
输入:1:source_img:torch.Size([N, 3, 160, 128])。 #一帧带预测嘴型的帧
2:ref_img:torch.Size([N, 15, 160, 128])。#随机参考帧
3:audio_feature:torch.Size([N, 80, 16])
输出:torch.Size([N, 3, 160, 128])
alignment encoder:将两种图片特征concat,在channel维度上拼接后,接到一个下采样16倍的小网络中,然后接一层全连接层,组成1*128维度的特征向量
adaat:空间变形,在人脸姿态检测里面有引用,在特征通道空间中进行仿射变换,【R,T,S】,实现错位图像生成,保证生成的嘴型姿态跟带预测嘴型帧的姿态一致。
(3)损失:
1)Perception loss;2)GAN loss. 3)Lip-sync loss.
分别对应图像特征判别器,音频特征判别器,和音唇同步模型。
输入:随机5帧参考帧reference image,随机一张待生成的mask后的原图source image,source image对应的音频
过程:1)将reference image 与source image均下采样4倍,分别得到[N,256,40,32]的特征图
2)将1)得到的2组特征图,融合对齐,得到特征图3.
3)音频提取的特征,与特征图3融合并进行仿射变换(以前在做人脸重建时会有用到),得到特征图4
4)对特征图4,进行decode,上采样4倍,得到生成的图片。
输出:fake_out
(4)后续loss:
- perceptionLoss
计算fake_out与fake_out原图做一个特征金字塔计算,然后送到vgg中,分别计算图像特征,最后两个特征张量做L1Loss
2)pixelLossL1
计算fake_out与fake_out原图线性插值缩放一定倍数后,做L1Loss
3)两个判别器loss
4)mothloss
计算fake_out嘴部分与fake_out原图嘴部分做perceptionLoss
5)sync_loss
生成的嘴型与对应的音频,送到syncnet中,得到音频特征和嘴型特征,然后做nn.MSELoss()
(5)辅助网络:
1)图片+音频判别器网络:
比较大的一个二分类网络,用来判别生成图和原图的真假
GAN loss=MSE Loss
2)音视频同步网络
通过调节表情特征系数,可以控制嘴型。