{"course":{"slug":"ai-images","title":"Image Generation, in Practice","url":"https://addaly.com/learn/ai-images","level":"beginner","track":"create"},"lesson":{"slug":"hands-eyes-teeth","title":"The three repairs everybody needs, with settings","url":"https://addaly.com/learn/ai-images/hands-eyes-teeth","position":44,"of":69,"minutes":8,"answer":"Hands, eyes and teeth fail because they are small, high-variance structures rendered at too few pixels, so the fix is always to give the region more pixels rather than to describe it better.","keyIdea":"Hands, eyes and teeth fail because they are small, high-variance structures rendered at too few pixels, so the fix is always to give the region more pixels rather than to describe it better."},"body":{"format":"markdown","text":"## One cause, three symptoms\n\nHands have twenty-seven bones and appear in training data at every possible angle, occluded, in motion, half out of frame. Eyes must be symmetrical and matched to each other across a gap. Teeth are a repeating structure where any irregularity reads as wrong.\n\nAll three fail for the same underlying reason: in a 1024-pixel frame, a hand might occupy 60 pixels, which in latent space is about 8 × 8: roughly sixty values to encode a structure that needs far more. The model is not being careless; it does not have the resolution.\n\nWhich tells you the fix. **Give the region its own full resolution.** Everything below is a variation on that.\n\n## The setting that does it\n\nEvery interface has a version of it. A1111 and Forge call it \"Inpaint at full resolution\" with a padding value; ComfyUI does it with a crop-and-stitch workflow; InvokeAI does it on the canvas by default.\n\nWhat it does: crops the masked region plus some padding, scales that crop *up* to the model's native resolution, denoises it there, scales it back down and stitches it in. Your 60-pixel hand is generated as a 1024-pixel hand and then reduced, which is why it comes back with correct structure.\n\nWithout this setting, inpainting a hand is the model trying again at 60 pixels, and it will fail again.\n\n## Hands\n\n```text\nmask:     the whole hand plus the wrist, generously\npadding:  32-64 px\ndenoise:  0.45 - 0.6\nprompt:   a relaxed open hand, five fingers, natural pose\nsteps:    same as base\n```\n\nNotes that matter:\n\n- **Mask generously.** A tight mask around bad fingers forces the model to connect to the existing wrong geometry. Include the wrist and some background.\n- **Prompt for the hand, not the scene.** During an inpaint the prompt should describe the region. Leaving the full scene prompt in place tends to introduce scene elements into the patch.\n- **Simplify the pose.** If the hand is gripping something at an awkward angle, a relaxed or partly hidden hand often reads better and generates first time.\n- **Generate four and pick.** Hands are high-variance; batch them rather than iterating one at a time.\n\nIf four attempts all fail, the pose is outside what the model does. Composite a photographed hand, or crop it out.\n\n## Eyes\n\n```text\nmask:     both eyes together, never one at a time\ndenoise:  0.35 - 0.5\nprompt:   clear symmetrical eyes, natural catchlight, looking at camera\n```\n\nMasking both together is the whole technique. Eyes have to agree with each other (direction of gaze, size, catchlight position) and repairing one in isolation guarantees they will not. It is the single most common eye-repair mistake.\n\nKeep denoise lowish. Eyes carry identity, and above about 0.55 you are generating a different person's eyes.\n\n## Teeth and mouths\n\n```text\nmask:     the mouth and a margin of lip\ndenoise:  0.3 - 0.45\nprompt:   natural teeth, slight smile, soft lip edge\n```\n\nTeeth want *less* denoise than you would expect, because the failure is usually irregularity rather than absence. High denoise produces the other classic failure: a perfect, unnaturally even set that looks like dentures. Some asymmetry is what makes a mouth read as real.\n\n## Automatic detection tools\n\nADetailer and its equivalents automate this: they detect faces, hands or eyes with a small detector, mask each one, and run a full-resolution inpaint pass on it. It is free, it plugs into most interfaces, and for a batch of twenty images it is the difference between an afternoon and five minutes.\n\nTwo cautions. It applies the same denoise to every detection, so a face that was already fine gets regenerated and may change. And on a set, that regeneration can shift a character's identity slightly between frames, which is exactly what the consistency block is trying to prevent. Use it for volume, check every result, and turn it off when identity matters.\n\n## The honest ceiling\n\nSome hands do not come back. Two hands interlocked, fingers gripping a complex object, a hand pressed against a face: these are configurations where even a full-resolution attempt fails repeatedly, because the training data is thin there and the structure is ambiguous.\n\nAt that point the professional answer is the unglamorous one: photograph your own hand in that position with a phone, and composite it. It takes ten minutes, it works every time, and it is what retouchers have done for decades. Persisting with a twelfth inpaint attempt is a decision to spend an hour on something a photograph solves, and recognising that moment is worth more than any setting in this lesson."},"check":{"question":"Why does \"inpaint at full resolution\" fix hands when ordinary inpainting at the same denoise does not?","options":[{"text":"Because the cropped region is scaled up to the model's native size before denoising, so the hand is generated with far more pixels.","correct":true},{"text":"Because cropping to the masked region removes the surrounding context that was biasing the model toward reproducing the same incorrect hand structure.","correct":false,"tempting":"Context is reduced, but padding deliberately keeps some; removing context alone would not supply the resolution the structure needs."},{"text":"Because the setting increases the effective step count over the masked area, allowing the finer structure of the fingers to converge properly.","correct":false,"tempting":"Steps are unchanged; the difference is spatial resolution, and more steps at 60 pixels still cannot encode a hand."},{"text":"Because a smaller region occupies less of the model's attention budget, so the fingers receive proportionally more of the conditioning signal than they did in the full frame.","correct":false,"tempting":"Invents an attention budget that works this way; the constraint is how many latent values describe the hand, not how attention is distributed."}]},"prev":{"slug":"the-repair-triage","title":"Fix it in the order that stops you doing it twice","url":"https://addaly.com/learn/ai-images/the-repair-triage"},"next":{"slug":"text-in-images","title":"Type is set, not generated","url":"https://addaly.com/learn/ai-images/text-in-images"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'The three repairs everybody needs, with settings', in Image Generation, in Practice. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-images/hands-eyes-teeth (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"The three repairs everybody needs, with settings","courseTitle":"Image Generation, in Practice","module":{"index":5,"slug":"repair-and-extend","title":"Repair, extend, assemble"},"answer":null,"keyIdea":"Hands, eyes and teeth fail because they are small, high-variance structures rendered at too few pixels, so the fix is always to give the region more pixels rather than to describe it better.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"one-cause-three-symptoms","runs":[{"text":"One cause, three symptoms"}]},{"t":"p","runs":[{"text":"Hands have twenty-seven bones and appear in training data at every possible angle, occluded, in motion, half out of frame. Eyes must be symmetrical and matched to each other across a gap. Teeth are a repeating structure where any irregularity reads as wrong."}]},{"t":"p","runs":[{"text":"All three fail for the same underlying reason: in a 1024-pixel frame, a hand might occupy 60 pixels, which in latent space is about 8 × 8: roughly sixty values to encode a structure that needs far more. The model is not being careless; it does not have the resolution."}]},{"t":"p","runs":[{"text":"Which tells you the fix. "},{"text":"Give the region its own full resolution.","b":true},{"text":" Everything below is a variation on that."}]},{"t":"h2","id":"the-setting-that-does-it","runs":[{"text":"The setting that does it"}]},{"t":"p","runs":[{"text":"Every interface has a version of it. A1111 and Forge call it “Inpaint at full resolution” with a padding value; ComfyUI does it with a crop-and-stitch workflow; InvokeAI does it on the canvas by default."}]},{"t":"p","runs":[{"text":"What it does: crops the masked region plus some padding, scales that crop "},{"text":"up","i":true},{"text":" to the model’s native resolution, denoises it there, scales it back down and stitches it in. Your 60-pixel hand is generated as a 1024-pixel hand and then reduced, which is why it comes back with correct structure."}]},{"t":"p","runs":[{"text":"Without this setting, inpainting a hand is the model trying again at 60 pixels, and it will fail again."}]},{"t":"h2","id":"hands","runs":[{"text":"Hands"}]},{"t":"code","lang":"text","label":"Text","text":"mask:     the whole hand plus the wrist, generously\npadding:  32-64 px\ndenoise:  0.45 - 0.6\nprompt:   a relaxed open hand, five fingers, natural pose\nsteps:    same as base"},{"t":"p","runs":[{"text":"Notes that matter:"}]},{"t":"ul","items":[[{"text":"Mask generously.","b":true},{"text":" A tight mask around bad fingers forces the model to connect to the existing wrong geometry. Include the wrist and some background."}],[{"text":"Prompt for the hand, not the scene.","b":true},{"text":" During an inpaint the prompt should describe the region. Leaving the full scene prompt in place tends to introduce scene elements into the patch."}],[{"text":"Simplify the pose.","b":true},{"text":" If the hand is gripping something at an awkward angle, a relaxed or partly hidden hand often reads better and generates first time."}],[{"text":"Generate four and pick.","b":true},{"text":" Hands are high-variance; batch them rather than iterating one at a time."}]]},{"t":"p","runs":[{"text":"If four attempts all fail, the pose is outside what the model does. Composite a photographed hand, or crop it out."}]},{"t":"h2","id":"eyes","runs":[{"text":"Eyes"}]},{"t":"code","lang":"text","label":"Text","text":"mask:     both eyes together, never one at a time\ndenoise:  0.35 - 0.5\nprompt:   clear symmetrical eyes, natural catchlight, looking at camera"},{"t":"p","runs":[{"text":"Masking both together is the whole technique. Eyes have to agree with each other (direction of gaze, size, catchlight position) and repairing one in isolation guarantees they will not. It is the single most common eye-repair mistake."}]},{"t":"p","runs":[{"text":"Keep denoise lowish. Eyes carry identity, and above about 0.55 you are generating a different person’s eyes."}]},{"t":"h2","id":"teeth-and-mouths","runs":[{"text":"Teeth and mouths"}]},{"t":"code","lang":"text","label":"Text","text":"mask:     the mouth and a margin of lip\ndenoise:  0.3 - 0.45\nprompt:   natural teeth, slight smile, soft lip edge"},{"t":"p","runs":[{"text":"Teeth want "},{"text":"less","i":true},{"text":" denoise than you would expect, because the failure is usually irregularity rather than absence. High denoise produces the other classic failure: a perfect, unnaturally even set that looks like dentures. Some asymmetry is what makes a mouth read as real."}]},{"t":"h2","id":"automatic-detection-tools","runs":[{"text":"Automatic detection tools"}]},{"t":"p","runs":[{"text":"ADetailer and its equivalents automate this: they detect faces, hands or eyes with a small detector, mask each one, and run a full-resolution inpaint pass on it. It is free, it plugs into most interfaces, and for a batch of twenty images it is the difference between an afternoon and five minutes."}]},{"t":"p","runs":[{"text":"Two cautions. It applies the same denoise to every detection, so a face that was already fine gets regenerated and may change. And on a set, that regeneration can shift a character’s identity slightly between frames, which is exactly what the consistency block is trying to prevent. Use it for volume, check every result, and turn it off when identity matters."}]},{"t":"h2","id":"the-honest-ceiling","runs":[{"text":"The honest ceiling"}]},{"t":"p","runs":[{"text":"Some hands do not come back. Two hands interlocked, fingers gripping a complex object, a hand pressed against a face: these are configurations where even a full-resolution attempt fails repeatedly, because the training data is thin there and the structure is ambiguous."}]},{"t":"p","runs":[{"text":"At that point the professional answer is the unglamorous one: photograph your own hand in that position with a phone, and composite it. It takes ten minutes, it works every time, and it is what retouchers have done for decades. Persisting with a twelfth inpaint attempt is a decision to spend an hour on something a photograph solves, and recognising that moment is worth more than any setting in this lesson."}]}],"check":{"question":[{"text":"Why does “inpaint at full resolution” fix hands when ordinary inpainting at the same denoise does not?"}],"options":[{"text":[{"text":"Because the cropped region is scaled up to the model’s native size before denoising, so the hand is generated with far more pixels."}],"correct":true,"tempting":null},{"text":[{"text":"Because cropping to the masked region removes the surrounding context that was biasing the model toward reproducing the same incorrect hand structure."}],"correct":false,"tempting":[{"text":"Context is reduced, but padding deliberately keeps some; removing context alone would not supply the resolution the structure needs."}]},{"text":[{"text":"Because the setting increases the effective step count over the masked area, allowing the finer structure of the fingers to converge properly."}],"correct":false,"tempting":[{"text":"Steps are unchanged; the difference is spatial resolution, and more steps at 60 pixels still cannot encode a hand."}]},{"text":[{"text":"Because a smaller region occupies less of the model’s attention budget, so the fingers receive proportionally more of the conditioning signal than they did in the full frame."}],"correct":false,"tempting":[{"text":"Invents an attention budget that works this way; the constraint is how many latent values describe the hand, not how attention is distributed."}]}],"order":[3,1,0,2],"why":null},"prev":{"slug":"the-repair-triage","title":"Fix it in the order that stops you doing it twice","minutes":8},"next":{"slug":"text-in-images","title":"Type is set, not generated","minutes":8}}}