Nodes/ComfyUI_FreeU_V2_advanced/FreeU B (Backbone)
ComfyUI Node

FreeU B (Backbone)

The backbone half of FreeU V2, for when Fourier is the problem

By Shiba-2-shiba·Created 2 years ago·Updated 10 months ago· 2
FreeU B (Backbone)
  • model
  • MODEL
b11.30
b21.40
b_start_percent0.000
b_end_percent0.350
channel_threshold96
verbose_loggingfalse

FreeU V2 has two independent halves: a backbone boost (the "B" part) and a Fourier dampening of the skip connections (the "S" part). If you've ever tuned FreeU and found that the skip-connection side is what's wrecking your image - the waxy over-sharpening, the weird texture smears - you only wanted half of it. This node is that half: the backbone scaling alone, applied during the early phase of sampling, with no Fourier filtering anywhere in sight.

What it does

Where the full FreeU node mixes both mechanisms together, FreeU_B_Scaling only patches the backbone path. It boosts the first half of the channels in the 1280- and 640-channel UNet blocks by a spatially-adaptive factor - the V2 refinement that scales each spatial region by its normalized channel-mean intensity rather than multiplying everything flatly. There's a nice robustness touch in here too: instead of matching channel counts exactly, it matches blocks within ±channel_threshold (default 96) of the targets, so it survives architecture differences across model families without silently doing nothing.

Like the pack's other nodes, it's sigma-gated. b_start_percent (default 0) and b_end_percent (default 0.35) define the window, and the patch only fires while the current sigma is inside it. That makes the default behavior: backbone boost in the first third of the denoising pass, off for the rest. The README's intended usage is to run this node in the first half of generation and chain in the S node (FreeU_S_Scaling_AdaptiveCap) for the second half - which is why this one's defaults end where the S node's start.

The inputs

  • b1 (default 1.3) and b2 (default 1.4) - backbone scale for the 1280- and 640-channel blocks. Above 1.0 strengthens the backbone features.
  • b_start_percent (0) and b_end_percent (0.35) - the timestep window.
  • channel_threshold (96) - how close a block's channel count must be to 1280/640 to count as a match. Usually leave it.
  • verbose_logging (false) - prints sigma and channel info per application, useful if you suspect it isn't firing.

The single MODEL output is the patched model, wired into the KSampler (after FreeU_S_Scaling_AdaptiveCap if you're chaining them).

Notes and gotchas

Backbone-only scaling is the gentler half of FreeU - b-values carry less artifact risk than s-values, so this is a reasonable thing to push higher than the defaults if you want more structure without the mush. One honest caveat: since it only touches the backbone, its effect on its own is subtler than the full FreeU node's. If you're coming from a workflow that used one combined FreeU node, the pair of split nodes will feel like more nodes for the same result - which is the point, they're more controllable, not simpler.

Older releases of this pack had a real bug here where the end-percent was compared against the wrong sigma, so the window silently misbehaved; the current source has that fixed, so if you're on an old install, update rather than debugging phantom behavior. Other than that: install via ComfyUI Manager (search "ComfyUI_FreeU_V2_timestepadd") or clone into custom_nodes/, restart, and it's zero-dependency - no pip packages, no model downloads. It uses the newer V3 node API, so it needs a current ComfyUI build to register at all.

Categorymodel_patches/unet

Inputs (7)

NameTypeDefaultDescription
modelMODEL
b1FLOAT1.300–10
b2FLOAT1.400–10
b_start_percentFLOAT0.0000–1
b_end_percentFLOAT0.3500–1
channel_thresholdINT960–256
verbose_loggingBOOLEANfalse

Outputs (1)

NameTypeDescription
MODELMODEL