Let's say you and I grab dinner, and movie after lunch? 🌃📺😏
model
(MODEL
): Model to patchtarget_block
(COMBO
): Which block to target;input_block
,middle_block
, andoutput_block
multiscale_mode
(COMBO
): A list of available multiscale modes:["Default", "Bandpass", "Low-Pass", "High-Pass", "Pass-Through", "Gaussian-Blur", "Edge-Enhancement", "Sharpen", "Multi-Bandpass", "Multi-Low-Pass", "Multi-High-Pass", "Multi-Pass-Through", "Multi-Gaussian-Blur", "Multi-Edge-Enhancement", "Multi-Sharpen"]
multiscale_strength
(FLOAT
, Default: 1.0, Range: [0.0, 1.0], Step: 0.001): Strength of scalingb1_slice
(INT
, Default: 640, Range: [64, 1280], Step: 1): The size of the array slice for b1 operationb2_slice
(INT
, Default: 640, Range: [64, 640], Step: 1): The size of the array slice for b2 operationb1
(FLOAT
, Default: 1.1, Range: [0.0, 10.0], Step: 0.001):b1
output multiplierb2
(FLOAT
, Default: 1.2, Range: [0.0, 10.0], Step: 0.001):b2
output multipliers1
(FLOAT
, Default: 0.9, Range: [0.0, 10.0], Step: 0.001):s1
Fourier transform scale strengths2
(FLOAT
, Default: 0.2, Range: [0.0, 10.0], Step: 0.001):s2
Fourier transform scale strength
b1_mode
(COMBO
): Blending modes forb1
multiplied result.['bislerp', 'colorize', 'cosine interp', 'cuberp', 'hslerp', 'inject', 'lerp', 'linear dodge', 'slerp']
b1_blend
(FLOAT
, Default: 1.0, Range: [0.0, 100], Step: 0.001): Blending strength forb1
.b2_mode
(COMBO
): Blending modes forb2
multiplied result.['bislerp', 'colorize', 'cosine interp', 'cuberp', 'hslerp', 'inject', 'lerp', 'linear dodge', 'slerp']
b2_blend
(FLOAT
, Default: 1.0, Range: [0.0, 100], Step: 0.001): Blending strength forb2
.threshold
(INT
, Default: 1.0, Range: [1, 10], Step: 1): The exposed threshold value of the Fourier transform function.use_override_scales
(COMBO
): "true", or "false" on whether to useoverride_scales
override_scales
(STRING
, Default: [Multiline String]): Override scales. Create custom scales and experiment with results.- Example
10, 1.5
would create themultiscale_mode
effectSharpen
- You can use
#
,//
and!
to comment out lines.
- Example
@article{Si2023FreeU,
author = {Chenyang Si, Ziqi Huang, Yuming Jiang, Ziwei Liu},
title = {FreeU: Free Lunch in Diffusion U-Net},
journal = {arXiv},
year = {2023},
}
Distributed under the MIT License. See LICENSE
for more information.
Post-CFG Stepwise Hybrid Inject + Fourier Tuning.
- Runs after classifier-free guidance (CFG) merges cond/uncond each sampler step.
- Modifies the sampler’s current denoised tensor (in VAE latent space in typical pipelines), not model weights.
- Applies a hybrid blend between the denoised tensor and a scaled version, with optional frequency-domain shaping.
- Model predicts noise; CFG produces a denoised tensor for the current step.
- SHIFT blends
denoised
withdenoised * b
using the chosenmode
andblend
. - Optionally applies
Fourier_filter
with per-scale controls. - Applies a final
force_gain
multiplier.
mode
(combo): Blend strategy fordenoised
vsdenoised*b
.- Useful:
inject
(strong),stable_slerp
(smooth),lerp
(linear), etc.
- Useful:
blend
(float): Blend amount between base and scaled tensors.b
(float): Scale factor for the injected path. Higher = stronger effect.apply_fourier
(bool): Enable frequency-domain shaping.multiscale_mode
(combo): Preset shaping curves. Use stable options (e.g., Default, Pass-Through, Sharpen).multiscale_strength
(float): Intensity of multi-scale shaping.threshold
(int): Base radius in frequency mask.s
(float): Base scale value applied atthreshold
radius.force_gain
(float): Final multiplier to boost or attenuate the overall effect.debug_log
(bool): Prints one-time registration and periodic fire logs.
- SHIFT is always-on in Flux; attention/forward-timestep/wrapper paths are disabled for stability.
- If a multiscale preset yields flat/gray output, switch to a stable preset (e.g., Sharpen, Pass-Through) or tune
threshold
/s
.