Yujun-Shi / DragDiffusion

[CVPR2024, Highlight] Official code for DragDiffusion
https://yujun-shi.github.io/projects/dragdiffusion.html
Apache License 2.0
1.13k stars 82 forks source link

Lora 速度优化建议 #43

Closed xuyu666 closed 9 months ago

xuyu666 commented 11 months ago

lora_utils.py文件中,将这段代码移出“Lora training循环”中,貌似可提高速度的同时不影响精度~ 批注 2023-10-17 114312

实验环境: image

原始: image image - 2023-10-17T113742 269 代码优化后: image image - 2023-10-17T113532 789

Res矩阵(应该数值裁剪的差距): image

xuyu666 commented 10 months ago

更新内容: vae的采样代码不可放在循环代码外,为了保证每次采样的随机性。

更正后如下: image

速度对比: image image

cbh1733908441 commented 9 months ago

@xuyu666 请问能看看改进后的完整代码吗?image_transformed没有定义

xuyu666 commented 9 months ago

对于这个情况,我的理解是过vae encoder这段代码可以移出循环外,因为权重和输入都没有改变。

Yujun-Shi commented 9 months ago

哈罗。这里其实移出循环的话还是会跟原来实现上有所不一样。 这是因为 1)对于你编辑的正方形的图片,image_transforms没问题。但如果编辑的是一个长方形的图片,你只apply一次image_transforms的话,他就只crop了一块正方形区域进行训练。但我们希望的是每次crop不同的正方形区域训练,这样才能更好的维持原图的identity。 2)虽然vae参数是fixed的,但是每次vae的forward之后都会有一个sampling的过程(具体就是latent_dist.sample()那行代码)。这里也是会在训练的时候提供多样性的。

这个issue我暂时关闭了哈,有问题的话可以reopen我们再讨论