A custom experimental sampler based on relative distances. The first few steps are slower and then the sampler accelerates (the end is made with Heun).
The idea is to get a more precise start since this is when most of the work is being done.
Pros:
- Less body horror / merged fused people.
- Little steps required (4-10, recommanded general use: 7 with beta or AYS)
- Can sample simple subjects without unconditional prediction (meaning with a CFG scale at 1) with a good quality.
Cons:
- Slow, which is also a plus. Relax, the image is generating ⛱
Variations:
-
The variation having a "n" in the name stands for "negative" and makes use of the unconditional prediction so to determin the best output. The results may vary depending on your negative prompt. In general it seems to make less mistakes. This is what I sample with in general.
-
The "p" variation uses a comparison with each previous step so to enhance the result. In general things become smoother / less messy.
Potential compatibility issue:
If any error was to relate to tensors shape, uncomment these two lines in the file "presets_to_add.py":
extra_samplers["Distance_fast"] = distance_wrap(resample=3,resample_end=1,cfgpp=False,sharpen=False)
extra_samplers["Distance_fast_n"] = distance_wrap(resample=3,resample_end=1,cfgpp=False,sharpen=False,use_negative=True)
These are basically the same except they don't use a spherical interpolation at the end. The interpolation was made with latent spaces such as those used in Stable Diffusion in mind. These two alternatives use a weighted average instead (the difference is barely noticeable from my testing).
Examples below are using the beta scheduler. The amount of steps has been adjusted to match the duration has this sampler is quite slow, yet requires little amounts of steps.
left: Distance, 7 steps
right: dpmpp2m, 20 steps
Distance, 10 steps:
Distance n, 10 steps:
DPM++SDE (gpu), 14 steps:
CFG scale at 1 on a normal SDXL model (works for simple subjects):
Distance p with a CFG at 1 and 6 steps: