This PR aims at optimizing the scheduler defaults for stable diffusion pipelines.
Today I noticed by accident that the defaults values for beta_start, beta_end and beta_schedule that HF uses in all the schedulers that I implemented in the past 3 weeks are not optimal for stable diffusion. This is why some of the images generated were "not so good". For instance, as somebody was pointing out in my last PR, Euler Ancestral Discrete was not producing very good looking images (coherently with the results yielded by the Python version from huggingface). Here's a comparison of the "correct" defaults vs the current ones, using 21 inference steps and 1573789502 as seed
Here's the same comparison for Euler Discrete using the same seed and 15 inference steps.
.
Other produced images using Euler Ancestral Discrete:
The same applies to DDPM and DPM Multistep. DDIM and Heun Discrete already had these hyperparameters "appropriately" defaulted.
Lastly, I did some minor tweaks in a separate commit, just in case you prefer to keep the commit history cleaner merging them without squashing (assuming you find these contributions valuable :) )
This PR aims at optimizing the scheduler defaults for stable diffusion pipelines.
Today I noticed by accident that the defaults values for
beta_start
,beta_end
andbeta_schedule
that HF uses in all the schedulers that I implemented in the past 3 weeks are not optimal for stable diffusion. This is why some of the images generated were "not so good". For instance, as somebody was pointing out in my last PR, Euler Ancestral Discrete was not producing very good looking images (coherently with the results yielded by the Python version from huggingface). Here's a comparison of the "correct" defaults vs the current ones, using 21 inference steps and 1573789502 as seedHere's the same comparison for Euler Discrete using the same seed and 15 inference steps.
.
Other produced images using Euler Ancestral Discrete:
The same applies to DDPM and DPM Multistep. DDIM and Heun Discrete already had these hyperparameters "appropriately" defaulted.
Lastly, I did some minor tweaks in a separate commit, just in case you prefer to keep the commit history cleaner merging them without squashing (assuming you find these contributions valuable :) )