人物的手肘弯反了。脖子转过了人类活动范围。手放在腰上,但腕关节断了。姿势”在那里”,但解剖学上不对——这种错误大脑会立刻识别,哪怕你说不出到底哪里不对。
**最快的修复:**别再用文字描述姿势,直接给模型喂一张骨骼图。把 OpenPose 姿势图拖进 ControlNet(截至 2026 年 6 月,SDXL 和 Flux 都支持),权重设 0.8-1.0,大多数断肢问题一次出图就能解决。如果跑不了 ControlNet,次优方案是用具体动作动词(standing with arms crossed, weight on her right hip)加上更宽的取景。下面所有步骤都按实际命中率排序。
常见原因
按命中率从高到低。
1. 抽象动词如 standing / sitting
a woman standing 没有告诉模型她手臂在哪、重心在哪、髋部什么状态。它会选一个默认值,而这个默认往往解剖学上偷懒:手臂垂直、左右均衡、头朝前。
如何判断:你的姿势词是 standing、sitting、lying down、posing 这一类。补具体肢体描述即可。
2. 没有姿势参考
只要超出默认站姿,光靠文字就信息不足。kneel while reaching forward 有无穷多种身体走法,没有 OpenPose 骨骼或姿势参考图,模型只能猜,而且在肢体交叠时猜得很糟。
如何判断:你没用 ControlNet OpenPose、姿势参考图,或带姿势的 Midjourney --cref。
3. 镜头太近,肢体被强塞进画框
近景肖像 + 全身姿势描述,意味着模型只好把肢体硬扭进画框。手臂在画框中间断掉、手躲在脑后、手肘折进躯干。
如何判断:紧框(近景 / 头像)同时描述了手 / 脚 / 腿。把镜头退一档。
4. 多个互斥的姿势词
"hands on hips, arms crossed, holding a coffee cup"
这是三个互斥的手臂位置。模型把它们取平均,出来就是断臂或多臂。
如何判断:数一数 Prompt 里独立的手 / 臂动作。超过一个就是冲突。
5. 模型不认识的动作词
pickleball serve、yoga warrior 2 pose、kabuki mie pose。训练数据里罕见的姿势,模型只能近似,结果就崩。
如何判断:姿势词偏专项体育、特定艺术形式、文化特定。换成更通用的等价说法,或用姿势参考图来驱动。
6. 模型本身解剖弱(Flux schnell、轻量 SD checkpoint)
某些轻量 checkpoint 重风格、轻解剖。出图漂亮但解剖松散,尤其是手和交叠的肢体。
如何判断:同 Prompt、同姿势,跑一个公认解剖强的模型(Juggernaut XL、LEOSAM HelloWorld XL、RealVisXL)。如果解剖立刻干净,原模型就是源头。
你属于哪一类
| 症状 | 最可能原因 | 跳到 |
|---|---|---|
| 姿势僵硬笼统,手臂贴在身侧 | 抽象动词(#1) | Step 1 |
| 你描述清楚的姿势仍反复出错 | 没有骨骼参考(#2) | Step 2 |
| 肢体在画框边缘被裁切或折叠 | 镜头太近(#3) | Step 3 |
| 出现两只左手、多臂 / 臂粘连 | 姿势词冲突(#4) | Step 1 + Step 6 |
| 小众体育 / 舞蹈 / 仪式姿势崩坏 | 不认识的动作词(#5) | Step 2 |
| 连简单姿势解剖都软 | checkpoint 弱(#6) | Step 4 |
最短修复路径
Step 1:抽象动词换成具体动作
差 → 好:
| 差 | 好 |
|---|---|
a woman standing | a woman standing with arms crossed, weight on her right hip, head tilted slightly down |
a man sitting | a man sitting cross-legged on the floor, hands resting on knees, leaning forward slightly |
posing | leaning against a wall with one hand in pocket, other hand holding coffee, looking off camera left |
running | mid-stride running, left foot forward and lifted, right arm forward and bent, looking ahead |
明确写出每条手臂、每条腿、重心、头朝向、视线。每个肢体一句具体描述,胜过一个含糊的动词。
Step 2:用 ControlNet 喂 OpenPose 骨骼
这是单点最强的修复。截至 2026 年 6 月,SDXL 和 Flux 都有可用的 OpenPose ControlNet,所以这不再是 SDXL 专属。
# SDXL(A1111 / Forge / ComfyUI)
1. 找一张或拍一张你想要姿势的照片
2. 拖进 ControlNet -> OpenPose Editor -> 抽出骨骼
3. 预处理器:openpose(要手 + 脸用 openpose_full)
4. 模型:xinsir/controlnet-openpose-sdxl-1.0(当前社区首选)
5. 你的 Prompt + 骨骼图一起跑
# Flux.1 dev(ComfyUI)
1. 同样先抽骨骼
2. 用 InstantX / Shakker-Labs 的 ControlNet Union Pro 模型
3. 在 SetUnionControlNetType 节点选 pose 模式
4. 强度 0.3-0.8(Union Pro 官方推荐区间)
# 没有本地环境?在线生成骨骼:
- Posemy.art:拖 3D 模特摆姿势,导出 PNG
- OpenPose Editor(在线):调 2D 骨骼,导出 PNG
- 两个 PNG 都能直接拖进 ControlNet 的图片槽
ControlNet 权重在 SDXL 上 0.8-1.0 严格锁姿势,0.5-0.7 让 Prompt 把它放松。Flux Union Pro 更敏感,从更低值(0.3-0.5)起步,姿势跑偏再往上加。如果用默认的粗骨骼线、结果不稳,就改用更细的 openpose 线型重新生成骨骼。
Step 3:镜头退一档
如果姿势只在紧框里崩,就拉宽画框,给模型放肢体的空间:
# 替换
"close-up portrait" -> "half body shot"
"head shot" -> "medium shot, chest up"
# 或显式描述取景
"full body shot, framing head to feet"
"three quarter body, framing head to knees"
全身姿势需要全身画框。取景不匹配,是肢体在边缘消失最常见的原因。
Step 4:换解剖强的 checkpoint
# SDXL,截至 2026 年 6 月解剖最强
- Juggernaut XL v10 / Ragnarok(写实最全能)
- LEOSAM HelloWorld XL 7.0(专门针对烂手 / 烂肢体训练,姿势最好)
- RealVisXL(脸和皮肤最强)
- Pony Diffusion V6 XL(风格化全身最好)
# Flux
- Flux.1 dev(解剖明显好过 schnell)
- 需要的话再加 Civitai 的 anatomy / hands LoRA
如果手和交叠肢体是你反复出现的失败点,HelloWorld XL 7.0 专门针对烂解剖训练,是单次替换最可靠的选择。
Step 5:负向 Prompt 拦解剖错误(仅 SD 系)
Flux 默认忽略负向 Prompt,所以这一步是给 SD 1.5 / SDXL 用的。
broken arm, broken anatomy, bad anatomy, deformed limbs,
disjointed limbs, extra limbs, missing limbs, twisted body,
unnatural pose, broken neck, contorted, mutilated,
warped arms, malformed
Step 6:用 ADetailer / inpaint 单独修断的那块
如果 95% 姿势都对,只有一条肢体断了,就局部修,别整张重抽:
# A1111 / Forge ADetailer
- 自动检测手或身体(hand_yolo / person 模型)
- 用描述正确解剖的 Prompt inpaint
- Denoise:0.4-0.6
# 手动 inpaint
- 只 Mask 断的那条肢体
- Inpaint Prompt: "anatomically correct arm, natural elbow bend"
- Denoise:0.5-0.7
各工具说明
- Midjourney:没有 OpenPose。要特定姿势,就给一张带姿势的参考图配
--cref,再设--cw 0,这样模型只从参考图取脸,身体和姿势则跟随你的文字 Prompt。--cw值越高,越照搬参考图的姿势。 - ChatGPT / Gemini 出图:没有 ControlNet。只能靠具体动词(Step 1)、更宽取景(Step 3)和重抽。任何姿势关键的活,转到带 ControlNet 的 SDXL 或 Flux。
如何确认修好了
- 放到 100% 逐个关节看:手肘、手腕、膝盖、脖子。每个弯折都应落在人类活动范围内。
- 数修过那块的肢体和手指数量(崩掉的姿势常崩成多肢 / 粘连肢体)。
- 用同一 Prompt 跑 4 个 seed。真正修好的姿势在不同 seed 间稳定;如果一个 seed 干净、三个崩,说明姿势还没锁住,回 Step 2 把 ControlNet 权重调高。
常见问题
ControlNet 现在支持 Flux 了,还是仍然只有 SDXL?
截至 2026 年 6 月,Flux 已经有可用的姿势 ControlNet,通过 ComfyUI 里 InstantX / Shakker-Labs 的 ControlNet Union Pro 模型(pose 模式,强度约 0.3-0.8)。它比 SDXL 的 OpenPose ControlNet 更吃算力,测试时把出图尺寸放小一点。
姿势看着没问题,一放大看手就崩。是同一个问题吗?
算一半。姿势 ControlNet 修的是大肢体摆位,不一定修得了手指细节。用 openpose_full(含手部关键点)加 ADetailer 手部 inpaint,或参考 AI 图片手指数量错。
ControlNet 权重应该从多少起步?
SDXL 上从 1.0 起步严格锁姿势,人物显得僵硬或像照搬就往 0.6 降。Flux Union Pro 上从更低的 0.3-0.5 起步,姿势跑偏才往上加。
为什么完全一样的姿势在一个模型上正常、换个模型就崩? 轻量 checkpoint(Flux schnell、精简 SDXL 合并模型)用解剖换速度和风格。换到 Juggernaut XL v10 或 LEOSAM HelloWorld XL 7.0 重跑;如果回来干净,原 checkpoint 就是原因(原因 #6)。
我装不了 ComfyUI 或 A1111,还能用 OpenPose 吗? 能。在浏览器里用 Posemy.art 或在线 OpenPose 编辑器摆好骨骼,导出 PNG,喂给任何提供 ControlNet 或姿势参考图槽的托管 SDXL / Flux 服务。
预防建议
- 建个人姿势词典:每个命名姿势配一行具体描述。
- 任何非平凡姿势,优先上 ControlNet OpenPose,别硬用文字描述。
- 取景和姿势匹配:全身姿势配全身镜头,头部细节配头像。
- 姿势关键的工作(运动 / 舞蹈 / 动作)用解剖强的 checkpoint。