Nodes/FreeU_Advanced/FreeU V2 (Advanced Plus)
ComfyUI Node

FreeU V2 (Advanced Plus)

The Gentler, Smarter Detail Boost

By WASasquatch·Created 3 years ago·Updated 11 months ago· 123
FreeU V2 (Advanced Plus)
  • model
  • MODEL
input_blockfalse
middle_blockfalse
output_blockfalse
multiscale_mode
multiscale_strength1.000
slice_b1640
slice_b2320
b11.100
b21.200
s10.900
s20.200
threshold1
use_override_scales
override_scales# OVERRIDE SCALES # Sharpen # 10, 1.5

FreeU V2 is the answer to V1's biggest sin: that flat b1/b2 multiplier doesn't care where detail actually is. V1 boosts the same slice of channels everywhere, which is why pushing the gain too far makes things crunchy or blotchy. V2 scales the boost by a normalized mean activation map - the channels that are already doing something get boosted harder, the quiet ones stay quiet. Same idea, spatially aware, far less likely to blow out.

WAS_FreeU_V2 is WASasquatch's advanced version of that idea, from the same FreeU_Advanced pack as WAS_FreeU. It's the node I'd actually reach for on SDXL if I want FreeU-style detail without babysitting artifacts.

How it works

Mechanically it's the same skeleton as V1: it clones your model and registers block patches on the 1280-channel and 640-channel feature stages. The difference is in the gain. Instead of h[:, :slice] * b, V2 computes the per-pixel mean across channels, normalizes it to [0, 1], and applies:

h * ((b - 1) * hidden_mean + 1)

So at b = 1.1, active features get a ~1.1x push and inactive ones get barely anything. That's why you can run b values that would make V1 look like a sharpening filter went rogue.

A second difference you'll notice in the UI: instead of one target_block dropdown, V2 gives you three boolean toggles - input_block, middle_block, output_block - all defaulting to false.

The inputs that matter

  • model - from Load Checkpoint. Cloned, not modified.
  • input_block / middle_block / output_block - at least one must be true or the node does nothing. Output block is where the visible effect lives; enable it first.
  • b1 / b2 - gain for the 1280-ch and 640-ch slices. Defaults 1.1 / 1.2. Because the boost is activation-weighted, you've got more headroom to push these before artifacts than with V1.
  • s1 / s2 - Fourier scale at the threshold radius (0.9 / 0.2 defaults).
  • slice_b1 / slice_b2 - how many channels of each stage get the treatment (640 / 320 defaults).
  • multiscale_mode / multiscale_strength - the frequency-shaping preset and its intensity; Default is the safe pick.

Optional: threshold (Fourier mask radius) and use_override_scales / override_scales for hand-typed radius, scale pairs (#, //, ! start comments). Output is a single patched MODEL that replaces the checkpoint output into your KSampler.

Installing it

Same pack as WAS_FreeU and Post-CFG SHIFT. Via ComfyUI Manager, search FreeU_Advanced, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/FreeU_Advanced

Then restart ComfyUI. No requirements.txt, no model downloads - it's torch FFT under the hood, which ComfyUI already ships. It lives in the _for_testing category, so check the test section of the node menu.

Troubleshooting

  • No effect? You almost certainly left all three block toggles off. It's the one genuinely easy-to-miss trap in this node.
  • Still no effect on a modern model? The 1280/640 channel hooks only exist in SD-class UNets. On Flux and other transformer architectures it does nothing - that's what the pack's Post-CFG SHIFT node is for.
  • Gray or washed output with an exotic multiscale preset? Switch to Sharpen or Pass-Through, or lower threshold / s1 / s2.

FreeU V2 doesn't call any API and needs no key, no LoRA, no training - it's a "free lunch" that's just smarter about where it serves the food.

Category_for_testing

Inputs (15)

NameTypeDefaultDescription
modelMODEL
input_blockBOOLEANfalseEnable patching on the input block.
middle_blockBOOLEANfalseEnable patching on the middle block.
output_blockBOOLEANfalseEnable patching on the output block.
multiscale_modeCOMBOFrequency shaping preset used by Fourier_filter.
multiscale_strengthFLOAT1.0000–1Intensity of multi-scale shaping [0-1].
slice_b1INT64064–1280Slice width (channels) affected in 1280-channel features.
slice_b2INT32064–640Slice width (channels) affected in 640-channel features.
b1FLOAT1.1000–10Gain multiplier for 1280-channel slice.
b2FLOAT1.2000–10Gain multiplier for 640-channel slice.
s1FLOAT0.9000–10Fourier scale at threshold for 1280-ch features.
s2FLOAT0.2000–10Fourier scale at threshold for 640-ch features.
thresholdoptINT11–10Base radius for the Fourier mask.
use_override_scalesoptCOMBOEnable manual override of scale presets.
override_scalesoptSTRING# OVERRIDE SCALES # Sharpen # 10, 1.5Custom scale lines: '<radius>, <scale>'. Comments with #,//,!

Outputs (1)

NameTypeDescription
MODELMODEL