Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

what is the reason for the different results for DetailDaemonSamplerNode and LyingSigmaSamplerNode? #8

Open
binarytahr opened this issue Nov 12, 2024 · 4 comments

Comments

@binarytahr
Copy link

thanks for write and share this useful node, it can add details without needing lora and keep composition and content unchanged.
according to the info in README.md, if I understand correctly, the following two nodes should get the same result:
DetailDaemonSamplerNode(detail_amount = 0.5, start=0.3, end=0.9, bias=0.5, exponent=0, start_offset=0, end_offset=0, fade=0, smooth=False, cfg_scale_override=1)
LyingSigmaSamplerNode(dishonesty_factor = 0.05, start_percent = 0.3, end_percent = 0.9)
but after some test with Comparing Detailers.json and flux.1-dev / sd3.5-large, the results are quiet different. am i missing some thing or what is the reason for the different results.

DetailDaemonSamplerNode:
image
image

LyingSigmaSamplerNode
image
image

@Jonseed
Copy link
Owner

Jonseed commented Nov 12, 2024

Detail Daemon and Lying Sigma are similar but not exactly the same. You can't get the exact same result from both.

Also dishonesty_factor in Lying Sigma should be negative, so -0.05. If you make it positive, then you are simplifying the image, not adding detail.

@binarytahr
Copy link
Author

i apologize for making a typo and missing a minus sign.
actually, those test images above were generated by LyingSigmaSamplerNode with negative value.

i have tried to read your code yesterday, but i am totally an amateur when it comes to programming code, so it is a little hard for me to understand it clearly.
for the way the detail parameter is handled in both two nodes, it seems that the results should be the same without smooth:

  • LyingSigmaSamplerNode:
    sigma = sigma * (1.0 + lss_dishonesty_factor)
  • DetailDaemonSamplerNode
    dd_adjustment = get_dd_schedule(sigma_float, sigmas_cpu, dd_schedule) * 0.1
    adjusted_sigma = sigma * max(1e-06, 1.0 - dd_adjustment * cfg_scale)

i will continue try to understand the actual difference between this two nodes today.

@Jonseed
Copy link
Owner

Jonseed commented Nov 13, 2024

The main difference between the two is that Detail Daemon by default gradually adjusts the sigmas throughout the denoising process (which you can graph with the graphing node), whereas Lying Sigma makes an abrupt change in sigmas. If you adjust things like the exponent and smooth on Detail Daemon you can get something similar (an abrupt change in sigmas), which should output something similar to Lying Sigma.

@binarytahr
Copy link
Author

thanks for your explanation.
during my test, DetailDaemonSamplerNode was run with exponent=0 smooth=False, so it made the similar abrupt change with LyingSigmaSamplerNode.
the reason i am curious about their difference is their different performance with different models. with the parameters kept unchanged, DetailDaemonSamplerNode's performance is quiet unstable when used with different models , sometimes left just the right amount of noise, sometimes left too much noise. LyingSigmaSamplerNode is more relatively stable between flux.1-dev and sd3.5-large.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants