Tulut Hand Detailer
The dedicated pass for anime hands that never came out right
- image
- model
- clip
- vae
- upscale_model
- IMAGE
- MODEL
- CLIP
- VAE
- UPSCALE_MODEL
Hands are the part that breaks first and reads as broken most. In a full-body anime render the hands are maybe 40 pixels wide - barely enough latent budget to suggest a fist - so they come out as melted claws. The Tulut Hand Detailer is the pack's fix for exactly that: a YOLO detector that hunts hands specifically, then a crop, upscale, redraw, and paste-back loop that gives each one its own resolution budget.
How it works
Same machinery as the other Tulut detailers. A YOLOv8 detector (hand_yolov8s.pt) finds hands at 0.50 confidence, each detection gets a 25% padding crop for wrist-and-context, your upscale_model upscales the crop, it's resampled to guide_size (default 512, and that's the sweet spot for a hand crop), and a masked KSampler pass - dpmpp_2m_sde / sgm_uniform, hardcoded - re-renders at your denoise. An asymmetric feathered mask (extra padding at the top of the box) blends the result back so the seam doesn't slice through the wrist. Optional AnimaLLLite injection rides along if you pick a model in lllite_name.
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).prompt/neg_prompt- the redraw prompt. Hands are a shape problem more than a texture problem, so describe the pose if you can ("hands resting on hips", "gripping a sword"). Vague prompts give the sampler nothing to aim at.denoise- default 0.5, the highest in the pack. Hands need a fairly heavy redraw to fix; start at the default and back off if fingers start looking re-drawn rather than repaired.guide_size- default 512. Don't chase higher numbers; a hand doesn't need a 1024 crop and you'll pay for it in VRAM.steps/cfg/seed- sampler settings;character_indexpicks which detected hand (0 = all, sorted left-to-right);lllite_nameoptional AnimaLLLite.
Outputs: the fixed IMAGE plus pass-through MODEL, CLIP, VAE, UPSCALE_MODEL, so you can stack a hand pass after a face pass without rerunning loaders.
Install and setup
cd ComfyUI/custom_nodes
git clone https://github.com/Tulut114/tulut_comfyui_Gadget
Restart ComfyUI. Then the pack's standing trap: ultralytics and opencv-python aren't in requirements.txt (only Pillow is), so install them in your ComfyUI environment or the detailer nodes don't register at all. The detector goes in ComfyUI/models/ultralytics/bbox/ under the exact name the code loads - here that's hand_yolov8s.pt, which the README and code agree on for once.
Troubleshooting
- Image returns unchanged. Missing model file or wrong filename = a console warning and the original image back, no error. Check
models/ultralytics/bbox/first. - Some hands get fixed, others don't. Detections below the 0.50 confidence are silently skipped, and the node has no per-run preview. Run the pack's Tulut YOLO Preview to see what's actually detected and in what order - if a hand is being missed, that's a detector problem, not a sampler problem.
- Wrong finger count after the pass. Denoise too high is regenerating, not repairing. Drop toward 0.4 and keep the prompt descriptive.
- The "same seed" trap. All detected hands re-render on the same seed, which is fine for a single character but the classic auto-detailer behavior to know about if you're fixing a crowd (the KB's detailing doc has the full clone-problem rundown).
Honestly, this is the node from the pack most people will actually reach for - broken hands are the most visible anime failure after faces, and a dedicated hand detector with a decent denoise does a genuinely better job than trying to fold hand repair into a whole-frame pass.
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 | 512256–1024 | — |
| steps | INT | 351–100 | — |
| cfg | FLOAT | 4.51–12 | — |
| denoise | FLOAT | 0.500.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 | — |