拍了一张照片,背景有点乱:桌子下面全是线,椅子上还有毛巾,衣柜门也没关。我把照片发给 ChatGPT,让它帮我把背景弄干净一点,特别强调不要改变人物。

结果试了好几次,分别用了 GPT、Gemini 和豆包,结果都不行。Gemini 生成的画质很糊,GPT 生成的总是改变人脸,豆包也是。我反复强调不要动人物,甚至还想骂 AI,但它还是会改。

(为啥要说脏话管用呢,之前看到知乎上的一个解释是因为人们在听到对面输出情绪的时候才会意识到这件事情重要,今儿给出高质量的回答,也就是是哦,说点脏话,可以让模型的注意力往高质量的语义上靠拢)

后来我就在想,为什么会这样?明明只是想清理一下背景,为什么每次看起来都像是把人重新画了一遍?于是我开始问 AI,它到底是怎么处理这张图片的,有没有办法只修改背景、不修改人物。

问完才知道,AI 确实每次是在重新生成整张图片。即使提示词要求保持人物不变,还是不能保留原来的像素。如果想精确控制修改范围,就需要用到 Inpainting(局部修复)、Mask(蒙版)这些技术。比如先把人物区域保护起来,只允许 AI 修改背景,最后再把修复结果合成回原图。

找到这个方向之后,我又让 AI 把方案具体写出来,包括用什么 Python 工具包、怎么处理图片、怎么设置蒙版,以及怎么检查人物有没有变化。又进一步要求它把方案写严谨一点。除了具体步骤,还要明确目标、限制条件,以及可以量化、可以检验的指标。

比如这次修图,我的要求就变成了:只能修改指定的背景区域,不能缩放原图,人物保护区域的像素变化必须为 0,最后还要用 Python 对比修改前后的图片,检查有没有违反这些要求。

有了这个步骤,就试了一次,最后分别用 GPT、Gemini 都得到了比较满意的结果,豆包差点(而且用时非常长)。

整个过程让我有两个很深的感受。

一、用好 AI,不一定需要提前掌握很多技术,但需要有解决问题的意识

我一开始也不知道什么是 Inpainting,更不知道怎么用蒙版保护人物。但当 AI 连续几次做不好时,我没有继续反复修改提示词,而是开始追问它为什么做不好、用了什么技术、有没有其他实现方式,然后拿着这些假设去试验。

二、一个严谨的方案,不能只有执行步骤,还需要目标、边界和验收标准

为了严谨和系统化,边界和验收标准非常重要,现在有了 AI 执行,只要拆解好目标和定义好验收标准,差模型也能做到相同的效果。

三、附:局部修图的工作流

整个局部修图的工作流规范在附件里,可以这样问:

  1. 先提供一张要修改的图片
  2. 基于这张原始图片,按照 pixel_preserving_local_edit_pipeline.pdf 规范进行局部修图。需要修改的区域:【填写具体修改内容】;禁止修改的区域:【填写需要保持不变的内容】

完整的规范文档在这里:pixel_preserving_local_edit_pipeline.pdf