你想要对称姿势——双臂平举、正面瑜伽体式、双手合十——结果模型给了你一张明显不对称的图。一肩高一肩低、眼睛偏出中线、两只手在不同高度。扩散模型没有硬对称先验,对称是它要从训练数据里”学”出来的,方差很大。修复不是”再 prompt 一次对称”,而是用 ControlNet 锁姿势、对崩的一半 mask 重画,或者直接镜像合成另一半。
常见原因
按命中率排序。
1. 没有结构性的姿势约束
光靠文字要对称,只给模型一个软提示。没有 ControlNet 姿势或参考图,模型从一堆”近似 T-pose”的分布里采样,绝大多数样本都不是完美对称的。
如何判断:只用了文字 prompt 吗?是的话,这就是根因。
2. 不对称的灯光 / 背景把姿势带偏
模型把整张图当成一个整体处理。你写了”晨光从镜头左侧打”,模型可能把姿势整体歪向光源,让被照亮的那一肩低一些、那只手更显眼。灯光意图压过了姿势意图。
3. 相机角度稍微偏轴
横滚或偏航 5-10 度就足以让”看起来”不对称。模型可能脑子里画的是对称姿势,只是投影出来歪了。
4. 头发 / 衣物和姿势打架
长发、飘逸裙摆、单肩包之类不对称配饰,会”允许”模型在姿势上破坏对称,以让这些附属看起来合理。
5. 多人对称构图
镜像舞者、双人瑜伽这类几乎从来出不干净,模型让两人互相对齐就很吃力。
6. prompt 里出现了”一侧”
“右手举起”、“左脚向前”——这些词直接强制了不对称。prompt 里有侧别词,这就是问题。
动手前先确认
- 想清楚是不是非要像素级对称。编辑类近似对称就够了;产品包装或解剖参考必须精确。
- 把出问题那张图的 seed、prompt、模型、档位存下来。
- 同 prompt 4 个 seed。4 张都同方式崩,就是结构问题。
- 审 prompt 里有没有侧别词(right、left、leading、trailing)。
需要收集的信息
- 完整 prompt、模型、seed、sampler、步数、宽高比。
- 量化不对称——眼睛、肩膀、手在 Y 轴上偏多少像素。
- 是否用了 ControlNet 或参考图。
- 灯光是对称还是有方向。
- 用途——对称 logo、解剖图需要的精度比概念稿高得多。
一步步修复
按 ROI 排序。ControlNet 姿势是最关键的一步。
Step 1:用 ControlNet 姿势或参考图锁
最大幅度的动作是把软 prompt 换成硬姿势约束:
- SDXL / A1111 / ComfyUI:加载 OpenPose ControlNet + 对称姿势骨架。骨架可以手画,也可以从参考图提取。
- Midjourney:用
--cref引用一张已经是对称姿势的图,--sw 100严格遵循。 - Flux:ComfyUI 里用 Flux ControlNet(Union 或 OpenPose 变体)。
要完美对称,先在矢量工具里画 OpenPose 骨架,对中线做镜像后再导入。
Step 2:把灯光中性化
把方向光换成对称光:
- 差:side-light from camera left
- 好:frontal soft light, even illumination from both sides
这能去掉一个常见的”偏向”压力。
Step 3:删掉侧别词
扫一遍 prompt,把任何暗示某一侧的词换成双侧用语:
- “right hand raised” → “both hands raised”
- “leading foot forward” → “feet together, parallel”
- “head turned slightly” → “head facing camera directly”
Step 4:对崩的一半 mask 重画
构图锁死、只有一半歪了:
- 看哪一半是对的(通常是模型先画好的那一半,或是没崩的那一边)。
- 把崩的一半 mask 起来走 inpaint。
- inpaint 的 prompt 写成和对的那一半一样的内容。
Step 5:直接镜像合成对的那一半
对”必须对称”的活儿的核选项:
- 把图开到 Photoshop / Affinity / GIMP。
- 沿中线把对的那一半剪下来。
- 复制、水平翻转、放到另一边。
- 用 Generative Fill 或羽化 mask 把中缝接起来。
- 处理中线附近的伪影。
像素级对称的保票。预留给产品、包装、参考类——对称就是交付承诺的活。
Step 6:换更强的模型
姿势遵循更好的模型:Flux Pro、Midjourney v7、Imagen 3。对称姿势活儿还在 SD 1.5 或老 Midjourney 上,模型本身就是瓶颈。
怎么确认已经修好
- 在图上叠一条中线参考。两眼到中线距离应相等,两肩 Y 坐标应一致。
- 在像素层面量两只手的位置——Y 坐标应在容差内相等。
- 瑜伽和舞蹈姿势,检查关节角度——每只手肘弯曲角度应该一样。
- 按最终交付尺寸打样或显示——缩略图上看不出的小不对称,全尺寸下会跳出来。
长期预防
- 任何对称姿势的活,默认走 ControlNet 姿势或参考图,不要只靠 prompt。
- 建一个对称 OpenPose 骨架库(T-pose、合十、双臂平展、正面站姿),反复用。
- 对称主体默认用对称灯光 prompt。
- 写 prompt 时避开侧别词。审稿时扫一遍。
- 产品和包装类,最后一步默认镜像合成,不要相信单次生成。
常见坑
- 相信 prompt 里写 “symmetric” 或 “mirrored” 就够了。基本不够。
- 忘了头发、衣物、道具也能在姿势对的前提下打破对称。
- 镜像合成时不处理中缝。中线一眼就能看出来。
- 同 prompt 重摇 20 次追对称。4 次后就换 ControlNet。
FAQ
Q:模型为什么不能直接输出对称? A:扩散模型架构里没有对称先验。它从一个包含很多”近似对称”输出的分布里采样。ControlNet 加了文字 prompt 做不到的硬约束。
Q:纯 prompt 能不能拿到完美对称? A:很难。再强的模型,纯文字拿到完美对称大概是十分之一的概率。ControlNet 或镜像合成才是稳的路线。
Q:镜像合成出来都会自然吗? A:基本静态、正面光的姿势,会。复杂头发、布料、方向光的话,中缝可能需要手工修。
Q:那像头发偏分这种本来就不对称的特征怎么办? A:镜像合成会继承一侧的不对称。模型给的偏分会变成两侧都有或者两侧都没有。选哪一半镜像,就挑不对称细节更少的那侧。
相关阅读
标签: #ai-image #排查 #pose #controlnet