stable-diffusion.cpp
stable-diffusion.cpp copied to clipboard
denoiser.hpp: simplify DPM++ (2S) Ancestral
DPMPP2S_A: https://github.com/leejet/stable-diffusion.cpp/blob/10c6501bd05a697e014f1bee3a84e5664290c489/denoiser.hpp#L686 Current formula:
if (sigma_down == 0) {
d = (x - denoised) / sigmas[i];
dt = sigma_down - sigmas[i];
x += d * dt;
}
Since sigma_down == 0
=> dt == -sigmas[i]
=> d * dt == (x - denoised) / sigmas[i] * (-sigmas[i]) == denoised - x
=> x = x + denoised - x
=> x = denoised
Proof:
| Before | After |
|---|---|
Images are almost same. And thank you for the program.