Nodes/tulut_comfyui_Gadget/Tulut Face Detailer
ComfyUI Node

Tulut Face Detailer

Repair anime faces that crumbled in a full-body render, without leaving the graph

By Tulut114·Created 3 months ago·Updated about a month ago· 3
Tulut Face Detailer
  • image
  • model
  • clip
  • vae
  • upscale_model
  • IMAGE
  • MODEL
  • CLIP
  • VAE
  • UPSCALE_MODEL
lllite_name
prompt
neg_prompt
guide_size512
steps35
cfg4.5
denoise0.45
character_index0
seed0

A face that only gets 70 pixels of a 1024-frame comes out as a smear no matter how good the checkpoint is - the latent simply has no budget to spend there. That's the exact problem this node exists for. Tulut Face Detailer is part of Tulut's tulut_comfyui_Gadget pack, a detect-crop-redraw detailer aimed at full-body anime shots where the face collapses from pixel starvation. It's built around Anima, but the loop it runs is the same one Impact Pack and ADetailer made famous: find the face with YOLO, crop and upscale it, run a fresh sampling pass, paste it back.

How it works

The node runs the whole loop in one shot. A YOLOv8 detector finds faces, each bounding box gets a 25% padding crop for context, your upscale_model upscales the crop, and it's resampled to guide_size (rounded to a multiple of 8). Then it builds an asymmetric mask - more padding on top, less on the bottom, feathered with a Gaussian blur so the seam mostly disappears - encodes to latent, runs a KSampler (hardcoded to dpmpp_2m_sde / sgm_uniform, which suits Anima) with your denoise, and blends the result back. Optionally it injects an AnimaLLLite model into the sampling, which is the pack's signature trick: no external wiring, you just pick the model in the node.

The inputs that matter

  • image, model, clip, vae - your render and your checkpoint trio, standard.
  • upscale_model - required, and it matters. Feed it something like a CUGAN or any ESRGAN-family model; the crop is upscaled with it before the redraw, and the README's whole argument is that hardware upscaling keeps line art crisp.
  • prompt / neg_prompt - the redraw prompt. Keep it close to your main prompt, since the node doesn't pull it from anywhere; an empty prompt makes the pass pretty aimless.
  • guide_size - how big the face gets before redrawing. Default 512, and honestly that's plenty for a face crop; going higher costs VRAM for little gain.
  • denoise - default 0.45. This is the dial you'll actually tune. Too low and the face stays soft; too high and you get a different face with a visible seam.
  • steps / cfg / seed - sampler settings. character_index picks which detected face to fix (0 = all of them, sorted left-to-right).
  • lllite_name - AnimaLLLite selection, default "none". See below.

Outputs are the refined IMAGE plus pass-through MODEL, CLIP, VAE, and UPSCALE_MODEL - so you can chain detailers in series without rerunning loaders.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/Tulut114/tulut_comfyui_Gadget

Restart ComfyUI. Two things the README will not save you from:

  1. ultralytics isn't in requirements.txt. The pack only declares Pillow. Without pip install ultralytics opencv-python in your ComfyUI environment, the detailer nodes don't even appear - the import is wrapped in a try/except that swallows the failure.
  2. The YOLO model has to be present, with the exact filename the code expects. Drop it in ComfyUI/models/ultralytics/bbox/ (the node creates the folder). Here's the trap: the README says the face detector is face_yolov8m.pt, but the shipped code actually loads yolov8x6_animeface.pt. Rename whatever face detector you have to match the code, or nothing gets detected.

Troubleshooting

  • "Nothing happened" - image comes back identical. The classic. If the .pt file is missing or the name doesn't match, the node logs a warning and returns the original image unchanged. No error, no red node. Check the console first.
  • Wrong face, or no face found. Run the pack's Tulut YOLO Preview node first: it draws the boxes with their index numbers, so you can confirm detection and tune the confidence before spending a sampling pass.
  • A different person's face, or seams. Denoise too high gives identity drift; drop toward 0.3–0.4. Feathering is baked in, so persistent seams usually mean the mask padding didn't cover what changed.
  • LLLite barely does anything. The Anima LLLite ecosystem is young - the community's own verdict is that these models are weak on the 1.0 base (the KB's controlnet doc quotes users calling them "much weaker on the 1.0 base release"). It's a nice-to-have, not the main event; the detect-upscale-redraw loop is what's doing the work.

One more honest note: this whole YOLO stack runs on Ultralytics, which is AGPL and had a real supply-chain scare in December 2024. Fine for personal use, but know what you're pulling into your machine.

CategoryTulut/Detailer

Inputs (14)

NameTypeDefaultDescription
imageIMAGE
modelMODEL
clipCLIP
vaeVAE
upscale_modelUPSCALE_MODEL
lllite_nameCOMBO1 options: none
promptSTRING
neg_promptSTRING
guide_sizeINT512256–1024
stepsINT351–100
cfgFLOAT4.51–12
denoiseFLOAT0.450.01–1
character_indexINT00–10
seedINT00–18446744073709550000

Outputs (5)

NameTypeDescription
IMAGEIMAGE
MODELMODEL
CLIPCLIP
VAEVAE
UPSCALE_MODELUPSCALE_MODEL