Stable Diffusion入门第16-18天:从文生图到图生图——用一张图“导演”你的AI创作
如果文生图是“无中生有”,那图生图就是“借力打力”。
前两周我们已经跑通了文生图工作流,也搞懂了节点、连线和数据类型。今天我们要进入一个更有趣的领域——图生图(Image to Image,简称img2img)。
简单来说,图生图就是把一张已有的图片作为起点,让AI基于它生成一张新图片。你可以用它做风格迁移、线稿上色、老照片修复、图像增强……应用场景非常广泛。
而这一切的核心,只有一个参数——denoise(降噪强度)。它决定了一张图在“忠于原图”和“自由创造”之间,到底站在哪个位置。
一、图生图 vs 文生图:差的不只是一张图
在深入搭建工作流之前,先搞清楚一个根本问题:图生图和文生图在原理上到底有什么不同?
文生图的起点是一张纯粹的随机噪声——KSampler从Empty Latent Image拿到一张空白画布(全是噪声),然后根据你的提示词,一步步去噪,最终变成一张有内容的图片。
图生图的起点则是一张已有的图片。流程是这样的:
- VAE Encoder把你上传的图片编码成潜空间表示(LATENT)
- 根据
denoise参数的设定,往这个潜空间表示里加入一定量的噪声 - KSampler从这个“加了一半噪声”的状态开始,结合你的提示词进行去噪
- VAE Decoder把去噪后的潜空间数据解码回像素图像
关键区别:文生图从100%噪声开始,图生图从“部分噪声”开始。
denoise决定了这个“部分”到底是多少——denoise=1.0相当于100%噪声(=文生图),denoise=0.0相当于0%噪声(=原图不变)。
二、图生图核心工作流:五个节点,一条线
图生图工作流比文生图只多了一个节点,少了一个节点——把Empty Latent Image换成Load Image+VAE Encode。
完整的工作流是这样的:
Load Checkpoint → Load Image → VAE Encode → CLIP Text Encode(正/负)→ KSampler → VAE Decode → Save Image
节点逐个拆解
1. Load Checkpoint(紫色输出)
和文生图一样,加载你的基础模型。输出MODEL、CLIP、VAE三个端口。
2. Load Image(蓝色输出)
这是图生图新增的节点。点击节点上的“upload”按钮,上传你要作为起点的图片。这个节点输出的是IMAGE类型(蓝色)——也就是像素空间的图像数据。
注意:
Load Image输出的是像素图像(IMAGE),而KSampler需要的是潜空间图像(LATENT)。所以中间必须加一个转换节点。
3. VAE Encode(粉色输出)
这个节点把Load Image传来的像素图像(IMAGE,蓝色)编码成潜空间表示(LATENT,粉色)。它需要两个输入:
- pixels:从
Load Image的IMAGE输出接入 - vae:从
Load Checkpoint的VAE输出接入(玫瑰色)
4. CLIP Text Encode(正/负)(橙色输出)
和文生图完全一样。正向提示词描述你想要什么,负向提示词描述你不想要什么。两个节点都需要从Load Checkpoint的CLIP端口(黄色)接入。
5. KSampler(粉色输出)
这是整个工作流的心脏。图生图和文生图在KSampler上的唯一区别是——denoise参数必须小于1。
KSampler需要的输入:
- model:从
Load Checkpoint的MODEL接入(紫色) - positive:从正向CLIP编码节点接入(橙色)
- negative:从负向CLIP编码节点接入(橙色)
- latent_image:从
VAE Encode的输出接入(粉色)——这是图生图和文生图最关键的区别
6. VAE Decode(蓝色输出)
把KSampler输出的潜空间图像(LATENT,粉色)解码成可视的像素图像(IMAGE,蓝色)。需要:
- samples:从KSampler的LATENT输出接入
- vae:从
Load Checkpoint的VAE输出接入(玫瑰色)
7. Save Image
保存最终结果,和文生图一样。
连线速查表(按颜色)
| 从 | 到 | 颜色 |
|---|---|---|
| Load Checkpoint (MODEL) | KSampler (model) | 紫色 → 紫色 |
| Load Checkpoint (CLIP) | CLIP Text Encode ×2 (clip) | 黄色 → 黄色 |
| Load Checkpoint (VAE) | VAE Encode (vae) | 玫瑰色 → 玫瑰色 |
| Load Checkpoint (VAE) | VAE Decode (vae) | 玫瑰色 → 玫瑰色 |
| Load Image (IMAGE) | VAE Encode (pixels) | 蓝色 → 蓝色 |
| VAE Encode (LATENT) | KSampler (latent_image) | 粉色 → 粉色 |
| CLIP Text Encode (CONDITIONING) | KSampler (positive/negative) | 橙色 → 橙色 |
| KSampler (LATENT) | VAE Decode (samples) | 粉色 → 粉色 |
| VAE Decode (IMAGE) | Save Image (images) | 蓝色 → 蓝色 |
注意:整个工作流中,数据类型的流转是IMAGE(蓝) → LATENT(粉) → CONDITIONING(橙)参与去噪 → LATENT(粉) → IMAGE(蓝)。颜色不匹配的地方,就是你需要加转换节点的地方。
三、Denoise:图生图的“灵魂参数”
如果说图生图有一把钥匙,那这把钥匙的名字就叫denoise。
Denoise到底是什么?
denoise的取值范围是0.0到1.0。它的含义是:在潜空间中,往原始图片里加入多少噪声。
- denoise = 1.0:加入100%噪声,原始图片完全被覆盖,相当于文生图
- denoise = 0.0:加入0%噪声,原始图片完整保留,相当于什么都没做
- denoise = 0.5:加入50%噪声,从“一半原图、一半噪声”的状态开始去噪
Denoise不同取值的效果
| denoise值 | 效果 | 适用场景 |
|---|---|---|
| 0.0 - 0.3 | 几乎不变,仅做微小调整 | 图像修复、细节增强、降噪 |
| 0.3 - 0.5 | 细微变化,保留构图和主体 | 风格微调、色彩调整、高清放大 |
| 0.5 - 0.7 | 明显变化,保留大致结构 | 风格迁移、换装、背景替换 |
| 0.7 - 0.9 | 较大变化,仅保留粗略轮廓 | 草图转写实、大幅度风格转换 |
| 0.9 - 1.0 | 几乎完全重绘 | 接近文生图,仅保留极少量原图信息 |
一个直观的理解方式
想象你有一幅铅笔素描(原图),现在想把它变成水彩画:
- denoise = 0.2:AI基本照着素描描一遍,稍微润色一下线条——你几乎看不出变化
- denoise = 0.5:AI保留了素描的构图和轮廓,但把线条渲染成了水彩的笔触——看得出是同一幅画,但风格变了
- denoise = 0.8:AI只保留了素描的大致构图(比如人物位置、物体分布),但细节全部重新生成——看起来像“根据素描重新画了一幅水彩”
- denoise = 1.0:AI完全无视素描,只根据你的提示词“水彩画”重新生成——素描相当于没起任何作用
Denoise和其他参数的关系
Denoise和Steps的关系:denoise控制的是“从哪个步数开始去噪”。如果总步数是20步,denoise=0.5意味着从第10步开始——前10步的噪声去除过程被跳过了。所以denoise越低,实际生效的步数越少,这也是为什么低denoise时细节会少一些。
Denoise和CFG的关系:denoise控制“原图的影响力”,CFG控制“提示词的影响力”。两者是独立的——高denoise + 高CFG = 完全按照提示词重画;低denoise + 高CFG = 在原图基础上用力按照提示词调整(可能导致画面撕裂)。一般建议图生图时CFG设置在7-9之间。
四、实战:从搭建到调试,一步步来
第一步:搭建工作流
从空白画布开始,依次添加7个节点(上文列出的全部),按照颜色匹配表完成连线。
第二步:上传图片
在Load Image节点点击“upload”按钮,选择一张你准备好的图片。建议先从简单图片开始——比如一张清晰的照片或插画,分辨率不要太大(512×512左右最佳)。
第三步:填写提示词
在正向CLIP节点中输入你想要的效果。比如原图是一只猫的照片,你想把它变成水彩风格:
watercolor painting, a cute cat, soft colors, artistic, gentle brush strokes负向提示词输入通用内容:
blurry, low quality, distorted, ugly, bad anatomy第四步:设置KSampler参数
- Seed:随机或固定(固定可以复现结果)
- Steps:20-30步
- CFG:7-8
- Sampler:DPM++ 2M Karras 或 Euler a
- Scheduler:Karras 或 Normal
- denoise:先从0.5开始
第五步:生成并观察
点击Queue Prompt(或Ctrl+Enter),等待生成完成。
第六步:反复调整denoise
这是最关键的一步。从0.1到0.9,每个值生成一张图,观察变化。
你会发现一个连续的渐变光谱:
denoise=0.1:几乎看不出变化,只是稍微锐化或柔化了一下
denoise=0.3:颜色和纹理有了细微调整,但构图完全没变
denoise=0.5:风格开始转变,但主体轮廓、物体位置依然清晰可辨
denoise=0.7:风格大变,细节被重新生成,但还能看出“原图的影子”
denoise=0.9:几乎是一张全新的图,只有构图层面还隐约有原图的痕迹
这就是图生图最迷人的地方——你可以在“忠实原图”和“自由创造”之间找到一个完美的平衡点。
五、进阶玩法:图生图的三种典型场景
掌握了基础工作流之后,来看看图生图最常见的三种应用场景。
场景一:风格迁移
把一张写实照片变成动漫风格、水彩风格、油画风格……
配置建议:
- denoise:0.5-0.7
- 提示词:详细描述目标风格,如“anime style, cel shaded, vibrant colors, studio ghibli”
- 负向提示词:排除原风格,如“realistic, photographic, 3d render”
- CFG:8-10(较强风格引导)
场景二:高清放大
把一张低分辨率图片放大并增加细节。
配置建议:
- 在
VAE Encode之前加一个Image Scale节点,把图片放大到目标尺寸(如2倍) - denoise:0.3-0.5(低denoise保留原图结构,同时增加细节)
- 提示词:“high resolution, sharp focus, detailed, 8k, masterpiece”
场景三:草图→写实
把一张线稿或粗糙草图变成细节丰富的写实图像。
配置建议:
- denoise:0.7-0.9(高denoise,因为草图本身信息量少,需要AI大量“脑补”)
- 提示词:详细描述你想要的最终效果——材质、光影、色彩、氛围
- 这可能是最能体现图生图“创造力”的场景——AI从一条线稿中“读懂”了你想要的画面
六、常见问题与排障
Q1:生成结果和原图几乎一样,完全没有变化
原因:denoise设置得太低(接近0)。
解决:逐步提高denoise,从0.3开始试,每次增加0.1,直到看到明显变化。
Q2:生成结果完全不像原图,等于重新画了一张
原因:denoise设置得太高(接近1.0)。
解决:降低denoise到0.5-0.7区间。记住:denoise=1.0 = 文生图,原图不起任何作用。
Q3:生成的图片模糊或细节丢失
可能原因:
- 原图分辨率太低——先用图像处理软件把原图放大到512×512以上
- Steps太少——增加到25-30步
- denoise太低导致实际生效步数太少——适当提高denoise
Q4:颜色变得很奇怪或画面撕裂
可能原因:
- CFG太高——图生图中CFG过高容易导致画面不自然,建议降到6-8
- 提示词和原图冲突太大——比如原图是猫,提示词却写“a dog”,AI会左右为难
Q5:VAE Encode节点报错
检查:
Load Image的IMAGE输出(蓝色)是否接到了VAE Encode的pixels输入(蓝色)Load Checkpoint的VAE输出(玫瑰色)是否接到了VAE Encode的vae输入(玫瑰色)- 颜色不匹配会导致连接失败
写在最后
图生图把一张静态的图片变成了创作的起点,而不是终点。你不必每次都从零开始“无中生有”——你可以拿一张草图、一张照片、一幅旧作,让AI帮你把它变成全新的样子。
而这一切的控制权,就握在denoise这个小小的参数手里。从0.1到0.9,你可以在“忠于原图”和“自由创造”之间自由滑动,找到那个最符合你创作意图的平衡点。
一张图 + 一段提示词 + 一个denoise值 = 无限可能。
接下来的路,你可以尝试:
- 把图生图和LoRA结合,在保留原图结构的同时注入特定风格
- 把图生图和ControlNet结合,用姿态、深度图等更精确地控制生成
- 把图生图用在局部重绘(Inpaint)上,只修改图片的特定区域
图生图的世界,比你想象的更大。
