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

直接反演结果偏洋红色 #39

Closed xuyu666 closed 9 months ago

xuyu666 commented 11 months ago

哈喽哥,最近在使用DragDiffusion的时候发现,单张真实图像经过Lora后,不采用Drag的方式出来(直接反演run),结果会比原图偏向洋红色(多张实验结果都是这样),想问下您有什么方法解决么~ 输入图(左),输出图(右) image

image

image

Yujun-Shi commented 11 months ago

哈喽,两个可能的解决思路哈:1)LoRA的训练步数稍微多一点;2)inversion strength稍微调小一点(比如0.6~0.7的样子)

xuyu666 commented 11 months ago

谢谢,我尝试这两个解决思路后,效果仍然偏洋红色,想问下你使用的时候存在这样的现象么,能否展示下你那边的结果~ 原图如下: source_image

Yujun-Shi commented 11 months ago

我刚才尝试了一下,我估计是因为图片的插值的问题。因为我这边每次输入一张图片之后,都会在维持原图片长宽比情况下把宽resize到512。估计是resize的时候引入的这个artifacts。

xuyu666 commented 11 months ago

谢谢你,我多尝试下512原分辨率的图。其实我有点怀疑是不是Stablediffusion框架自身的存在的偏移或者其训练数据的整体偏移哈哈<惊讶> 相关文章链接: https://github.com/Sygil-Dev/sygil-webui/issues/457 https://www.reddit.com/r/StableDiffusion/comments/ydwnc3/good_news_vae_prevents_the_loopback_magenta_skew/?rdt=39381

Yujun-Shi commented 10 months ago

对,我确实比较倾向于认为可能是vae的问题。就是vae本身encode这个图片的过程也没有特别完美

xuyu666 commented 10 months ago

针对这个问题,我做了以下实验: 1、直接VAE反演 --》输出存在红色偏移。 2、使用单张输入图对 VAE 的decoder进行微调,红色偏移消除。 3、将微调后的VAE加入SD过程,反演图恢复正常。--》说明采样过程影响较小? 4、经过编辑后,中间向量的变化导致最终的结果图仍然色彩不对应(尽管有 mask区域的损失监督)。

针对编辑过程改变中间向量,导致最终结果仍然效果不对的情况(即使对单张输入图进行VAE微调,使其能正确反演),你有什么好的建议么~

Yujun-Shi commented 9 months ago

我的理解是:微调vae的decoder可能会导致decoder在给定原图上的过拟合。所以在编辑过后,可能还是无法比较好的处理编辑后的latent。我个人认为最终这种artifact的解决还是要靠更好的模型。因为可能现在vae的channel数(4个channel)还是太低了,会造成比较严重的信息损失。 参考这篇文章:https://arxiv.org/abs/2309.15807 他们就提出,把vae的channel数增多可以解决一些经典的artifacts。我感觉用这种策略应该也可以缓解你遇到的颜色偏移的问题。

但是不幸的是,这个模型似乎不会开源。。。

当然,我后续会update一下看看更好的开源模型(比如stablediffusion-xl)会不会稍微好一些。

xuyu666 commented 9 months ago

好的,谢谢你耐心的回复,这个文章我也有注意到,确实是vae自身上限的问题~