Tulut Person Detailer
Give a whole anime character its own resolution budget
- image
- model
- clip
- vae
- upscale_model
- IMAGE
- MODEL
- CLIP
- VAE
- UPSCALE_MODEL
When you render a full-body anime shot, the whole figure starves for pixels - not just the face. The Tulut Person Detailer is the sibling of the pack's face, hand, and foot nodes, but instead of a tiny region it redraws an entire detected character. Think of it as "give this one person a fresh pass at real resolution," which is a different job from spot-fixing a hand and worth having as its own node.
What it does differently
The mechanism is the same detect-crop-upscale-redraw-paste loop as the other Tulut detailers: a YOLOv8 model finds the person, the crop gets 25% context padding, your upscale_model blows it up, it's resampled to guide_size, and a masked KSampler pass with your denoise re-renders it before the result is feathered back onto the original.
The differences are the defaults and the detector. This node hunts with anime_person_yolov8v1.3s.pt at a more forgiving confidence (0.35, versus 0.50 for the face node), and its guide_size defaults to 768 with a 1536 ceiling - the biggest crop in the pack, because a person needs far more pixels than a face before the redraw can add anything. Denoise defaults lower too (0.40): a whole character is most of the image, so you're resampling near-inpainting territory and heavy redraws start changing the subject instead of repairing it.
The inputs that matter
image,model,clip,vae,upscale_model- the render, your checkpoint trio, and a real upscaler (CUGAN or any ESRGAN-family model; the crop is upscaled before redrawing).prompt/neg_prompt- the redraw prompt. Since it covers most of the frame, keep it faithful to the main prompt or you'll get a different outfit in the same pose.guide_size- default 768, up to 1536. This is your quality-vs-VRAM knob, and on a small card you'll feel it fast.denoise- default 0.40. Lower than the face node on purpose; start there.steps/cfg/seed- sampler settings (the sampler is hardcoded todpmpp_2m_sde/sgm_uniform).character_index- 0 fixes everyone detected; 1+ picks the Nth character by left-to-right order.lllite_name- optional AnimaLLLite injection, default "none".
Outputs: the refined IMAGE and pass-through MODEL, CLIP, VAE, UPSCALE_MODEL, so you can run a person pass and then a face pass in series without reloading anything.
Install and setup
cd ComfyUI/custom_nodes
git clone https://github.com/Tulut114/tulut_comfyui_Gadget
Restart ComfyUI. The same two gotchas as the rest of the pack: ultralytics and opencv-python are not in requirements.txt (only Pillow is), so install them yourself or the whole detailer half silently fails to register. And the YOLO model must sit in ComfyUI/models/ultralytics/bbox/ under the exact name the code loads - for this node that's anime_person_yolov8v1.3s.pt.
Where it trips people up
- The image comes back identical. Missing
.ptfile, or the name doesn't match. The node warns in the console and returns the original unchanged - no crash, so it's easy to miss. - It changed the character. Denoise up near 1.0 on a near-full-frame mask is basically regeneration. If the person comes back looking like a different character, drop denoise toward 0.3 and re-check your redraw prompt.
- VRAM. A 1536
guide_sizecrop on top of your base render can blow past what a small card holds. This is the one Tulut node where I'd run the preview node first to confirm what's being detected, then keepguide_sizeas low as you can live with. - One seed, many people. Every detected region re-renders with the same seed, which is how a crowd becomes a room of clones - the classic auto-detailer failure the KB documents. Use
character_indexto limit the pass to one person, or accept it.
The honest read: this node is the closest thing in the pack to a general "make the character look better" button, which makes it the easiest to overuse. Reach for it when the figure is genuinely under-resolved, not when the render is already sharp - a second full-body pass on a clean image just pays render time for nothing.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| upscale_model | UPSCALE_MODEL | — | |
| lllite_name | COMBO | 1 options: none | |
| prompt | STRING | — | |
| neg_prompt | STRING | — | |
| guide_size | INT | 768256–1536 | — |
| steps | INT | 351–100 | — |
| cfg | FLOAT | 4.51–12 | — |
| denoise | FLOAT | 0.400.01–1 | — |
| character_index | INT | 00–10 | — |
| seed | INT | 00–18446744073709550000 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |
| UPSCALE_MODEL | UPSCALE_MODEL | — |