wave2lip训练

论文:https://arxiv.org/pdf/2008.10010.pdf

训练源码:https://github.com/Rudrabha/Wav2Lip

经过调整过的代码:https://gitee.com/sparkle__code__guy/wave2lip 

ffmpeg的安装:https://blog.csdn.net/sslfk/article/details/123050218 ,可以window,也可以linux

训练配置:首先必须依赖GPU

下载源码,下载专家判别系统:Sign in to your account

并将模型放到 checkpoints文件目录下

第一步:准备视频数据,爬取可以通过硕鼠爬取想要的人物说话风格数据

第二步:执行preprocess.py,执行命令如下:

python preprocess.py --ngpu 1 --data_root data/original_data2 --preprocessed_root data/preprocessed_root2

其中,data_root为原始视频地址,preprocessed_root为处理完的视频存放的位置;准备的视频数量至少为3个才可以。

第三步骤:获取对应的文件列表并更新到filelists/train.txt和filelists/eval.txt。只保存对应的视频名称即可。代码可以参考,对视频样本重命名并生成对应的命名列表,此处视频文件数量过少<2,会报错:

import time
from glob import glob
import shutil,os

from sklearn.model_selection import train_test_split


#去除名字的特殊符号,统一序号视频文件命名

def original_video_name_format():
    base_path = "data/original_data"
    result = list(glob("{}/*".format(base_path),recursive=False))
    file_num = 0
    result_list = []

    for each in result:
        file_num +=1
        new_position ="{0}{1}".format( int(time.time()),file_num)
        result_list.append(new_position)
        shutil.move(each, os.path.join(base_path,new_position+".mp4"))
        pass

def trained_data_name_format():
    base_path = "data/preprocessed_root/original_data"
    result = list(glob("{}/*".format(base_path)))
    print(result)
    result_list = []
    for i,dirpath in enumerate(result):
        shutil.move(dirpath,"{0}/{1}".format(base_path,i))
        result_list.append(str(i))
    if len(result_list)<14:
        test_result=val_result=train_result=result_list
    else:
        train_result,test_result = train_test_split(result_list,test_size=0.15, random_state=42)
        test_result, val_result = train_test_split(test_result, test_size=0.5, random_state=42)

    for file_name,dataset in zip(("train.txt","test.txt","val.txt"),(train_result,test_result,val_result)):
        with open(os.path.join("filelists",file_name),'w',encoding='utf-8') as fi:
            fi.write("\n".join(dataset))

    print("\n".join(result_list))


第四步骤:

执行如下命令,开始训练:

python wav2lip_train.py --data_root ./data/preprocessed_root/original_data --checkpoint_dir ./savedmodel --syncnet_checkpoint_path ./checkpoints/lipsync_expert.pth --checkpoint_path ./checkpoints/wav2lip.pth

训练过程如下图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lya5Y-RcGFwZXLnmoTlrabmuKM=,size_20,color_FFFFFF,t_70,g_se,x_16

 其他环境配置参考:README.md · 仓库11360838 - Gitee.com

模型预测:

python inference.py --checkpoint_path Wav2Lip/savedmodel/checkpoint_step000000001.pth --face Wav2Lip/data/original_data/test.mp4 --audio Wav2Lip/data/preprocessed_root/original_data/1/audio.wav 

调整后的代码路径为: https://gitee.com/sparkle__code__guy/wave2lip

有需要联系请邮箱:1115349889@qq.com

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 49
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值