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_blockmultiscale_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):b1output multiplierb2(FLOAT, Default: 1.2, Range: [0.0, 10.0], Step: 0.001):b2output multipliers1(FLOAT, Default: 0.9, Range: [0.0, 10.0], Step: 0.001):s1Fourier transform scale strengths2(FLOAT, Default: 0.2, Range: [0.0, 10.0], Step: 0.001):s2Fourier transform scale strength
b1_mode(COMBO): Blending modes forb1multiplied 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 forb2multiplied 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_scalesoverride_scales(STRING, Default: [Multiline String]): Override scales. Create custom scales and experiment with results.- Example
10, 1.5would create themultiscale_modeeffectSharpen - 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
denoisedwithdenoised * busing the chosenmodeandblend. - Optionally applies
Fourier_filterwith per-scale controls. - Applies a final
force_gainmultiplier.
mode(combo): Blend strategy fordenoisedvsdenoised*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 atthresholdradius.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.







