|
新版 DeepFaceLab PyTorch 训练器高级教程
仅供参考, 并不是标准的训练方法,
附件没法设置灵石了
新版 DeepFaceLab PyTorch 训练器高级教程-20250803.pdf
(327.32 KB)
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变化调整冻结策略
|
|