HyperLoRA Base Cond
An image with the face blurred out
- hyper_lora
- images
- face_attr
- BASE_COND
- IMAGE
Here's the design decision that makes HyperLoRA interesting: it doesn't put everything in one LoRA. The paper explicitly splits the work into a Hyper ID-LoRA for the face and a Hyper Base-LoRA for everything else - background, clothing, scene. This node is the base half's preprocessing. It takes your reference images, blurs the face out, and produces the BASE_COND that a separate hyper-network branch turns into the base LoRA weights. The logic is simple and worth understanding: if you want a LoRA that captures "this room, this outfit" without also capturing "this face," you have to remove the face from what the model sees.
What it does
Given the FACE_ATTR landmarks it does two things in sequence:
- Face removal - it crops the face region, applies a heavy Gaussian blur (radius ~45), and pastes the blur back over the face in the original image. The identity is destroyed; the scene survives.
- Optional crop -
crop(default on) trims the image around the face bounding box so the base condition is composed around the subject.crop_scale_LRTBis aleft,right,top,bottommultiplier string (default1,1,1,1), andsafe_crop(default on) clamps the crop to the image edges instead of erroring on out-of-bounds coordinates.
Outputs: the BASE_COND (feeds HyperLoRAGenerateBaseLoRA) and a preview IMAGE so you can confirm the face actually got blurred out and the scene survived.
When you actually need it
Honest answer: not very often, for the released v1 models. The README notes the v1 weights were distilled so the 0.25× base LoRA is already folded into the ID LoRA - that's the "further reduced the model size and GPU memory usage" line. The base-LoRA machinery only activates when your config has has_base_lora true, which requires a model that ships a base_resampler.safetensors. If you're on the stock sdxl_hyper_id_lora_v1_fidelity or _edit weights, this node is optional - the default config leaves the base branch off, and the UniLoader hardcodes it off too.
You'd reach for it if you ever run a variant or a custom HyperLoRA that ships the base resampler, or if you want to experiment with splitting identity and scene yourself. The paired image rule from the README applies to any conditioning you build here: for a Concept Slider or scene LoRA, change only the attribute you care about, and keep ID and pose fixed.
Installing
Identical to the rest of the pack: ComfyUI Manager → "ComfyUI-HyperLoRA", or git clone https://github.com/bytedance/ComfyUI-HyperLoRA into custom_nodes, pip install -r requirements.txt, restart. It uses the CLIP processor/model under models/hyper_lora/ and the InsightFace detector (via FaceAttr) under models/insightface/models/; the README's folder tree is the source of truth for both.
Gotchas
Same "No face detected!" failure mode as its sibling nodes - the blur step needs landmarks, so it can't work without a face. And the crop_scale_LRTB string trips people up: it's four comma-separated floats in left, right, top, bottom order, not width/height. If you nudge it, safe_crop being on is what keeps a bad value from throwing - leave it on.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| hyper_lora | HYPER_LORA | — | |
| images | IMAGE | — | |
| face_attr | FACE_ATTR | — | |
| crop | BOOLEAN | true | — |
| crop_scale_LRTB | STRING | 1,1,1,1 | — |
| safe_crop | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| BASE_COND | BASE_COND | — |
| IMAGE | IMAGE | — |