Talking-Face-Generation系列之Wav2Lip模型

本次要分享的数字人论文是:A Lip Sync Expert Is All You Need for Speech to Lip Generation In the Wild,即Wav2Lip模型。

模型结构

Wav2Lip模型结构图
Wav2Lip模型是一个两阶段模型。第一阶段是:训练一个能够判别声音与嘴型是否同步的判别器 ;第二阶段是:采用编码-解码模型结构(一个生成器 ,两个判别器);也可基于GAN的训练方式,在一定程度上会影响同步性,但整体视觉效果稍好。

损失函数:

  • L1Loss:像素级
  • VggLoss:高维语义特征
  • GANLoss
  • SyncNetLoss

优势

  1. 嘴型与声音的同步性好,得益于嘴型判别器 的强有力监督信号。
  2. 任意人脸对象、不同语种音频也能正常驱动。
  3. 推理速度还行。

不足

  1. 虽然同步性好,但整体清晰度偏低,英文音频下的测试效果还好,中文音频中的牙齿部分还原度稍差,对中文的支持不够友好。
  2. Wav2Lip在发某些音的时候,嘴巴张开幅度忽然变大。
  3. 参考人脸图片侧脸时,脸部会不协调。主要是因为训练时将下半脸全都置0(显示是全黑区域),模型在预测时对于被mask掉的区域是没有参考信息的,上下半脸衔接就会出现瑕疵。

可优化的方向

  • 预处理用于训练的视频数据的清晰度。LRS2数据集的清晰度低(本人也没有LRS2/LRW数据集),如果训练数据都是模糊的,极大地限制模型复原牙齿部分。具体操作是利用超分模型提升脸部的清晰度,特别是嘴巴区域,可参考腾讯的超分模型GFPGAN。
  • 增加模型输入的分辨率,但会增加训练时间和推理时间。
    制作精细的下半脸mask,而不是像原论文直接mask掉下半脸的操作。具体操作是经过人脸关键点检测,然后根据关键点的点位得到固定大小的bbox,一个帧视频中所有下半脸的点位的最大最小值(如68个关键点,点位2、点位14、点位8),对于大批量数据,似乎又不太合适。
  • 对于驱动的人像,说话时频率过快,通过增加静默视频数据即可。静默视频是指嘴巴紧闭且不发出声音的视频片段。
  • 修改网络结构,可能更容易训练。
  • 以上观点,仅供参考,不一定正确。

收集视频数据

  • 各大短视频平台:B站、抖音、快手、小红书、youtube等;
  • 类型:演讲、介绍、电视剧、新闻联播等;
  • 编写批处理脚本:筛选、裁剪、图像增强、音频处理。

数据预处理

  • 视频:转换视频帧率为25fps(推荐),根据自己需求处理。使用ffmpeg裁剪得到的视频片段,会造成视频帧与音频出现不对齐。推荐使用cv2读取,再筛选合适的图像序列。
  • 网上收集的视频,有的会出现跳帧的情况,一定要筛选出最长的图片序列。
  • 音频:转换音频采样率为16000k。
# 预处理视频数据
1. 使用cv2读取视频
import cv2
import face_alignment # pip install face_alignment
fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._2D, device='cpu') 
# cpu or gpu

video_path = "demo.mp4"
cap = cv2
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值