https://github.com/wasasquatch/freeu_advanced
FreeU - Free Lunch, and Dinner.
https://github.com/wasasquatch/freeu_advanced
Last synced: 10 months ago
JSON representation
FreeU - Free Lunch, and Dinner.
- Host: GitHub
- URL: https://github.com/wasasquatch/freeu_advanced
- Owner: WASasquatch
- License: mit
- Created: 2023-09-23T20:49:15.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-09-29T15:46:06.000Z (10 months ago)
- Last Synced: 2025-10-10T01:32:26.292Z (10 months ago)
- Language: Python
- Size: 37.1 KB
- Stars: 119
- Watchers: 3
- Forks: 11
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FreeU Advanced Plus (And Post-CFG SHIFT)
Let's say you and I grab dinner, and movie after lunch? ๐๐บ๐

### Exmaple of default node settings applied across blocks.







## Input Parameters
- `model` (`MODEL`): Model to patch
- `target_block` (`COMBO`): Which block to target; `input_block`, `middle_block`, and `output_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 scaling
- `b1_slice` (`INT`, Default: 640, Range: [64, 1280], Step: 1): The size of the array slice for b1 operation
- `b2_slice` (`INT`, Default: 640, Range: [64, 640], Step: 1): The size of the array slice for b2 operation
- `b1` (`FLOAT`, Default: 1.1, Range: [0.0, 10.0], Step: 0.001): `b1` output multiplier
- `b2` (`FLOAT`, Default: 1.2, Range: [0.0, 10.0], Step: 0.001): `b2` output multiplier
- `s1` (`FLOAT`, Default: 0.9, Range: [0.0, 10.0], Step: 0.001): `s1` Fourier transform scale strength
- `s2` (`FLOAT`, Default: 0.2, Range: [0.0, 10.0], Step: 0.001): `s2` Fourier transform scale strength
### Optional Parameters
- `b1_mode` (`COMBO`): Blending modes for `b1` 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 for `b1`.
- `b2_mode` (`COMBO`): Blending modes for `b2` 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 for `b2`.
- `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 use `override_scales`
- `override_scales` (`STRING`, Default: [Multiline String]): Override scales. Create custom scales and experiment with results.
- Example `10, 1.5` would create the `multiscale_mode` effect `Sharpen`
- You can use `#`, `//` and `!` to comment out lines.
### FreeU BibTex
```
@article{Si2023FreeU,
author = {Chenyang Si, Ziqi Huang, Yuming Jiang, Ziwei Liu},
title = {FreeU: Free Lunch in Diffusion U-Net},
journal = {arXiv},
year = {2023},
}
```
## :newspaper_roll: License
Distributed under the MIT License. See `LICENSE` for more information.
---
## Post-CFG SHIFT (Flux)
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.
### How it works
1) Model predicts noise; CFG produces a denoised tensor for the current step.
2) SHIFT blends `denoised` with `denoised * b` using the chosen `mode` and `blend`.
3) Optionally applies `Fourier_filter` with per-scale controls.
4) Applies a final `force_gain` multiplier.
### Parameters
- `mode` (combo): Blend strategy for `denoised` vs `denoised*b`.
- Useful: `inject` (strong), `stable_slerp` (smooth), `lerp` (linear), etc.
- `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 at `threshold` radius.
- `force_gain` (float): Final multiplier to boost or attenuate the overall effect.
- `debug_log` (bool): Prints one-time registration and periodic fire logs.
### Notes
- 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`.