風水先生 发表于 5 天前

新版 DeepFaceLab PyTorch 训练器高级教程

新版 DeepFaceLab PyTorch 训练器高级教程
仅供参考, 并不是标准的训练方法,
附件没法设置灵石了

discord导出一年的聊天记录,然后使用chatgpt 分析的聊天记录
频道连接   https://discord.com/channels/730623345288151060/730623345288151065

基于对两个Discord聊天记录的分析,chatgpt 总结JesterX关于DFL模型训练的完整步骤和方法论:

JesterX的DFL模型训练步骤总结

一、训练前准备阶段

1. 数据预处理

- 运动模糊处理: 训练前移除运动模糊,网络难以匹配模糊效果
- 样本质量评估: 以输入输出mask差异作为质量标准
- 数据增强: 使用DFL-MVE版本的额外增强功能(颜色、阴影等)

2. 平台选择建议

- 推荐PyTorch版本: 提供更容易的层冻结操作
- 性能优势: PyTorch版本速度提升超过2倍(200ms vs 450ms/iteration)
- 操作便利性: 更直观的编码器/解码器管理

二、渐进式训练流程(Progressive Training)

1. 分辨率递增策略

低分辨率训练 → 中等分辨率 → 高分辨率
128 → 256 → 512 (以Spock模型为例)

2. Growth Stage训练步骤

阶段-1(初始低分辨率):
- 启用Random Warp进行基础训练
- 建立基本的面部特征识别
- 训练到损失不再下降

阶段0(标准分辨率):
- 从锁定旧层开始训练
- 当面部效果达到预期时解锁层
- 继续训练直到收敛

阶段+1(高分辨率):
- 再次从锁定旧层开始
- 专注于细节和微细节训练
- 最终解锁进行精细调优

三、编码器锁定/解锁的精确时机

1. 何时锁定编码器

Random Warp关闭时:
- RW OFF使数据集对编码器变得"太简单"
- 可能导致相似度下降
- 建议监控相似度,下降时立即锁定

Growth Stage转换时:
- 每次增长阶段都从锁定旧层开始
- 保持已训练好的特征不被破坏
- 如果之前在RW OFF下训练,增长时也要RW OFF

训练稳定性需要时:
- AMP模型中inters始终保持锁定
- 防止模型在关键阶段崩溃

2. 何时解锁编码器

面部效果良好时:
- 当生成的面部看起来不错时解锁
- 通常不解锁inters(中间层)
- 可以选择性解锁特定blocks

需要学习细节时:
- 缺少高层次细节时可以解锁更多层
- 或者解锁所有层(除了inters)

四、不同架构的特定训练步骤

1. AMP模型训练

1. 初始训练(inters保持锁定)
2. 编码器和解码器同步训练
3. 关键时刻锁定编码器
4. 最终阶段:RW OFF → LRD → GAN

2. SAEHD与AMP互换

- PyTorch版本支持中间层交换
- 可以在训练过程中切换架构
- 编码器和解码器可以跨架构复用

五、训练阶段转换的关键节点

1. Random Warp管理

RW ON (基础训练) → RW OFF (精细调优) → 锁定编码器

2. LRD(学习率衰减)应用

- RW OFF后启用LRD
- 保持编码器锁定状态
- 更新30%权重并随机化学习率

3. GAN训练

RW OFF一段时间 → 启用GAN → 保持编码器锁定

六、高级训练技巧

1. 实验性方法

中间层定期删除:
- chervonij建议的方法
- 目标:提升相似度
- 需要根据具体情况测试效果

GAN中间层应用:
- Pagi方法在中间层应用GAN
- 实验阶段,需要进一步验证

2. 模型保护策略

Float16 vs BF16:
- 早期使用BF16保证稳定性
- RW OFF后可切换到FP16获得精度
- 避免同时关闭RW和切换精度

备份节点:
- 每个关键阶段都要备份
- 编码器锁定/解锁前后保存
- 防止模型崩溃导致训练失败

七、训练监控和调整

1. 关键监控指标

- 相似度(Likeness): 主要质量指标
- 损失收敛: 判断是否切换阶段
- 样本质量: 输入输出mask差异

2. 调整时机

监控相似度 → 发现下降 → 锁定编码器 → 继续观察 → 适时解锁

八、JesterX的核心训练哲学

1. 渐进式方法: 从低分辨率逐步提升,提高训练效率
2. 精细控制: 利用PyTorch的优势进行精确的层管理
3. 实验探索: 持续尝试新的训练策略和架构改进
4. 稳定性优先: 通过备份和监控确保训练过程的稳定性
5. 社区协作: 鼓励社区参与测试和改进训练方法

这套训练方法体现了JesterX作为DFL-MVE项目核心开发者的深度技术理解和实践经验,为高质量深度学习换脸模型的训练提供了
系统性的指导框架。


Growth Stage 冻结/解冻策略

第一阶段:低分辨率基础训练(128px)

时机:训练初期
- 不冻结:所有层都参与训练
- 目标:建立基础特征表示

第二阶段:低分辨率稳定期

时机:低分辨率训练收敛后
- 冻结:
    - Encoder(编码器)
    - Decoder(解码器)
- 继续训练:中间层和特征提取层
- 原因:JesterX提到"we can freeze decoder and encoder"

第三阶段:分辨率提升期(128→256→512)

时机:每次分辨率提升时
- 保持冻结:
    - 已稳定的Encoder/Decoder层
- 解冻:
    - 需要适应新分辨率的层
    - SAEHD和AMP的intermediate layers
- 策略:JesterX提到"swap saehd and amp intermediate layers"

第四阶段:高分辨率精细化

时机:达到目标分辨率后
- 选择性解冻:
    - 根据训练效果决定解冻哪些层
    - 可能解冻部分Encoder/Decoder进行微调
- 动态调整:根据loss变化调整冻结策略











guozhixin86 发表于 4 天前

先点个赞,下载了,我感觉以后肯定能用得着啊
页: [1]
查看完整版本: 新版 DeepFaceLab PyTorch 训练器高级教程