deepfacelab中文网

 找回密码
 立即注册(仅限QQ邮箱)
查看: 244|回复: 7

true_face_power为什么是GAN?

[复制链接]

9

主题

70

帖子

4449

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
4449
 楼主| 发表于 2025-5-24 03:11:34 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN  参与人数:0  我的评分:未评
本帖最后由 lispmox 于 2025-5-24 15:54 编辑

更新20250524
乌龙事件,我用自己代码跑的,不小心把code_res赋值成了ae_dims,导致code_discriminator层数暴增,分辨率448,e_dims=96,ae_dims=480,d_dims=96,d_mask_dims=22。true_face_power的模型权重占8.2G,adabelief优化器状态占17G,确实有点难顶。
修改恢复之后显存占用就正常了,不过我还是顺便加了一个stop_src_enc的选项,看看截断src到encoder梯度的效果如何。




跑了一下坛里的448分辨率DF-UDT模型,bs=4用48GB的卡才能跑得动,发现是true_face_power这一个参数占用了大量资源,不禁思考这个参数到底有什么意义?

在训练DF架构的万能模型时,需要开启true_face_power让src的编码接近dst的分布,但也可能产生一些负面效果。DFL源码里true_face_power是用GAN实现的,GAN存在模式塌陷问题(mode collapse)使得生成的分布相较于真实分布要简化许多,这也可能是大家在开启后眼神训练不到位的原因。此外,true_face_power需要额外的判别器网络,增加了很多资源消耗。

既然训练万能模型时候,dst数据集已经足够丰富,为什么不直接截断src到encoder部分的梯度,只用dst训练encoder呢?这样获得的编码不就是和dst的编码分布完全一致了么。即src数据集只训练decoder_src,dst数据集训练encoder+inter+decoder_dst,既不需要一个独立的判别器网络,也不用担心模式塌陷问题。

请路过大佬不吝赐教。


回复

使用道具 举报

37

主题

531

帖子

1万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
16246
发表于 2025-5-24 05:35:12 | 显示全部楼层
true face跟face style一样,顶多占用2-4个bs的额外显存,像你说的48g显存才能跑4bs,可能是四维设置不当,edims和ddims奔着112甚至128去了
回复 支持 反对

使用道具 举报

37

主题

531

帖子

1万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
16246
发表于 2025-5-24 06:01:51 | 显示全部楼层
至于你说的万能丹那是后面滚石这些大佬开发出来的玩法,别人原作者原意就是通过有限素材训练完成一对一换脸任务,冻结src的编、解码层不在作者考虑范围内,利用真脸来最大化保存src的脸部权重是最经济的方法。
其实不想用真脸的话有个最经济的方法,把src训练好之后把seahd_decoder_src.npy备份,然后开facestye继续训练,训练好之后再把seahd_decoder_src.npy复制回来
回复 支持 反对

使用道具 举报

9

主题

70

帖子

4449

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
4449
 楼主| 发表于 2025-5-24 16:14:59 | 显示全部楼层
dfl9999 发表于 2025-5-24 05:35
true face跟face style一样,顶多占用2-4个bs的额外显存,像你说的48g显存才能跑4bs,可能是四维设置不当, ...

我找到问题了,code_discriminator的占用只和ae_dims以及code_res相关,code_res = resolution / 32 或者resolution / 16。我不小心把它赋值成了ae_dims,导致判别器网络有61层,太深了。感谢大佬提供的信息。
回复 支持 反对

使用道具 举报

225

主题

2066

帖子

78万

积分

管理员

Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96Rank: 96

积分
780683

隐世金马甲勋章超级版主勋章可爱萌新勋章见习版主勋章荣誉会员勋章男同管理员-无尚荣耀勋章优质版主勋章小有贡献勋章

发表于 2025-5-24 21:49:38 | 显示全部楼层
true face的作用是通过GAN的对抗学习,让faceA和faceB编码后的中间层向量尽可能一致。这样就能防止A或B的身份特征混入到中间层向量中。让关于身份特征的向量都给挤压到decoder的网络权重中
提供数字人直播服务、文字/音频驱动数字人服务,有意者联系我QQ563861181
全站默认解压密码dfldata.xyz
DFL交流QQ群五群974612885
AI绘画交流QQ群1040635623
我的B站账号:特看科技的滚石   其他自称彦祖的不是我,请勿上当
回复 支持 反对

使用道具 举报

9

主题

70

帖子

4449

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
4449
 楼主| 发表于 2025-5-25 01:07:53 | 显示全部楼层
滚石 发表于 2025-5-24 21:49
true face的作用是通过GAN的对抗学习,让faceA和faceB编码后的中间层向量尽可能一致。这样就能防止A或B的身 ...

按我的理解,如果dst素材足够杂,那么只用dst训练出来的中间层向量天然不会携带某一个角色的身份特征。也就是说,可以先独立训练encoder+decoder_dst,获得了一个纯粹的编码器。然后固定encoder和decoder_dst参数,再嫁接一个decoder_src,只训练这个decoder_src的参数,也可以得到一个不错的万能模型?

此外,还想请教一下大佬,对于liae架构的模型,因为他们共享同一个decoder,所以inter_AB是必须要携带A的身份信息的,这样decoder才能知道什么时候解码出A。之所以liae训练久了会不像A,是因为inter_B把inter_AB的身份信息模糊掉了对吗?

如果采用其它方式来注入角色信息,比如像diffusion模型UNet那样在卷积层输出上加A的标签编码呢?那采用单encoder+decoder也可以做到类似于liae的效果,并且是显式注入身份信息,不用担心身份信息被模糊掉。
回复 支持 反对

使用道具 举报

7

主题

140

帖子

1150

积分

初级丹圣

Rank: 8Rank: 8

积分
1150

万事如意节日勋章

发表于 2025-5-25 05:15:33 | 显示全部楼层
好高深的理论,看不懂。大佬可以改一个支持fp16和fp32混合精度的dfl吗?
回复 支持 反对

使用道具 举报

9

主题

70

帖子

4449

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
4449
 楼主| 发表于 2025-5-25 10:14:25 | 显示全部楼层
本帖最后由 lispmox 于 2025-5-25 10:21 编辑
mjy9921130 发表于 2025-5-25 05:15
好高深的理论,看不懂。大佬可以改一个支持fp16和fp32混合精度的dfl吗?

我简单改过,训练很不稳定,采用默认的混合精度模式,bf16会不收敛,fp16直接nan了。即使从零开始训练也是这样,我暂时没有心思解决这个问题,我推测问题根子还是在SAEHD这种架构上会容易出现极端值,不那么容易量化。加一点batchnorm层可能会好一点,但是加哪里,怎么加要一点一点试,而且在DFL这种浅模型上改效果可能也不会很好。

说实话我感觉SAEHD这种架构用低精度训练的性能收益很小,其它的魔改版可能支持类似功能了吧,不过都没开源不知道他们是动了什么地方,抑或是我做混合精度的姿势不对。


我之前看你还回复过我同类问题,我上次忘记回了,这次再说明一下情况。bf16不收敛合fp16的nan在训练早期就出现了,还不如直接切换到tf32。而开启tf32精度训练只需要修改cudnn的全局参数就行,不需要大段修改DFL代码,你可以研究一下tensorflow框架如何修改cudnn的参数。

回复 支持 反对

使用道具 举报

QQ|Archiver|手机版|deepfacelab中文网 |网站地图

GMT+8, 2025-6-2 23:35 , Processed in 0.101102 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表