Skip to content

AI 图像编辑

AI 图像编辑是扩散模型最实用的能力之一——不再从零生成,而是以现有图像为起点进行修改、补全和扩展。本页梳理从图生图到指令式编辑的完整技术谱系。前置阅读:扩散模型。

想象你手里有一张照片和一个「智能橡皮擦」——

  • Img2Img(图生图)= 把照片放进「风格转换器」,保留大致构图但改变风格/细节。像加了一层滤镜,但变化远比滤镜丰富。
  • Inpainting(局部重绘)= 用画笔在照片上圈出一片区域(“这块东西不要了”),擦掉后让 AI 凭空补上合理内容。像 Photoshop 的橡皮擦,但擦掉后会自动”长”出新的东西。
  • Outpainting(扩图)= 画布太小?AI 能顺着边缘往外”续画”,扩展出照片之外的风景。像相机突然拥有了更广的镜头。
  • InstructPix2Pix(指令式编辑)= 直接说”把背景换成海滩”、“把猫变成狗”,AI 听懂自然语言指令来改图。
  • Drag-based editing(拖拽式编辑)= 在图上点两个点(“把这只手的手指尖移到这里”),AI 在保持语义一致的前提下移动对应物体——像用鼠标拖动真实物体。代表作 DragGAN、DragDiffusion、FreeDrag。
  • Reference-image editing(参考图编辑)= 给一张参考图(“照这个人的长相/这种画风来改”),AI 提取身份或风格特征并注入编辑过程。代表技术 IP-Adapter、InstantID、PhotoMaker。

标准文生图从纯噪声 x_T 出发去噪。Img2Img 的区别是:不从纯噪声开始,而是把输入图像先加部分噪声(加到 x_t,而非 x_T),然后从第 t 步开始去噪。

直觉理解:扩散模型(Diffusion Model)的核心是两步——前向过程逐步往图像里加噪声,直到变成纯噪声(一张雪花屏);反向过程(去噪)则从噪声逐步「雕刻」出清晰图像。CLIP 是 OpenAI 提出的图文对齐模型,它把文本和图像编码到同一个向量空间,使得模型能判断「这段文字和这张图有多匹配」,从而在去噪时引导图像朝文本描述的方向走。Img2Img 的精妙之处在于:不需要走到纯噪声那个极端,在中间某步停住再往回走,就能既保留原图的「骨架」,又让文本引导改变「血肉」。

加噪越少(t 越小)→ 结果越接近原图;加噪越多(t 越大)→ 变化越大。这个加噪比例由 denoising strength(去噪强度) 参数控制:

  • 去噪强度 = 0.0:不加噪,输出 = 输入(没有任何变化)。
  • 去噪强度 = 0.3~0.5:轻微修改(改色调、加细节),保留大部分构图。
  • 去噪强度 = 0.7~0.9:大幅改变(换风格、变物体),只保留大致轮廓。
  • 去噪强度 = 1.0:完全加噪,等价于纯文生图。

DDIM 与采样:早期的 DDPM(去噪扩散概率模型)每一步去噪只能走很小的步子,需要上千步才能生成一张图。DDIM(Denoising Diffusion Implicit Models,Song et al. 2020)通过改写采样公式,把推理步数压缩到 20~50 步,且生成质量几乎不降。Img2Img 的「从第 t 步开始去噪」正是建立在 DDIM 这种可控的离散采样轨迹之上——你可以精确指定从哪一步切入。后续的 DPM-Solver、Euler 等采样器进一步优化了这一点,而 2024 年后的 SD3、FLUX 则转向了 Flow Matching(流匹配)框架,但「从中间步切入」这一编辑思路依然成立。

Inpainting 在 Img2Img 基础上引入了 mask(掩码)——一张与图像同尺寸的黑白图,白色区域表示「需要重新生成」,黑色区域表示「保持不变」。核心机制:

  1. 输入图像 + mask + 文本提示(描述要填充什么内容)。
  2. U-Net 在去噪过程中,mask 外的区域始终用原图替换,只对 mask 内的区域做扩散生成。
  3. 最终结果:mask 内的旧内容被擦除并由 AI 生成的新内容替换,mask 外的区域像素级保持不变。

关键参数是 mask 膨胀(mask blur/feathering)——mask 边缘需要做羽化模糊,否则生成区域和保留区域之间会有明显接缝。

Outpainting 是 Inpainting 的特例:mask 覆盖画布之外的新区域(即原图全部是”保留区”之外,新扩展的画布是”生成区”)。AI 需要根据已有边缘的内容,合理地”续画”出扩展区域。难点在于保持方向和光照的一致性。

SDEdit(Meng et al. 2021)是最朴素的编辑思路:给任意图像(手绘草图、低质量照片)加部分噪声,再去噪恢复——噪声会”模糊”掉不需要的细节,去噪则会补上合理的清晰内容。Img2Img 本质上就是 SDEdit 在扩散模型上的应用。

InstructPix2Pix(Brooks et al. 2023)用一种更自然的交互方式:不用画 mask,直接输入自然语言指令(“make it a watercolor painting”、“change the hair to red”)。模型在训练时学会了「指令 → 编辑」的映射,推理时一步到位完成编辑。这是图像编辑从「工具操作」走向「自然语言交互」的关键进步。

import torch
from diffusers import StableDiffusionInpaintPipeline
from diffusers.utils import load_image
# 加载专门为 inpainting 训练的模型
pipe = StableDiffusionInpaintPipeline.from_pretrained(
"runwayml/stable-diffusion-inpainting", torch_dtype=torch.float16
).to("cuda")
# 读取原图和 mask(白色区域=待重绘)
init_image = load_image("photo.png")
mask_image = load_image("mask.png") # 黑底白字 mask
# 用文本提示描述要在 mask 区域生成的内容
result = pipe(
prompt="a fluffy orange cat sitting on the grass",
image=init_image, # 原始图像
mask_image=mask_image, # 指定重绘区域
strength=0.85, # 去噪强度
num_inference_steps=30,
).images[0]
result.save("inpainted.png")
  • denoising strength 是核心旋钮:图生图时 0.30.5 保留构图微调风格,0.60.8 大幅重构。找到「变化幅度 vs 保留原图」的平衡点。
  • mask 边缘羽化不可省:Inpainting 时 mask 边缘如果不做模糊过渡,生成区域和保留区域之间会有刺眼的接缝。Diffusers 的 pipeline 默认有 mask_blur 参数。
  • Inpainting 专用模型优于通用模型:stable-diffusion-inpainting 模型在训练时就学习了 mask 感知,效果远好于用普通 SD 模型硬做 inpainting。
  • Outpainting 需要注意方向连续性:扩展区域要保持原图的光照、透视、色调,建议小步扩展(每次扩展 128~256 像素)而非一次大幅扩展。
  • InstructPix2Pix 需要专用模型:普通的 SD 模型不支持指令式编辑,必须加载 timbrooks/instruct-pix2pix 模型。
  • Photoshop 创成式填充:Adobe 将 Inpainting 集成进 Photoshop——选中区域后输入文字描述,AI 自动填充内容,已成为图像编辑的标准工作流。
  • 物体移除(Object Removal):拍照片时有路人入镜?用 Inpainting 选中路人,prompt 留空或描述背景,即可”擦除”不需要的物体。
  • 背景替换:电商商品图换纯白底、证件照换蓝色背景——Inpainting 圈出背景区域,prompt 描述新背景即可。
  • 照片修图与美化:去除皮肤瑕疵、修复老照片的划痕和破损区域、调整局部光影。
  • 概念设计迭代:设计师在 Inpainting 中不断替换局部元素(换个窗户样式、换个颜色方案),快速探索设计变体。
  • AI 扩图:Midjourney 的 Pan/Zoom、Photoshop 的 Generative Expand——将窄画幅扩展为宽画幅,AI 自动补全两侧内容。
类库语言说明
DiffusersPython提供 Img2Img、Inpainting、InstructPix2Pix 等完整 Pipeline
ComfyUIPython/JS节点式工具,Inpainting 节点支持精细 mask 控制和批量编辑
AUTOMATIC1111 WebUIPython内置 Img2Img/Inpainting/Outpainting 模式,界面直观易用
Adobe Firefly在线Photoshop 内置的创成式填充,商业级 Inpainting 服务
GIMP + AI 插件C/Python开源图像编辑器配合 Stable Diffusion 插件,免费替代 Photoshop
CleanDiffuserPython专注可控扩散的推理库,提供编辑能力封装
术语英文解释
图生图Img2Img以输入图像为基础,加部分噪声后重新去噪生成的新图像
局部重绘Inpainting用 mask 指定区域,仅对该区域重新生成的编辑方式
扩图Outpainting向画布外延伸,用 AI 续画扩展图像边界的编辑方式
掩码Mask与图像同尺寸的二值图,标记需要修改(白色)和保留(黑色)的区域
去噪强度Denoising Strength控制对输入图像加噪程度的参数,决定编辑幅度的大小
SDEditSDEdit加噪去噪编辑方法,通过部分加噪再恢复来修改图像
指令式编辑InstructPix2Pix用自然语言指令(如”换成海滩背景”)直接驱动的图像编辑方式
羽化Feathering / Blur对 mask 边缘做渐变模糊,使生成区域与保留区域自然过渡
  • Brooks et al. “InstructPix2Pix: Learning to Follow Image Editing Instructions” (CVPR 2023):指令式图像编辑的开创性工作,用 GPT-3.5 生成编辑指令数据、用 Stable Diffusion 生成训练图像,训练出能听懂自然语言指令的编辑模型。
  • Meng et al. “SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations” (ICLR 2022):提出加噪去噪的通用编辑范式,是 Img2Img 的理论基础。
  • Avrahami et al. “Blended Diffusion for Text-driven Editing of Natural Images” (CVPR 2022):局部文本驱动编辑的早期工作,提出了 mask 区域内做扩散编辑的方法。