做AI图像生成这一年多,被问得最多的一个问题不是“脸怎么画好看”,而是“怎么让画面里的人物看起来正好是我要的个子”。电商平铺图、角色立绘、封面海报,这些场景里“人物身高”往往是甲方盯得最紧的硬指标。AI模型不是量尺,它不认厘米,但它认比例、参照物和镜头语言。这篇就专门聊透一件事:AI图像生成中人物身高精准调整的指令逻辑与实现。
1. 先搞清楚:模型为什么听不懂“180cm”
1.1 扩散模型没有一把尺子
很多刚上手的人会直接在提示词里写“180cm tall”,结果出图之后人物看起来还是五五分,或者跟旁边门框一对比只有一米五的既视感。这不是运气问题,是原理问题。
主流开源扩散模型的文本编码器,是把词和短语映射成高维语义向量。它学的是语义分布,比如“tall”这个标签在训练数据里对应的是“画面中比例偏大、腿部较长、视线较高”这一堆图片特征的统计规律。但“180cm”这个数字,在几十亿张图里几乎没有稳定的图像特征可以对应——训练数据里的照片不会标注“这位女士恰好180厘米”。数字标签在模型的语义空间里是稀疏的、模糊的,模型看见了“180cm”也不会把它当尺子用,顶多当作一个偏“高”的软提示。
类比一下:你拿一张只有人、没有参照物的照片问身边朋友“这人多高”,他只能猜。但如果照片里有扇门、有路灯、有旁边站着的人,他就能估出八九不离十。模型也是这个逻辑,它需要你把“身高”翻译成它能感知到的视觉元素,而不是一个孤零零的数字。
1.2 身高观感由三件事共同决定
画面里一个人看起来“高不高”,不是单一变量,至少由三件事叠加决定:
- 头身比:写实风格通常6到7头身,超模感可以做到8头身,儿童或可爱风只有4到5头身。哪怕绝对像素高度不变,头身比一变,视觉身高立刻不一样。
- 镜头高度与视角:俯视会压缩身高感,仰视会拉长。同样是175cm的人,低角度全身照和俯拍全身照,观感可以差出一个头的距离。
- 参照物与相对位置:画面里有没有门框、车站牌、旁边站着的人,决定模型是否有一个“度量衡”可依附。
所以“精准调整身高”从来不是加一个形容词的事,是同时协调这三样东西。指令逻辑的核心,就是把目标身高拆解成这三个维度上的可执行描述。
2. 指令逻辑:把身高翻译成模型能执行的视觉语言
2.1 用参照物给模型一把“尺子”
最可靠的方法是给画面里塞一个尺寸稳定的参照物。我实测下来最好用的是门框、标准电梯门、路灯杆、交通指示牌、货架。这些物体在真实世界里的尺寸高度标准化,训练数据里出现过大量“人站在门边”的照片,模型对它们有统计性的比例认知。
直接说“a woman standing next to a standard 2-meter-tall door frame, the top of her head reaches the middle of the door”这个效果很稳定。原因是“the top of her head reaches the middle of the door”提供了一个明确的位置关系,比“175cm”更好使。
注意事项:参照物必须真的出现在画面描述里,不要只写“with a door”这种含糊词。我见过太多人写了“a door”结果门出现在人物身后十米开外,透视一压缩,完全起不到标尺作用。正确写法是把人物和参照物的位置关系写死,比如“standing right beside”。
常见标尺素材优先级:
- 门框:最推荐,因为垂直高度清晰,且训练数据量大
- 电梯门:高度标准,但容易把场景带到室内
- 路灯/站牌:适合室外街拍,但容易被场景细节抢注意力
- 旁边的人:适合双人或多人生成,天生带对比关系
2.2 用头身比和腿部节奏替代模糊形容词
“高挑”“修长”“statuesque”这些词不是不行,但它们不够稳定。同一个词在动漫模型和写实模型里的表现差异极大。更可控的做法是直接指定头身比和身体比例。
比如“full-body portrait of an elegant woman, 6.5 head-to-body ratio, long legs, legs account for 60% of total height”。这里的“legs account for 60% of total height”是很有用的,因为腿部长度与身高的比例关系,模型是有能力从训练数据里学到的。再加上“6.5 head-to-body ratio”,等于同时给了两个约束,出错的概率就小很多。
配合镜头视角词效果更明显:“shot from knee height”低角度仰拍会强化腿部长度,“eye-level shot”平视会让身形比例更真实。如果目标是增加身高感,我会把这两个词叠加。如果要写实、不要模特化拉长,那就用“eye-level shot”配合普通头身比。
这里有个画风差异提醒:动漫风格8头身是常态,写实风格6.5到7头身就足够。如果你用的是二次元模型,写“8头身”没问题;但写实模型里写8头身,出来的人会像踩了高跷。务必先确认自己用的底模是什么审美体系。
2.3 一个可复用的Prompt模板
把上面这些凑到一起,就形成了我常用的结构:
[主体身份] + [姿态动作] + [身高描述:参照物+相对位置] + [头身比/腿身比] + [镜头视角] + [画质稳定词]举两个可直接套用的例子:
案例一:175cm高挑女性全身立绘
full-body portrait of a confident young woman, standing upright, 175cm tall, standing right beside a standard 2-meter-tall door frame, the top of her head is just above the middle of the door frame, 6.5 head-to-body ratio, long slender legs, shot from knee height, low angle view, natural light, street style, sharp details案例二:160cm普通体型的邻家女生
full-body portrait of a friendly young woman, casual pose, 160cm, standing next to a standard elevator door, her head reaches the bottom quarter of the elevator door, 6 head-to-body ratio, average leg length, eye-level shot, natural indoor light, casual outfit, photorealistic负向提示词里也要有对应项,我会固定写:
distorted legs, inconsistent height, extra long torso, shot from above, chibi proportions, deformed feet, blurred ground需要说明的是,这些数字和描述不是每次都100%精确到厘米,但加上参照物和视角之后,误差基本能控制在“半头身”范围内。对需要满足甲方的“看起来一米七五”的需求来说,已经够用了。
2.4 多人场景的相对身高指令
单人还好,多人是最容易翻车的。双人同框时,如果你分别写“男185cm,女160cm”,模型往往会乱套,要么女生看起来像个小孩,要么两人像隔着一条街。原因是模型很难在同一张图里同时执行两个绝对数字。
正确做法是写“相对位置关系”。实践证明“the top of her head reaches his shoulder”这句话比任何身高数字都有效。模型对“头顶到对方肩膀”这种空间位置关系有非常强的理解能力,出图后身高差几乎不会错。
我再加一层保险:前景后面放置门框或围墙这类垂直参照物,让两个人和参照物处于同一个尺度系统里。同时要求“standing side by side, same ground line”,避免一前一后被透视影响身高差。脚下地面线是否对齐,是判断这张图身高差靠不靠谱的第一指标。
3. 实操过程:从指令到成图的全流程
3.1 直接生成指定身高单人的完整试错记录
我用一个实际项目来说明:需要一张175cm高挑女性的全身照,用于电商海报。
第一步,参数基础设置。画幅选竖构图,我用的是768x1152,这个比例下全身人像最舒服。采样步数28到32,CFG引导系数6到8。CFG太低可能不听话,太高容易出现线条死板、脸部塑料感。种子固定下来,方便多轮对比。
第二步,初始指令尝试。我第一版写的是“a tall elegant woman, 175cm, full body”,结果出图人物腿长,但和旁边的花盆一对照,比例顶多一米六。问题很清楚:没有参照物,且“175cm”只是被当成“高”的模糊信号,没有真正指导比例。
第三步,修正指令。加上门框和头部高度关系,改成案例一的完整模板。同时为了保证头部不会被拉大,我在负向提示词里加了“large head, oversized head”。再跑一次,人物头身比明显正确了,门框高度估算约2米,人物头顶在门中线偏上一点点,视觉身高终于立住了。
第四步,效果微调。我想要更长的腿部线条,这时候不要改身高数字,而是在“6.5 head-to-body ratio”基础上改成“7 head-to-body ratio”,并保留“low angle view”。出图后腿部线条明显拉长,但头部没有变大,比例依然是自然的。
实操心得:一定不要反复改数字,比如从175改成170再看效果。正确操作是保持身高描述不变,单独调整头身比或视角,观察哪块变量对最终效果影响最大。改数字只会打乱模型的整体稳定性,浪费大量采样时间。
3.2 多人生成:实现“女方比男方矮半头”的实操
项目背景:情侣双人立绘,要求男方180cm左右,女方155cm左右,看起来协调的同时不能把女方画成未成年人。
我第一版写的是“a couple, man is 180cm, woman is 155cm, standing side by side”。出来之后女方比例偏小,但脸过于幼态,甲方直接打回。
第二次我改成相对位置描述:
a couple standing side by side on the same ground line, the top of her head reaches his shoulder, both are adults, the man is tall and broad-shouldered, the woman is petite but mature, eye-level shot, full-body portrait, natural proportions负向里额外加了“childlike face, childish features, baby face”。这次出图,身高差对了,女方头顶刚好压在男方肩膀上方,且脸型是成熟女性的脸。实测结论:矮个子女性一定要在提示词里强调“adult”和“mature”,否则模型容易把她向“小孩”的语义靠拢。
还有一个透视坑要提:两个人站得越近,在平视镜头下身高差越明显;站得太远,透视会把矮者压缩成“半身错觉”。我会让两人“standing close together, shoulders almost touching”,同时保证“same ground line”。
3.3 已有图片的身高修正:拉伸画布与局部重绘的配合
生成的图已经满意,但人物矮了半头,怎么办?这时候不建议重新生成整张图,用“拉伸画布+局部重绘”效率更高,这个技巧在我的项目里救了很多次。
思路是这样的:先在纵向把画布拉长10%到15%,这一步会同时拉长人物的腿部和整体纵向尺寸;然后把拉伸后产生畸变的腿部、脚部、地面相接处框出来,用局部重绘重新画一遍。头部和上半身尽量不参与重绘,因为它们被拉长之后容易产生“面条脸”。
具体步骤:
- 锁定原图,用图像缩放工具把画布高度拉伸到原来的110%到115%,宽度不变。这一步等于先做了物理层面的“长高”。
- 将拉伸后的图输入局部重绘工具,用蒙版选中膝盖以下到脚底与地面接触的区域。
- 重绘提示词里写“complete legs and feet, standing naturally on flat ground, realistic perspective”,负向写“blurry feet, deformed shoes, floating feet”。
- 重绘强度建议设置在0.5到0.6之间。强度太高,脚部会重画成一团乱;太低,拉伸遗留的锯齿又压不下去。
- 如果腿和地面的交接处还是有悬浮感,把地面区域也一起选进蒙版。
踩过的坑:拉伸幅度超过15%,脚面和鞋子的透视就会彻底崩掉,尤其是侧身或半侧身的图。我自己现在超过15%就重新生成,不硬修。另外,重绘时如果原来人物穿着高跟靴,拉伸之后靴筒高度会被拉长,导致比例失真。这种情况我一般先手动把靴筒区域单独蒙版出来,单独修复。
3.4 结构控制工具的相关参数建议
如果使用了带骨架或深度图的结构控制工具,身高调整还可以通过修改骨架点的坐标来实现。具体做法是在结构图里直接把腿部骨骼点纵向拉长,然后让生成管线按修改后的骨架约束图像。
权重建议设置在0.6到0.8之间,权重太高会忽略提示词里的细节,太低骨架约束形同虚设。深度图控制更适合调整镜头高度,骨架控制更适合调整腿长和整体身高差。需要说明的是,很多本地部署的扩散模型管线都支持插入这类控制模块,但不同版本接口名称有差异,照着各自文档挂载就行。
4. 常见问题与排查技巧实录
4.1 写了“180cm”却毫无反应
这是最大的高频问题。原因前面说了,数字在语义空间里没有稳定映射。解法优先级:先保证画面里有标准参照物,给“头部到达某个位置”的具体关系,再修正头身比。三个都做了还不行,检查是否用了分段落式Prompt结构,有些工作流会削弱后段描述词的权重。
4.2 身高对了但头身比像外星人
比如腿拉长了,但头也跟着变大,整体像大头娃娃。排查顺序:第一,负向提示词里有没有加“large head, oversized head”;第二,是不是在后期拉伸画布时头部区域也被拉伸;第三,头身比描述和底模风格是否冲突。我自己的做法是头部比例单独用“small head, slender face”控制,效果立竿见影。
4.3 鞋子和地面严重畸变
拉伸重绘后,鞋子变形和地面透视错乱是最常见的残局。处理办法我在实操里总结了一条:蒙版一定要包含“脚底+地面接触线”,且重绘提示词必须写明“flat ground, shoes realistically touching the ground”。如果畸变已经大到重绘救不回来,就用裁切构图成七分身,把废掉的下半身裁掉。
4.4 身高差调整后矮个子角色变成小孩
这是多人场景的重灾区。模型会把“矮小”语义关联到“孩童”。解决办法是强化“adult”“mature face”“grown woman”这类成熟语义,同时在负向提示里明确“childlike, baby face, small child”。另外,不要让矮个子角色穿过于幼态的衣服,这一点实践也很有效。
4.5 快速排查顺序表
我把日常排查的顺序整理成一张表,按优先级执行,基本能解决八成以上问题:
| 问题现象 | 第一排查项 | 第二排查项 | 第三排查项 |
|---|---|---|---|
| 数字指令无效 | 是否缺少参照物 | 头部高度关系是否具体 | 是否只依赖形容词 |
| 比例失真 | 头身比是否写明 | 底模风格是否匹配 | 是否拉伸过度 |
| 脚部畸变 | 蒙版范围是否够大 | 地面提示词是否清晰 | 重绘强度是否过高 |
| 矮个像小孩 | 是否加入adult语义 | 服装是否成熟 | 面部负向词是否齐全 |
| 身高差失效 | 是否用了相对位置描述 | 两人是否同地面线 | 是否站位过远 |
这张表我是打印出来贴在工位旁边用的。遇到问题先查表,不要一张图反复重跑几十次,效率太低了。
最后分享两句实在话
搞了这么久的身高调整,我最大的体会是:和AI协作,与其逼它理解“厘米”,不如给它一个坐标系。门框、肩线、头身比、视角,这些才是模型真正愿意听的“身高指令”。你越是把数字翻译成视觉关系,出图就越稳。
另一个小技巧是:每次跑出满意效果,把Prompt、参数和成品图存进同一个文件夹,慢慢积累成属于自己的“身高词典”。下次遇到类似需求,直接调模板,微调几个词就能出图,比从零开始摸索快得多。AI绘画拼的不是一次运气,是稳定复现的能力。