wav2lip:Accurately Lip-syncing Videos In The Wild

飞桨AI Studio - 人工智能学习与实训社区集开放数据、开源算法、免费算力三位一体,为开发者提供高效学习和开发环境、高价值高奖金竞赛项目,支撑高校老师轻松实现AI教学,并助力开发者学习交流,加速落地AI业务场景https://aistudio.baidu.com/aistudio/education/group/info/16651

wav2lip,主要是通过音频以及和音频同步的图片以及不同步的图片作为输入,构造了encoder-deocder结构,其中损失模块包括了三个部分,第一是重建损失,第二是同步损失,其中提前预训练了一个同步模型,第三增加了gan架构,用来提升生成的质量。但是wav2lip开源版本不够高清,生成出来的唇形仍然比较模糊,有两种做法,一个是训练高清版本的,另一个就是接fpgan这种增强的方式,但是后者速度很慢。

1.安装

python37 cuda 10.1 

sudo yum install libsndfile

pip install -r requirements

在face_detection/detection/sfd/sfd_detector.py中把s3fd.pth的路径换一下就好。

2.推理

实际上还是一个跨模态的模型,输入是一段音频特征和图像对,其中音频特征以及处理成mel频谱,这也是很常见音频处理,图像特征是一段长视频进行随机的切割,产生的两段,其中第一段橙色和第二段粉色的,将两段图像进行拼接之后,将橙色段的唇形部位全部mask掉,输入一个encoder和decode的结构,在解码时,产生了音频对应的唇形图,将唇形图和gt进行loss计算,gt即是被mask掉的橙色块,这里输入mask橙色块的时候拼了粉色块,我觉得主要还是让模型只学习唇形这一块,因为是基于gan的模型,不然很容易学飞了,粉色图片序列其实就是减少模型的复杂度,给了一块先验,要学的只是mask掉区域。

原作者开源出来的不是高清版本的,人脸是96x96的。

音频每块是16,一个视频对应的音频,偏移量是80/fps,fps=25,每次偏移大概3。

3.训练

音频和视频同步判断器要提前训练好,即右下角模块,右上角是标准的gan结构,不用gan结构就是l2损失。

随机帧是和音频不同步,是根据音频和mask的图形生成真实的唇形,参考帧的意义我自己感觉是减少模型复杂度,但是也有解释,在前向推理时,其实输入的一定是和音频不同步的视频帧,此时不仅对唇形区域做mask,也会把原始的图像拼接起来concat,这样其实训练和推理时就保持一致了。上面的loss是重建损失,后面还有同步损失。

l1主要是重建损失,虽然生成了唇形,但是不足以保证同步,提前训练好一个sync判别器。 下面是syncnet网络。

上面两部分主要考虑的是唇形生成和同步的监督,但是还要考虑唇形生成质量问题,为了提升质量,在生成器后面加了一个gan结构,主要是判别器。

 预测:

3.如何解决画面模糊问题?

3.1 wav2lip后面接一个gan

视频超分:srresnet/basicvsr++,视频超分对显存要求高,1080ti跑步起来,对部署不好。

图像超分:

gfpgan:1min->1457张图,20min左右

gpen:1min->1457张图,16min26s左右

wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/
sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force 

3.2 wav2lip使用hq版本训练

4.模型推理和训练

4.1 模型推理

python inference.py

4.2 模型训练

4.2.1 对数据预处理

python preprocess.py 进行数据预处理,将数据处理成一个文件夹下图片和音频的集合。

4.2.2 训练唇形同步模型

k80会卡主,1080ti没问题

python color_syncnet_train.py

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要训练自己的数据集,可以按照以下步骤进行: 1. 准备数据集:将自己的图像和对应的音频文件准备好。确保图像和音频文件的命名是对应的。 2. 数据预处理:使用预处理脚本对数据进行预处理。可以使用命令`python preprocess.py --input <图像文件夹路径> --output <输出文件夹路径>`来进行预处理。这将生成一个包含预处理图像和音频的文件夹。 3. 训练模型:使用训练脚本进行模型训练。可以使用命令`python wav2lip_train.py --data_root <预处理数据文件夹路径> --checkpoint_dir <保存模型的文件夹路径>`来进行训练。在训练过程中,模型将使用预处理的图像和音频进行训练,并保存训练好的模型。 4. 模型预测:使用训练好的模型进行预测。可以使用命令`python inference.py --checkpoint_path <训练好的模型路径> --face <测试视频路径> --audio <测试音频路径>`来进行预测。这将生成一个包含合成视频的输出文件。 请注意,以上命令中的路径需要根据实际情况进行替换。此外,还可以根据需要调整训练参数和模型架构来进一步优化训练效果。 #### 引用[.reference_title] - *1* [wav2lipAccurately Lip-syncing Videos In The Wild](https://blog.csdn.net/u012193416/article/details/130152327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [wave2lip训练](https://blog.csdn.net/sslfk/article/details/123419704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值