Nodes/Krea2 Regional/Krea2 Apply Regional
ComfyUI Node

Krea2 Apply Regional

Krea2 Apply Regional

By januspluto·Created 2 months ago·Updated about a month ago· 9
Krea2 Apply Regional
  • model
  • conditioning
  • regions
  • base_loras
  • MODEL
  • CONDITIONING
restrict_img_attnfalse
exclusive_maskstrue
adaptive_masksoff
adaptive_steps2
adaptive_threshold0.45
base_loras_exclude_regionsfalse
region_lock_strength0.00
region_lock_start0.35
region_lock_end0.85
restrict_end_percent1.00
unmaskable_layersskip

If you've put two character LoRAs in one Krea 2 image, you know the failure: one blended face with both identities averaged into mush. This is the node that fixes that - it's the engine room of the Krea2 Regional pack. The Builder is where you draw boxes and type prompts; Apply Regional is what actually makes the model respect them, in a single generation pass.

The name is accurate in a way you don't see often: it really does apply regional prompting and per-region LoRA at the same time, and it doesn't call any API or need a key.

Why it's different from the old way

Regional prompting on SD-era models meant N separate passes - run the sampler once per region, mask-blend the results, pay the cost N times and pray the seams lined up. Krea 2 is a single-stream MMDiT: text and image tokens share every attention operation in one sequence. This pack exploits that. Apply Regional concatenates your base prompt and every region prompt into one text sequence, then installs a joint attention mask that says "region 2's prompt may only attend to region 2's image tokens." One forward pass per step, not one per region. The KB's regional-prompting panel calls the N-pass approach "the standing answer" to attribute bleeding - this is the faster, single-pass upgrade to that answer.

LoRAs get the same treatment. A LoRA is a weight delta, which you can't spatially mask - so the node gates it per token: the adapter's output is multiplied by the region mask before adding to the base. Outside the box, the effect is zero. That's a hard spatial guarantee rather than an attention nudge the model can ignore.

Inputs that matter

The three required inputs are exactly what you'd guess: your Krea 2 MODEL, the base CONDITIONING, and the KREA2_REGIONS object from the Builder. Then come the levers, in rough order of how often you'll touch them:

  • restrict_img_attn - blocks image↔image attention across regions. The strongest anti-bleed lever, and the one that can make things look collaged if you leave it on the whole run. Pair it with restrict_end_percent (0.4–0.6) to hold hard isolation while identities form, then release for seam integration.
  • adaptive_masks - FreeFuse-style routing: watch where the model actually places each subject in the first couple of steps, then snap the region masks to those silhouettes. "refine boxes" keeps discovery inside your boxes; "free" lets regions land anywhere.
  • exclusive_masks (on by default) - where grown masks overlap, each token keeps only its strongest region, so two boxes don't double-apply LoRAs in the gap.
  • region_lock_strength - latent-only anchoring: snapshot each region's predicted-clean latent once identity forms and pull it back toward the snapshot each step. 0.2–0.4 anchors; 0.7+ freezes hard.
  • base_loras_exclude_regions - style/base LoRAs apply everywhere except inside subject regions, so a style LoRA doesn't contaminate character LoRAs.

Outputs are a patched MODEL and the combined CONDITIONING - wire both into your KSampler (MODEL → model, CONDITIONING → positive) and sample as usual.

Install

ComfyUI Manager (search Krea2 Regional), or clone it manually:

cd ComfyUI/custom_nodes
git clone https://github.com/januspluto/ComfyUI-Krea2-Regional.git

Restart ComfyUI. It needs a build with native Krea 2 support (v0.26+, tested against 0.29–0.30) and carries no extra Python dependencies. It won't download the Krea 2 weights - you still need the Krea 2 checkpoint, the Qwen3-VL text encoder and the Qwen-Image VAE files yourself.

Where people get burned

The classic failure - subjects not lining up with your boxes - is usually not this node's fault: the Builder's layout_in_base has to be on for the position signal to reach the model. Soft LoRA bleed at boundaries is inherent to single-pass regional attention; that's the price of coherent seams, and it's what adaptive_masks and the detailer exist to fix. For absolute separation you can always fall back to ComfyUI's native multi-pass ConditioningSetMask approach - at N times the step cost.

Categoryconditioning/krea2_regional

Inputs (15)

NameTypeDefaultDescription
modelMODEL
conditioningCONDITIONING
regionsKREA2_REGIONS
restrict_img_attnBOOLEANfalseBlock image<->image attention across regions. Strongest anti-bleed lever; can look collaged.
exclusive_masksBOOLEANtrueWhere grown/feathered region masks overlap, each token keeps only its strongest region (no double LoRA in the gap).
adaptive_masksCOMBOoffFreeFuse-style adaptive routing: watch where the model actually places each subject during the first steps (prompt-token/image-token attention), then snap the region masks to those silhouettes. 'refine boxes' keeps discovery inside your (slightly grown) boxes; 'free' lets regions land anywhere.
adaptive_stepsINT21–8How many model calls to observe before snapping the masks.
adaptive_thresholdFLOAT0.450.05–0.95Affinity cutoff (fraction of each region's peak). Lower = larger discovered regions.
base_loras_exclude_regionsBOOLEANfalseStyle/base LoRAs apply everywhere EXCEPT inside the subject regions — keeps a style LoRA from contaminating character LoRAs.
region_lock_strengthFLOAT0.000–1Latent-only Region Lock: snapshot each region's predicted-clean latent once identity has formed and pull it back toward that snapshot each step. Suppresses late-step drift/mutation inside regions. 0 = off; 0.2-0.4 anchors, 0.7+ freezes hard.
region_lock_startFLOAT0.350–0.95When (as a fraction of the schedule) to take the snapshot.
region_lock_endFLOAT0.850.05–1When to release the lock so the model can integrate seams and lighting.
restrict_end_percentFLOAT1.000.05–1When restrict_img_attn is on: release the image<->image isolation at this fraction of the schedule. Identity locks in during the restricted window; the open steps afterwards integrate seams and lighting. 1.0 = restricted for the whole run (classic). 0.4-0.6 is a good cohesion sweet spot.
base_lorasoptKREA2_LORAS
unmaskable_layersoptCOMBOskipSome LoRA layers (timestep/modulation embedders from newer trainers) have no spatial token axis and can't be region-masked. 'skip' drops them from REGION LoRAs (safest for isolation); 'apply globally' keeps their full effect but it touches the whole image.

Outputs (2)

NameTypeDescription
MODELMODEL
CONDITIONINGCONDITIONING