想让改图只动背景不动人脸,Nano Banana 2.1 这类对话式编辑里通常没有一个「锁定人脸」的独立开关,能做的是把指令从「换个背景」改写成「只改背景范围 + 逐项保留人物特征」,再用同一张输入图重复生成,看脸部漂移是否稳定。指令写得越具体,编辑范围一般越容易被收窄;但模型是否遵守取决于输入图构图、人物在画面里的占比、头发与背景边缘的复杂度,以及新背景的光照方向是否和原图冲突,所以不能承诺一定不动脸。
处理方向是先跑「完全不提人物」的基线,看脸部会漂到什么程度;再补一句人物保留描述;再把保留点逐项拆开;最后用同一条骨架重复提交多次,排除单次偶然。判断标准不是「完全没变」,而是脸型、五官间距、肤色这几个关键特征是否落在你能接受的范围。边界:没有公开的保留区域参数可用,保留句只是概率性约束,人物占比小、边缘毛发复杂、新旧光向冲突时,脸部漂移通常更明显。
先跑一遍只换背景、不提人物的基线指令
这一步的目的不是拿到成品,而是拿到一个「什么都不约束」的对照。指令里只写背景,不出现任何关于人物的字眼:
把这张图片的背景换成傍晚的海边,有沙滩和海浪。
提交前先把输入图另存一份,命名为 origin.png;生成结果另存为 base-run1.png。对比方式建议固定下来,后面每一步都复用同一套:把原图和输出图裁成同一比例、同一人脸区域的方形,并排放在一起看。值得记录的对比截图有三张——整图并排、面部区域放大、人物与背景交界处放大。整图看构图有没有被重新裁切,面部放大看五官有没有位移或换脸,交界处看有没有出现光晕、纸片感或边缘重绘。
基线这一跑通常会出现的情况是:人物姿势大体还在,但肤色、脸型胖瘦、五官间距、发际线中至少有一项发生可见变化,边缘处容易出现新背景颜色渗进头发或肩膀的情况。把这些变化点先用文字记下来,作为后面两次对照的参照物。
在指令里补一句人物保留描述再跑一次
第二次只加一句保留描述,其余保持不变,这样差异才归因得清楚:
只修改背景,把背景换成傍晚的海边,有沙滩和海浪;
保持人物五官、脸型、肤色、发型不变,人物轮廓边缘不要重绘。
输出存成 keep-sentence-run1.png,和 base-run1.png 放在一起对比。这里重点看两个东西:差异位置和差异程度。
- 差异位置:逐项检查脸型轮廓与下巴线条、眼睛鼻子嘴的相对间距、肤色与面部明暗分布、发际线位置、身体姿态与占画面比例、人物边缘与背景的交界。哪几项相对基线变稳了,哪几项还在漂。
- 差异程度:分成「几乎无感」「需要并排才能发现」「一眼能看出」三档来记。一句话保留句的作用通常集中在减少换脸和五官大位移,对肤色、边缘融合的约束往往有限。
如果这一跑比基线还差,先检查保留句是不是和目标背景的光照需求打架,比如原图是正面平光、新背景是强逆光,模型会被迫改写人物受光面。
把保留描述从一句话拆成逐项描述
第三次把保留点拆成清单式描述,背景改写也写成独立块,减少模型把两侧需求混在一起处理:
只修改背景区域,人物像素保持原样。
保留项:
- 脸型轮廓与下巴线条
- 眼睛、鼻子、嘴的相对位置和间距
- 肤色与面部明暗分布
- 发型轮廓与发际线位置
- 人物姿态与占画面比例
背景改写项:
- 场景:室内换成傍晚海边沙滩
- 光照方向与色温:尽量与人物原有受光方向一致
- 人物边缘与背景交界处保留原有轮廓
输出存成 keep-list-run1.png。逐项写法带来的变化范围,通常表现为:脸部本身的漂移收敛得更明显,改动更多落在边缘融合和整体色调上;代价是交界处可能出现拼接感、人物边缘发灰,或者新背景的景深关系不自然。也就是说,逐项比一句话更容易稳住五官,但不等于画面更自然,需要你自己在「脸部稳」和「整体协调」之间取舍。
用通用调用骨架批量提交同一组指令
单次结果说明不了稳定性。把同一条指令重复提交几次,看脸部漂移是每次都出现还是偶发。下面是不绑定具体接口字段的请求骨架,占位符按你的实际接入方式替换:
提交骨架(占位):
{
"input_image": "<原图引用或上传句柄>",
"instruction": "<本次使用的指令文本>",
"sample_tag": "<自定义标记,如 base / keep-sentence / keep-list>",
"repeat_times": "<重复次数>"
}
每跑一次填一行记录,重点是先定好判断口径再去填,避免事后解释。参考下面这张记录表的结构:
- 指令版本:基线 / 一句话保留 / 逐项保留
- 重复序号:第几次生成
- 背景替换:成功 / 部分成功 / 失败
- 脸部漂移部位:脸型 / 五官间距 / 肤色 / 发际线 / 无
- 漂移程度:几乎无感 / 并排可见 / 一眼可见
- 边缘问题:无明显问题 / 光晕 / 拼接感 / 颜色渗入
- 备注:光照冲突、人物占比等观察
同一版本重复几轮之后,如果每次都出现同一处漂移,那更可能是指令本身没覆盖到那个部位;如果只是偶发,可以先把结论按「不稳定」处理,再决定要不要继续加约束词。
整理可复用指令结构:主体锁定句加背景改写句
把前面三次的经验收成一个三段式模板,之后换场景只改第二段:
[主体锁定句] 只修改背景区域,人物像素保持原样。
[保留清单句] 保留:脸型轮廓与下巴线条 / 五官相对位置与间距 / 肤色与面部明暗 / 发型轮廓与发际线 / 人物姿态与占画面比例。
[背景改写句] 把背景换成 <目标场景>;光照方向与色温 <与原图一致 / 按要求调整>;人物边缘与背景交界处保留原有轮廓。
三组结果对照按你自己的输出填写,不要凭印象,照抄记录表里的判断:
- 基线版:「把背景换成傍晚的海边」——背景替换通常最自然,脸部漂移也最明显。
- 一句话保留版:加「保持人物五官、脸型、肤色、发型不变」——脸部大位移减少,肤色和边缘仍可能漂。
- 逐项保留版:三段式模板——脸部漂移相对收敛,边缘拼接感和色调不协调的概率上升。
什么算可接受,可以按用途分档:如果是做情绪图、缩略图,脸部「并排才能看出差异」通常就够用;如果是有明确人物身份要求的场景,只要出现五官间距变化或明显换脸,就应该当失败处理,改用局部蒙版、分区重绘这类能真正限定区域的手段,而不是继续往对话指令里堆形容词。反过来,如果只有边缘一圈光晕、脸部本身没动,一般可以接受,必要时单独对交界处做一次小范围修饰。任何一次生成后,都建议把原图和输出图并排过一遍再交付,不要只看整图缩略图就下结论。