ERNIE-Image img2img 图生图完整指南:从草图到精修的专业工作流
发布日期:2026-05-06
作者:颜明
标签:img2img、图生图、ComfyUI、Denoise、ERNIE-Image
引言
ERNIE-Image 作为百度推出的开源 8B 文生图模型,最为人熟知的能力是**文本到图像(text-to-image)**生成。但 HuggingFace 上的 ERNIE-Image 官方合集明确标注了其支持 "text2img、img2img" 两种模式。
img2img(图生图) 是 AI 图像生成中最实用的功能之一:你提供一张参考图,模型基于这张图的内容和结构,结合新的文字描述生成全新的图像。从草图渲染到风格转换,从老照片修复到概念设计,img2img 打开了无限可能。
本文将深入介绍 ERNIE-Image 的 img2img 能力,包括 ComfyUI 和 diffusers 两种部署方式,以及 denoise 参数的关键技巧。
img2img 是什么?与 text2img 的区别
核心概念
text2img(文生图):从零开始,根据文字描述生成全新图像。Denoise = 1.0,模型完全自由创作。
img2img(图生图):以现有图像为起点,根据文字描述对图像进行改造。Denoise < 1.0,模型在保留原图部分特征的基础上进行再创作。
工作流程对比
text2img:
Prompt → 编码 → 空潜空间 → 扩散采样 → 解码 → 输出图像
img2img:
Prompt + 输入图像 → 编码 → VAE编码输入图 → 加噪 → 扩散采样 → 解码 → 输出图像
img2img 的关键在于 denoise 参数——它控制输入图像的保留程度:
- denoise = 1.0:等同于 text2img,原图信息被完全覆盖
- denoise = 0.8:大幅改变,保留基本构图
- denoise = 0.5:中度修改,保留大量原始细节
- denoise = 0.2:轻微修饰,如调色或风格微调
Denoise 参数详解
Denoise 是 img2img 的核心参数,决定了"新"与"旧"的比例。以下是不同 denoise 值的实际效果:
Denoise 值速查表
| Denoise | 变化程度 | 适用场景 | 推荐步数 |
|---|---|---|---|
| 0.1-0.2 | 极轻微 | 颜色微调、亮度调整 | 8-15 |
| 0.2-0.3 | 轻微 | 风格微调、去噪 | 10-20 |
| 0.3-0.5 | 中等 | 风格转换、材质变化 | 15-30 |
| 0.5-0.7 | 较大 | 场景改造、人物换装 | 20-40 |
| 0.7-0.85 | 大幅 | 草图渲染、概念设计 | 30-50 |
| 0.85-0.95 | 几乎全新 | 保留构图的全新创作 | 40-50 |
| 1.0 | 完全新生 | 等同于 text2img | 8(Turbo)/50(Standard) |
实战示例
示例 1:照片 → 动漫风格(denoise = 0.4)
输入图:真人照片
Prompt:"a cute anime girl, detailed eyes, chibi style, pastel colors"
Denoise:0.4
效果:保留面部轮廓和表情,转换为动漫画风。
示例 2:草图 → 精细渲染(denoise = 0.75)
输入图:手绘建筑草图
Prompt:"modern glass office building, sunset lighting, photorealistic, architectural photography"
Denoise:0.75
效果:保留建筑轮廓和结构,生成照片级渲染。
示例 3:老照片修复(denoise = 0.15)
输入图:模糊老照片
Prompt:"clear portrait, high resolution, sharp details, warm lighting"
Denoise:0.15
效果:在保留原始内容的基础上提升清晰度和色彩。
ComfyUI 中 img2img 工作流搭建
核心节点
ERNIE-Image img2img 工作流基于 text2img 工作流,只需添加/修改以下节点:
- Load Image — 加载输入图片
- VAE Encode — 将输入图片编码为潜空间表示
- KSampler — 关键节点,设置 denoise < 1.0
详细步骤
步骤 1:加载模型和编码器
Load Diffusion Model → ERNIE-Image-Turbo.safetensors
Checkpoint Loader → T5-XXL + VAE
步骤 2:加载输入图片
Load Image → 选择你的参考图片
步骤 3:VAE 编码输入图
VAE Encode → 连接 Load Image 和 VAE 节点
这一步将像素空间图像转换为潜空间表示,是 img2img 的关键。
步骤 4:Prompt 编码
CLIP Text Encode (Positive) → 你的正向 Prompt
CLIP Text Encode (Negative) → 负面描述(如 "blurry, low quality")
ERNIE-Image 的 Prompt Enhancer(PE) 在 img2img 模式下同样有效。建议在复杂风格转换时启用 PE,在精确还原时关闭 PE。
步骤 5:KSampler 配置
KSampler:
model → Load Diffusion Model 输出
positive → CLIP Text Encode (Positive)
negative → CLIP Text Encode (Negative)
latent_image → VAE Encode 输出(关键!不是空潜空间)
denoise → 0.4(根据需求调整)
steps → Turbo 8 步,Standard 30-50 步
cfg → 6.0
sampler_name → euler
scheduler → normal
步骤 6:VAE 解码输出
VAE Decode → 连接 KSampler 输出
Save Image → 保存结果
完整节点连接示意
[Load Image] ──→ [VAE Encode] ──→ [KSampler.latent_image]
│
[CLIP Text Encode (+)] ──→ [KSampler.positive] │
[CLIP Text Encode (-)] ──→ [KSampler.negative] ──→ [VAE Decode]
[Load Diffusion Model] ──→ [KSampler.model] ──→ [Save Image]
Diffusers Python API 调用
如果你更喜欢编程方式,可以使用 HuggingFace Diffusers 库:
安装
pip install -U diffusers transformers accelerate
代码示例
import torch
from diffusers import DiffusionPipeline
from PIL import Image
加载模型
pipe = DiffusionPipeline.from_pretrained(
"baidu/ERNIE-Image-Turbo",
torch_dtype=torch.float16
)
pipe = pipe.to("cuda")
加载输入图片
input_image = Image.open("reference.jpg").convert("RGB")
input_image = input_image.resize((1024, 1024))
img2img 生成
prompt = "a futuristic cityscape at night, neon lights, cyberpunk style"
output_image = pipe(
prompt=prompt,
image=input_image,
strength=0.6, # 等同于 ComfyUI 的 denoise
num_inference_steps=8, # Turbo 模式
guidance_scale=6.0
).images[0]
output_image.save("output.jpg")
关键参数:
- strength:等同于 denoise 参数。范围 0.0-1.0
- num_inference_steps:Turbo 推荐 8 步,Standard 推荐 30-50 步
- guidance_scale:CFG 引导强度,推荐 5.0-7.0
实用场景详解
1. 草图渲染(Sketch to Render)
工作流:手绘草图 → ERNIE-Image img2img → 精细渲染图
输入:建筑/角色/产品的铅笔草图
Prompt:"photorealistic [描述], high detail, professional rendering"
Denoise:0.7-0.8
技巧:草图越清晰,输出效果越好。建议使用黑白线稿,避免彩色干扰。
2. 风格迁移(Style Transfer)
工作流:原图 → ERNIE-Image img2img → 新风格图
输入:任意图片
Prompt:"[目标风格] style, [描述]"
Denoise:0.3-0.5
示例 Prompt:
"oil painting style, Van Gogh inspired, thick brush strokes""watercolor illustration, soft colors, dreamy atmosphere""cyberpunk neon style, dark background, glowing elements"
3. 图像增强/修复
工作流:低质量图 → ERNIE-Image img2img → 高清增强图
输入:模糊、低分辨率、或有噪点的图片
Prompt:"high resolution, sharp details, professional photography, 4K quality"
Denoise:0.1-0.3
技巧:低 denoise 值可以保留原始内容,同时改善画质。
4. 照片风格化
工作流:照片 → ERNIE-Image img2img → 艺术风格照片
输入:普通照片
Prompt:"[风格] photograph, dramatic lighting, cinematic"
Denoise:0.3-0.5
推荐风格:
"film photography, Kodak Portra 400""black and white portrait, dramatic shadows""double exposure, surreal composition"
5. 内容扩展(Outpainting 变体)
虽然 ERNIE-Image 有专门的 outpainting 功能(见 EI-017 文章),img2img 也可以实现类似效果:
输入:裁剪后的图片(放大后留白区域)
Prompt:保持原始场景描述,加上扩展方向的描述
Denoise:0.5-0.7
PE(Prompt Enhancer)在 img2img 中的表现
ERNIE-Image 内置的 Prompt Enhancer 在 img2img 模式下有独特的表现:
何时启用 PE
- 风格转换:PE 能丰富风格描述词,生成更细腻的画风
- 草图渲染:PE 补充材质、光照等细节
- 创意发挥:希望模型自由发挥时
何时关闭 PE
- 精确还原:需要严格遵循 Prompt 时
- 图像修复:需要最小化改变时
- 商业项目:需要可预测输出时
测试方法
建议对同一输入图和 Prompt,分别用 PE 开/关各生成 2 张,比较效果后选择最优方案。
常见问题
Q: img2img 能改变图片尺寸吗?
可以,但建议输入和输出保持相同分辨率以获得最佳效果。如果需要改变尺寸,先用外部工具调整输入图片尺寸,再进行 img2img。
Q: denoise 设多少最合适?
没有固定答案。建议从 0.4 开始测试,根据效果微调:
- 变化不够 → 提高 denoise
- 变化太大 → 降低 denoise
- 每次调整 0.1 为一个步长
Q: 为什么 img2img 效果不如 text2img?
可能原因:
- denoise 值不当:太高丢失原图,太低改变不足
- Prompt 不够明确:img2img 需要更精确的描述
- 输入图片质量差:模糊或低分辨率输入影响输出
Q: 可以在 img2img 基础上再次 img2img 吗?
可以!多轮 img2img 是进阶技巧:
- 第一轮:denoise=0.5,风格转换
- 第二轮:denoise=0.2,细节微调
- 第三轮:denoise=0.1,最终润色
总结
ERNIE-Image 的 img2img 能力为 AI 图像创作提供了强大的二次创作工具:
- Denoise 参数是核心——掌握它就能掌握 img2img 的精髓
- ComfyUI 工作流最灵活——可视化操作,易于调试
- Diffusers API最适合批量处理——编程友好,可扩展性强
- PE 模块在 img2img 中同样有效——根据场景选择开/关
从草图到精修,从照片到艺术,img2img 让 ERNIE-Image 不再只是"文字变图片"的工具,而是真正的AI 图像创作伙伴。
参考来源:ERNIE-Image HuggingFace Collection, ComfyUI 官方文档, Diffusers img2img 文档