人像挺好、姿势也对,然后视线移到手上——6 根手指、拇指长到手腕上、整只手糊成连指手套。手是扩散模型里仅次于牙齿的难点。修复几乎从来不是改 prompt,而是工作流:能不画就不画,必须画就给够像素,构图非要露出来就跑一遍手部专用 inpaint。
常见原因
按命中率排序。
1. 手占的像素太少
1024x1536 的全身像里,每只手大约 60-90 像素高。模型很难把五根分明的手指塞进去。每只手低于 128 像素,几乎必崩。
如何判断:把一只手 100% 裁出来量。包围盒小于 100x100 像素,就是手太小。
2. 手在动作里或有遮挡
“拿着咖啡杯”、“挥手”、“弹吉他”——模型要同时合成手和物体。关节复杂的物体(乐器、工具、武器)最难;圆润光滑的物体(杯子、球)相对好。
3. 画面里出现多只手
握手、合影里的露手、搭肩这类姿势。模型把本就有限的手部预算平摊到每只手上。
4. 手的角度极端
侧看的手、从指节正上方俯瞰、纯手心正对镜头(强透视收缩)——这些角度训练数据少。
5. 风格化与写实打架
“毕加索风格的写实手”——模型在风格之间取平均,手是最先垮的部分,因为训练信号最弱。
6. 模型旧 / 步数低
SD 1.5 的手是出了名的差,SDXL 明显改善,Flux、Imagen 3、Midjourney v7 又好不少。SDXL 步数低于 20 也会跳过原本能精修手指几何的迭代。
动手前先确认
- 想清楚手到底需不需要露出来——裁掉是最快的修复。
- 把出问题那张图的 seed、prompt、模型、档位都存下来。
- 同 prompt 4 个 seed 出 4 张。4 张都崩是结构问题;1 张崩是噪声。
- 看其他部位(脚、脸)是不是也崩。都崩说明整体像素不足,不是手特有的问题。
需要收集的信息
- 完整 prompt、负面 prompt、模型、seed、sampler、步数、宽高比。
- 把崩掉的手 100% 裁出来并量像素。
- 手是否在和某个物体交互。
- 用途——印刷产品 hero 对准确度要求远高于博客头图。
一步步修复
按 ROI 排序。Step 1 + Step 2 能解决约 70% 的情况。
Step 1:能不画就别画
最便宜的修复是构图。手不是叙事重点的话:
- 取景到胸口,不到腰,手不入画。
- 手放背后、插口袋、拿到画面外。
- 用道具遮(用手背端杯子镜头侧;袖口遮住指节)。
商业人像里”手不入画或插口袋”几乎是默认交付方案。
Step 2:给手部区域更多像素
必须露手:
- 改成竖比例,让人物有更多纵向像素。
- 取景更紧——半身代替全身。
- 提高基础分辨率。Flux 用 1024x1280,SDXL 用 1024x1536。
Step 3:加手部专用负面 prompt
SDXL 类模型,一段手部负面通常能帮上忙:
extra fingers, missing fingers, fused fingers, malformed hand,
mutated hand, six fingers, deformed hand, extra thumb,
wrong hand anatomy
救不了一只完全崩的手,但能在群体层面降低崩率。
Step 4:跑一遍手部专用 inpaint
走完 1-3 还是不对的手,这一步收益最高。
- SDXL / A1111:开 ADetailer,模型选
hand_yolov8n.pt。默认参数能搞定约 70% 的情况,denoise 从 0.5 起步。 - ComfyUI:用
Hand Detailer节点,或者串MediaPipe Hand Mesh+Inpaint生成显式 mask。 - Midjourney:对手部 Vary (Region),prompt 写
well-defined hand, five fingers, natural finger anatomy, sharp focus。 - Flux:ComfyUI 里用 Flux Fill + 手动手部 mask。
- Photoshop:对手部 Generative Fill。
ADetailer 还没修好就把 denoise 拉到 0.7 + 收紧 mask 再来一遍。
Step 5:换更强的模型
模型本身就弱:
- Flux Pro:当前写实手部最强。
- Midjourney v7:配合 Vary (Region) 修手最稳。
- Imagen 3:手稳,柔光 / 编辑风格下尤好。
- 任何需要露手的活,避免用 SD 1.5。
怎么确认已经修好
- 数每只可见手的手指。每只 5 根,拇指位置正确。
- 关节方向。手指应该朝手心方向弯,不是反向。
- 看手指有没有粘连。每根之间应有可见的阴影分界。
- 找第二双眼睛看一眼。自己看自己的渲染会盲。
- 同 prompt 出 4 张候选,4 张都过”数+弯曲”检查。
长期预防
- 任何系列人像,构图阶段默认遮手,除非手就是主题。
- 准备一段手部专用负面 prompt 模板,写实人像每次都粘。
- 任何露手的人像都跑一遍手部 inpaint——把它当工作流,而不是修复手段。
- 手关键的活默认用 Flux Pro 或 Midjourney v7。
- 维护一份自己模型常踩雷的姿势 / 道具黑名单。
常见坑
- 同 prompt 重摇 20 次等出好手。4 次后就换工作流。
- 只看缩略图。手必须 100% 缩放检查。
- ADetailer denoise 太高,会把手腕、前臂也一起改了。
- 在正向 prompt 里加 “perfect hands” 期待奇迹,单独写几乎没用。
FAQ
Q:为什么手比脸难那么多? A:脸有很强的对称先验——两眼一鼻一嘴,位置固定。手姿势可变、关节可动、互相遮挡,每只手 14 个手指关节。训练数据里清晰正脸远比清晰摆好的手多。
Q:新模型能不能彻底解决? A:在快速变好。Flux Pro 和 Midjourney v7 比 2023 年的模型明显强。但在生成阶段彻底解决,还要再几代模型。
Q:在正向 prompt 里加 “five fingers” 有没有用? A:边际效果。负面 prompt + inpaint 才是真正干活的部分。
Q:能不能用手部姿势 ControlNet? A:可以。SDXL 上有 OpenPose-Hand 和 DWPose-Hand ControlNet,能把手强制成特定姿势。手关键的活这是最稳的路线,代价是搭建工作流的成本。