介绍
DH_live的训练遵循DINet的模型,用更高清的分辨率可以训练出更好的牙齿和唇形。再就是中文训练集以及更多的原始素材会训练出更好的效果。
训练步骤
数据集准备
数据集1
这份数据集是bilibili上的浪子之心科技
大佬分享的,是1080*1440的高清人脸说话视频,很感谢这些自己花时间精力整理,还免费分享出来的大佬。
百度网盘:https://pan.baidu.com/s/1eS7BwxyIW9eDOvqOR4up_A?pwd=lzzx
提取码: lzzx
阿里云盘:https://www.alipan.com/s/GWwJq9BWf4C
提取码: rs34
夸克网盘:https://pan.quark.cn/s/fa763f4ee24a
提取码:w83E
数据集预处理
将数据集统一放到指定的一个目录中,类似官方给出的存放路径dir_to_data
这个目录是在项目的目录下创建的
运行预处理命令:
python train/data_preparation_face.py dir_to_data
会生成训练使用的数据
验证
python train/train_input_validation_render_model.py dir_to_data
配置调整
项目目录下的talkingface/config/config.py
文件下可以调整训练的参数,这里我们列举几个比较常用的
–batch_size:训练的批次大小
–decay:训练的轮数
–non_decay:固定学习率的迭代次数(不太清楚具体功能
)
实际的训练次数是decay+non_decay
的次数
–checkpoint:训练多少轮进行一次模型的保存,这个文件会保存在checkpoint/Dinet_five_ref中
–seed:随机种子
开始训练
执行命令
python train/train_render_model.py --train_data 预处理的数据集目录
# 例子
python train/train_render_model.py --train_data dir_to_data
训练监听
执行命令
tensorboard --logdir=checkpoint/Dinet_five_ref
启动以后访问http://localhost:6006/
可以看到训练情况。
继续训练
当我们训练终止想要继续上次的训练时,我们可以修改文件train/train_render_model.py
文件中的一些内容
上面的路径和开始的轮数按照实际的进行修改。
模型转换
提供一个训练出来的模型提取预测模型的python
import torch
# 加载权重
checkpoint = torch.load('./checkpoint/epoch_100.pth ')
# 提取net_g的权重
net_g_static = checkpoint['state_dict']['net_g']
# 加载net_g权重
# net_g.load_state_dict(net_g_static)
# 保存新权重
torch.save(net_g_static, './checkpoint/render.pth')
print('以保存net_g权重到render.pth')
训练问题记录
2024.11.25
发现数据集中023有问题,最后几帧没有图像会导致训练中断。将视频做一下剪辑重新预处理一下。
特别感谢
bilibili的浪子之心科技
提供的很多技术思路和数据集的分享