Files
DemonGatanjieu-Anomalous_Mo…/api/blocks/fix_hands.json
T
DemonGatanjieuandClaude Opus 5.5 71dca092b6 Mark the enlarge-then-fix hands way a fallback
In the user's tests Codex's FLUX-Fill redraw of one crop per hand did better.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:22:25 +08:00

271 lines
8.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"job": "detail",
"want": "hands",
"rank": 2,
"short": "enlarge, then hands (fallback)",
"enlarge": {
"megapixels": 4.2,
"most": 2.0,
"unknown": 1.5
},
"title": {
"zh": "修手·先放大再修(备选)",
"en": "Fix hands: enlarge, then fix (fallback)"
},
"about": {
"zh": "整张图放大到约 400 万像素(小图 2 倍)轻轻重画,让手变大;再找出每只手,放大重画后贴回去。",
"en": "The whole picture is enlarged to about 4 megapixels (2× for a small one) and redrawn lightly, so the hands grow; then each hand is found, redrawn larger and pasted back."
},
"source": {
"zh": "参考作者的「先放大重画」和「手部精修」两步合在一起,2026-10-29 在 RTX 4050 上试出这组数",
"en": "The reference author's light redraw after enlarging and his hand detailing, put together; these numbers tried on an RTX 4050 on 2026-10-29"
},
"packs": {
"FaceDetailer": "ComfyUI-Impact-Pack",
"UltralyticsDetectorProvider": "ComfyUI-Impact-Subpack"
},
"takes": "picture",
"detectors": {
"hand": "hand_yolov8"
},
"roles": {
"sampler": {
"denoise": 0.4
}
},
"nodes": {
"picture": {
"class_type": "LoadImage",
"inputs": {
"image": "$image"
}
},
"bigger": {
"class_type": "ImageScaleBy",
"inputs": {
"image": [
"picture",
0
],
"upscale_method": "lanczos",
"scale_by": "$enlarge"
}
},
"encode": {
"class_type": "VAEEncode",
"inputs": {
"pixels": [
"bigger",
0
],
"vae": [
"$decode.vae",
"*"
]
},
"wire_to": "$sampler"
},
"hand_finder": {
"class_type": "UltralyticsDetectorProvider",
"inputs": {
"model_name": "$hand"
}
},
"hands": {
"class_type": "FaceDetailer",
"like": "$sampler",
"inputs": {
"image": [
"$decode",
0
],
"model": [
"$sampler.model",
"*"
],
"clip": [
"$sampler.positive.clip",
"*"
],
"vae": [
"$decode.vae",
"*"
],
"positive": [
"$sampler.positive",
"*"
],
"negative": [
"$sampler.negative",
"*"
],
"bbox_detector": [
"hand_finder",
0
],
"guide_size": 768,
"max_size": 1024,
"denoise": 0.45,
"bbox_threshold": 0.3,
"bbox_crop_factor": 2.0,
"feather": 5,
"drop_size": 10,
"wildcard": "detailed hand"
}
},
"save": {
"class_type": "SaveImage",
"inputs": {
"images": [
"hands",
"image"
],
"filename_prefix": "hands_fixed"
}
}
},
"after": "A fallback: a FLUX-Fill redraw of one square crop around each hand did better in the user's tests; use that when you have it. The picture is enlarged to about 4 megapixels (2× for one of about 1 megapixel, at most 2×, not at all for a large one) and drawn again lightly (the sampler now takes it, at denoise 0.4), then every hand found is redrawn larger (hands, denoise 0.45) and saved with prefix hands_fixed; the enlarged one is saved too, without the hand pass. About 3 tries in 4 give a good hand: run_workflow with batch 4 (each try its own seed), then check them before the user does: zoom_image each hands_fixed picture on the hand, compare_with the old picture, and drop a hand with the wrong number of fingers, fused or melted fingers, or one far bigger or smaller than its arm. None good: run_workflow batch 4 again, at most twice. Then a picks panel zoomed on the hand lets the user choose among the good ones.",
"notes": "Tried on the Codex test picture (1280×832, three characters, the hand about 110×78 px): the hand pass alone gave a good hand in about half the seeds whatever its size (512 or 768) and denoise (0.45 or 0.55); enlarging 1.5× first gave good hands in 3 of 4, 2× gave sharper fingers in the same seeds (about 105 s instead of 75 s). Denoise 0.4 for the enlarged redraw kept the layout; faces and splashes change a little.",
"models": [
"hand_yolov8s",
"anima_turbo_lora"
],
"tested": {
"gpu": "RTX 4050 Laptop",
"vram_gb": 6,
"date": "2026-10-29",
"runs": [
{
"model": "Anima (Kirazuri v4, Turbo LoRA)",
"size": "1280×832 → 2560×1664",
"seconds": 105
}
]
},
"variants": {
"anima": {
"loras": {
"turbo": "anima-turbo-lora"
},
"without_loras": "On an Anima model the Anima Turbo LoRA (anima-turbo-lora-v0.2, the user can get it in the ways panel) makes this about three times faster: 10 steps at CFG 1.",
"roles": {
"sampler": {
"denoise": 0.4,
"steps": 10,
"cfg": 1.0,
"sampler_name": "euler_ancestral",
"scheduler": "normal"
}
},
"nodes": {
"picture": {
"class_type": "LoadImage",
"inputs": {
"image": "$image"
}
},
"turbo": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"model": [
"$sampler.model",
"*"
],
"lora_name": "$turbo",
"strength_model": 0.7
},
"wire_to": "$sampler"
},
"bigger": {
"class_type": "ImageScaleBy",
"inputs": {
"image": [
"picture",
0
],
"upscale_method": "lanczos",
"scale_by": "$enlarge"
}
},
"encode": {
"class_type": "VAEEncode",
"inputs": {
"pixels": [
"bigger",
0
],
"vae": [
"$decode.vae",
"*"
]
},
"wire_to": "$sampler"
},
"hand_finder": {
"class_type": "UltralyticsDetectorProvider",
"inputs": {
"model_name": "$hand"
}
},
"hands": {
"class_type": "FaceDetailer",
"like": "$sampler",
"inputs": {
"image": [
"$decode",
0
],
"model": [
"turbo",
0
],
"clip": [
"$sampler.positive.clip",
"*"
],
"vae": [
"$decode.vae",
"*"
],
"positive": [
"$sampler.positive",
"*"
],
"negative": [
"$sampler.negative",
"*"
],
"bbox_detector": [
"hand_finder",
0
],
"guide_size": 768,
"max_size": 1024,
"steps": 10,
"cfg": 1.0,
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"denoise": 0.45,
"bbox_threshold": 0.3,
"bbox_crop_factor": 2.0,
"feather": 5,
"drop_size": 10,
"wildcard": "detailed hand"
}
},
"save": {
"class_type": "SaveImage",
"inputs": {
"images": [
"hands",
"image"
],
"filename_prefix": "hands_fixed"
}
}
},
"after": "A fallback: a FLUX-Fill redraw of one square crop around each hand did better in the user's tests; use that when you have it. On this Anima model the Anima Turbo LoRA (0.7) makes both passes 10 steps at CFG 1, about 105 s for 1280×832 (2×) on a 6 GB card. The picture is enlarged to about 4 megapixels (2× for one of about 1 megapixel, at most 2×, not at all for a large one) and drawn again lightly (the sampler now takes it, at denoise 0.4), then every hand found is redrawn larger (hands, denoise 0.45) and saved with prefix hands_fixed; the enlarged one is saved too, without the hand pass. About 3 tries in 4 give a good hand: run_workflow with batch 4 (each try its own seed), then check them before the user does: zoom_image each hands_fixed picture on the hand, compare_with the old picture, and drop a hand with the wrong number of fingers, fused or melted fingers, or one far bigger or smaller than its arm. None good: run_workflow batch 4 again, at most twice. Then a picks panel zoomed on the hand lets the user choose among the good ones."
}
}
}