菜单

图像到图像 (img2img)

相关源文件

图像到图像(img2img)是 Stable Diffusion Web UI 的核心功能,它根据文本提示和其他参数转换现有图像。与从头开始生成图像的文本到图像(参见第 4.1 节)不同,img2img 使用现有图像作为起点,允许您在保留原始结构某些方面的情况下对其进行修改、增强或完全转换。

1. 概述

img2img 系统提供多种操作模式

  • 标准 img2img:根据文本提示转换现有图像
  • 草图:使用绘制的草图作为图像生成的基础
  • 图像修复:使用蒙版选择性地修改图像的局部
  • 图像修复草图:结合草图绘制和图像修复
  • 批量处理:使用相同参数处理多张图像

所有模式都依赖于相同的底层处理流程,但它们在准备输入图像和蒙版的方式上有所不同。

2. 系统架构

Img2Img 流程

来源:modules/processing.py375-396 modules/processing.py819-864 modules/img2img.py152-253

模式选择和图像准备

来源:modules/img2img.py152-182 modules/img2img.py20-149

3. 处理流程

img2img 处理遵循以下步骤

  1. 输入准备:用户提供输入图像、文本提示和各种参数
  2. 图像编码:输入图像通过 VAE 编码器编码到潜在空间
  3. 噪声添加:根据去噪强度,将一定量的噪声添加到潜在表示中
  4. 去噪:模型在提示的引导下,逐步从潜在表示中去除噪声
  5. 解码:最终的潜在表示被解码回图像

关键处理类

负责 img2img 处理的主要类是 StableDiffusionProcessingImg2Img,它继承自基类 StableDiffusionProcessing 并增加了 img2img 特定的功能。

参数描述
init_images要处理的输入图像列表
resize_mode图像调整大小的方式(0=仅调整大小,1=裁剪并调整大小,2=调整大小并填充,3=仅调整大小(潜在空间放大))
denoising_strength控制原始图像保留的程度(0.0-1.0)
mask用于图像修复的可选蒙版
mask_blur应用于蒙版的模糊量
inpainting_fill填充蒙版区域的方法
inpaint_full_res是否以全分辨率进行图像修复
inpaint_full_res_padding全分辨率图像修复的填充量

来源:modules/processing.py136-227 modules/img2img.py192-215

4. 操作模式

4.1 标准 Img2Img

在标准模式下,整个输入图像根据提示进行转换。去噪强度参数控制原始图像保留的程度

  • 低去噪强度(0.0-0.3):细微变化,保留大部分原始图像
  • 中等去噪强度(0.3-0.7):适度转换
  • 高去噪强度(0.7-1.0):广泛转换,主要使用输入图像进行构图
Original Image → VAE Encode → Add Noise (based on denoising_strength) → Denoise → VAE Decode → Result

来源:modules/img2img.py157-159 modules/processing.py375-396

4.2 草图模式

草图模式允许使用简单的绘图或草图作为输入。模型将尝试解释草图并根据它生成详细图像

Sketch → VAE Encode → Add Noise → Denoise → VAE Decode → Detailed Image

草图模式最适合高去噪强度(0.8-1.0),因为草图通常缺乏细节。

来源:modules/img2img.py160-162 modules/ui.py545-546

4.3 图像修复模式

图像修复允许通过指定蒙版选择性地修改图像的局部

标准图像修复

使用专门的绘图界面,您可以在图像上绘制蒙版

Image + Mask → VAE Encode → Apply Mask → Add Noise to Masked Region → Denoise → VAE Decode → Result

图像修复草图

结合了草图绘制和图像修复。草图和原始图像之间的变化会自动创建蒙版

Original + Sketch → Generate Mask from Differences → Apply Inpainting → Result

图像修复上传

允许上传单独的图像和蒙版

Image + Separate Mask → Apply Inpainting → Result

来源:modules/img2img.py163-176 modules/ui.py548-568 modules/processing.py336-371

4.4 批量处理

批量模式使用相同的参数处理多张图像

Multiple Images → Process Each with Same Parameters → Multiple Results

批量处理支持两种来源类型

  • 上传:处理一批上传的图像
  • 从目录:处理指定目录中的图像

来源:modules/img2img.py20-149 modules/ui.py570-592

5. 图像条件化

img2img 过程中一个关键的部分是图像条件化,它向扩散模型提供输入图像的信息。根据模式的不同,使用不同的条件化方法

来源:modules/processing.py375-396 modules/processing.py336-371

6. 关键参数

6.1 去噪强度

这可能是 img2img 最重要的参数。它控制原始图像保留的程度

  • 0.0:原始图像无变化
  • 1.0:完全转换(相当于 txt2img,使用相同的种子和输入图像作为参考)

从技术上讲,去噪强度决定了在去噪过程开始之前,输入图像的潜在表示中添加了多少噪声。

6.2 调整大小模式

模式描述
仅调整大小简单地将图像调整到目标尺寸
裁剪并调整大小裁剪图像以保持纵横比,然后调整大小
调整大小并填充调整大小并用内容填充空白区域
仅调整大小(潜在空间放大)在潜在空间中调整大小

来源:modules/ui.py618

6.3 蒙版设置(用于图像修复)

参数描述
蒙版模糊模糊蒙版边缘以实现更平滑的过渡
蒙版 Alpha控制蒙版的不透明度/强度
图像修复填充填充蒙版区域的方法(填充、原始、潜在噪声、潜在空)
以全分辨率进行内容填充仅以全分辨率处理蒙版区域

来源:modules/ui.py548-568 modules/img2img.py163-176

7. 图像条件化方法

processing.py 中的 img2img_image_conditioning 函数根据模型类型处理不同的条件化方法

7.1 标准条件化

对于大多数模型,该函数从编码的潜在图像创建简单的条件张量。

7.2 图像修复条件化

对于图像修复模型(那些带有 conditioning_key 'hybrid' 或 'concat' 的模型),该函数

  1. 创建原始图像的蒙版版本
  2. 编码此蒙版图像
  3. 将蒙版和编码图像连接起来作为条件

7.3 特殊模型条件化

  • Depth2Image 模型:从深度信息创建条件
  • UnCLIP 模型:使用模型的嵌入器创建条件
  • SDXL 图像修复:使用 SDXL 模型的专用条件

来源:modules/processing.py375-396 modules/processing.py336-371

8. 与脚本集成

img2img 系统旨在通过 ScriptRunner 系统与扩展脚本协同工作。在处理开始之前

  1. img2img 的脚本被初始化
  2. 脚本回调可以修改处理参数
  3. 处理完成后,脚本可以进一步修改结果

这允许通过扩展对 img2img 过程进行广泛的自定义。

来源:modules/img2img.py131-142 modules/img2img.py240-242

9. 技术实现

9.1 核心函数:img2img

modules/img2img.py 中的 img2img 函数是 img2img 过程的主要入口点。它

  1. 处理来自 UI 的输入参数
  2. 确定操作模式
  3. 准备图像和蒙版
  4. 创建 StableDiffusionProcessingImg2Img 实例
  5. 运行处理并将结果返回到 UI

来源:modules/img2img.py152-253

9.2 批量处理:process_batch

函数 process_batch 负责使用相同参数处理多张图像。它

  1. 从指定源收集图像
  2. 使用相同参数处理每张图像
  3. 如果请求,可选地使用指定目录中的图像修复蒙版
  4. 如果请求,可以从 PNG 信息中提取参数

来源:modules/img2img.py20-149

9.3 UI 组件

img2img UI 在 modules/ui.py 中定义,包括

  1. 用于不同模式的多个选项卡界面
  2. 具有蒙版绘制功能的图像编辑器
  3. 用于处理所有方面的参数控制
  4. 批量处理界面
  5. 在选项卡之间移动图像的复制按钮

来源:modules/ui.py507-615

10. 用例示例

  1. 风格迁移:将照片转换为艺术风格
  2. 内容修改:在保留构图的同时更改场景中的元素
  3. 细化:增强或清理粗略草图或低质量图像
  4. 变体:创建现有图像的多个变体
  5. 图像修复:修复或替换图像的特定部分
  6. 外绘:将图像扩展到其原始边界之外
  7. 批量处理:对一组图像应用一致的修改

11. 与文本到图像的比较

功能Img2ImgTxt2Img
输入需要初始图像从随机噪声开始
控制对构图有更高的控制对精确细节的控制较少
去噪使用去噪强度参数始终使用全噪声(相当于强度=1.0)
模式多种模式(标准、草图、图像修复等)单一模式
用例修改、细化、目标生成从零开始创建、开放式生成

来源:modules/img2img.py152-253 modules/txt2img.py14-120