ERNIE-Image Inpainting + Outpainting 完整指南:局部重绘与画面扩展实战

May 2, 2026

ERNIE-Image Inpainting + Outpainting 完整指南:局部重绘与画面扩展实战

从瑕疵修复到画面扩展,ERNIE-Image 的 Inpainting 和 Outpainting 能力让你的每一张图片都能二次创作。无论是电商产品图精修、人像背景替换,还是摄影作品的画幅扩展,本文手把手教你掌握这些核心编辑能力。


一、Inpainting vs Outpainting:核心概念

能力 定义 核心场景
Inpainting(局部重绘) 对图像内部指定区域进行重新生成 瑕疵修复、物体移除/添加、风格调整
Outpainting(画面扩展) 在图像边界外扩展现有画面 画幅扩展、背景延伸、构图调整

技术原理

两者都基于掩码引导的扩散模型(Mask-guided Diffusion):

原图 + Mask(掩码)
    ↓
VAEEncode → Latent Space
    ↓
Mask 区域注入噪声
    ↓
KSampler + Prompt → 生成 Mask 区域
    ↓
VAEDecode → 输出修复/扩展图

关键区别:Inpainting 的 Mask 在图像内部,Outpainting 的 Mask 在图像边界外。


二、Inpainting 实战:5 个核心场景

场景 1:瑕疵修复

操作:Mask 选中瑕疵区域(如皮肤瑕疵、产品划痕),Prompt 描述理想状态。

Prompt 模板:

{原图描述},
clean skin, smooth texture, professional retouching,
high quality, detailed, natural lighting

典型用例:人像皮肤磨皮、产品表面瑕疵修复、照片污点清理。

场景 2:物体移除

操作:Mask 选中要移除的物体(如路人、电线杆、水印),Prompt 描述背景延续。

Prompt 模板:

{背景描述},
clean background, natural, seamless,
background continuation, no extra objects

技巧:Mask 范围要略大于目标物体,给模型留出"呼吸空间"。

场景 3:物体添加

操作:Mask 选中添加位置,Prompt 描述要添加的物体。

Prompt 模板:

{原图描述},
{要添加的物体},
integrated naturally, consistent lighting, matching style,
professional composition

技巧:添加的物体与原图风格越接近,融合效果越好。

场景 4:风格替换

操作:Mask 选中要改变风格的区域,Prompt 描述新风格。

Prompt 模板:

{原图描述},
{目标风格:watercolor painting / oil painting / anime style},
artistic, creative, detailed

场景 5:文字修正

操作:Mask 选中需要修改的文字区域,Prompt 描述正确文字。

重要:关闭 PE(Prompt Enhancer),因为 PE 可能改写你指定的文字内容。


三、Outpainting 实战:3 个核心场景

场景 1:画幅扩展(16:9 → 21:9 超宽银幕)

操作:在左右两侧扩展,Prompt 描述场景延续。

Prompt 模板:

{原图描述},
wide angle, panoramic view,
continuous background, cinematic composition,
extended scene, ultra wide shot

典型用例:照片转电影宽屏、桌面壁纸扩展、社交媒体封面适配。

场景 2:背景延伸(全身照补全)

操作:在底部/顶部扩展,补充环境。

Prompt 模板:

{原图描述},
extended {environment},
full body shot, ground visible, natural surroundings,
professional photography, consistent lighting

典型用例:半身照→全身照、产品图补全背景。

场景 3:多方向扩展

操作:先扩左/右,再扩上/下,分步进行。

技巧:每次扩展不超过 30%,分步扩展质量更稳定。


四、ComfyUI Inpainting 完整工作流

节点连接

[Load Checkpoint] → ERNIE-Image 8B
    ↓
[LoadImage] → 原图
    ↓
[ImageToMask] → 生成 Mask(或手动绘制)
    ↓
[VAEEncode] → Latent
    ↓
[LatentComposite] → Mask + Prompt
    ↓
[KSampler] → inpaint steps
    ↓
[VAEDecode] → 输出修复图
    ↓
[SaveImage] → 保存结果

关键参数调优表

参数 推荐值 说明
Inpaint Steps 20-30 Turbo 模式 8-12
CFG Scale 5.0-8.0 提示词引导强度
Mask Strength 0.8-1.0 修复强度(越高越激进)
Denoise 0.5-0.8 重绘程度(越低越保守)
Mask Blur 4-8 边缘模糊(平滑过渡)
Scheduler Euler / DPM++ Euler 速度快,DPM++ 质量高

Turbo 模式参数

参数 Turbo 值 标准值
Steps 8-12 20-30
CFG 4.0-6.0 5.0-8.0
生成速度 ~2秒/图 ~15秒/图

五、ComfyUI Outpainting 工作流

节点连接

[LoadImage] → 原图
    ↓
[ImageScaleByFactor] → 缩放到目标尺寸(可选)
    ↓
[ImagePadForOutpainting] → 填充空白区域
    ↓
[ImageToMask] → 生成 Outpainting Mask
    ↓
[VAEEncode] → Latent
    ↓
[KSampler] → outpainting steps
    ↓
[VAEDecode] → 输出扩展图
    ↓
[SaveImage] → 保存结果

关键参数

参数 推荐值 说明
Expand Amount 50%-100% 扩展比例(建议 ≤50%)
Steps 20-30 生成步数
CFG 5.0-7.0 引导强度
Denoise 0.6-0.8 创新程度
Fallback Pixels 8-16 边缘重叠像素

六、实战案例详解

案例 1:电商产品图背景替换

原始:白底产品图(标准电商图)

Inpainting 流程:

  1. Mask 选中产品主体(反向 Mask)
  2. Prompt: product on wooden table, warm natural lighting, lifestyle scene, shallow depth of field, professional product photography
  3. Denoise: 0.7, Mask Blur: 6
  4. 输出:产品生活场景图,可直接用于社交媒体

价值:无需拍摄,一张白底图生成 10 种场景背景。

案例 2:人像照片全身扩展

原始:4:3 半身人像

Outpainting 流程:

  1. 底部扩展 50%
  2. Prompt: full body portrait, standing in garden, natural sunlight, flowers, professional photography, full body shot, elegant pose
  3. Denoise: 0.6, Steps: 25
  4. 输出:全身人像,背景自然延伸

案例 3:照片瑕疵修复(水印/路人移除)

原始:风景照片上有路人/水印

Inpainting 流程:

  1. Mask 精确选中目标区域
  2. Prompt: clean landscape, no people, natural scenery, clear sky, professional photography
  3. Denoise: 0.5, Mask Strength: 0.9
  4. 输出:干净无瑕疵的风景照

七、Diffusers API 调用代码

Inpainting

from diffusers import ErnieImageInpaintPipeline
import torch

pipe = ErnieImageInpaintPipeline.from_pretrained(
"baidu/ERNIE-Image", torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

result = pipe(
prompt="clean, professional, high quality",
image=original_image,
mask_image=mask_image,
num_inference_steps=25,
strength=0.75,
guidance_scale=6.0
)

Outpainting

from diffusers import ErnieImagePipeline

pipe = ErnieImagePipeline.from_pretrained(
"baidu/ERNIE-Image-Turbo", torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

result = pipe(
prompt="extended background, panoramic, seamless",
image=padded_image,
mask_image=outpaint_mask,
num_inference_steps=8, # Turbo mode
guidance_scale=5.0
)


八、常见问题与解决方案

Q1:修复区域与原图不融合

症状:修复区域有明显的边界线或颜色不匹配。

解决方案:

  1. 提高 Mask Blur(8-12),让过渡更平滑
  2. 降低 Denoise(0.3-0.5),减少改动幅度
  3. 缩小 Mask 范围,只覆盖需要修改的区域
  4. 在 Prompt 中加入 seamless, natural transition, matching colors

Q2:扩展区域风格不一致

症状:扩展部分与原图风格、色调差异明显。

解决方案:

  1. 详细描述原图 Prompt,给模型足够上下文
  2. 降低 Denoise(0.5-0.6),保持原风格
  3. 分步扩展(每次扩展 20%-30%,而非一次 100%)
  4. 使用 Turbo 模式时增加 CFG(6.0-7.0)

Q3:Mask 边缘出现黑线或白边

症状:修复/扩展区域边缘有异常线条。

解决方案:

  1. 使用高斯模糊 Mask(Mask Blur: 4-8)
  2. 在 Prompt 中加入 seamless, no borders, natural edges
  3. 降低 Inpaint Strength(0.7-0.8)
  4. 确保 Mask 与原图分辨率一致

Q4:文字渲染不准确

解决方案:

  1. 关闭 PE(最重要!)
  2. 使用标准模式(非 Turbo),50 步推理
  3. 精确描述文字内容,用引号标注
  4. 参考 ERNIE-Image 文字渲染专题文章

九、总结:何时使用 Inpainting vs Outpainting

需求 推荐方式 关键参数
移除路人/水印 Inpainting Denoise 0.5, Mask Blur 6
背景替换 Inpainting Denoise 0.7, CFG 6.0
添加物体 Inpainting Denoise 0.8, CFG 7.0
画幅扩展 Outpainting Expand 30%, Denoise 0.6
全身补全 Outpainting Expand 50%, Steps 25
风格转换 Inpainting Denoise 0.9, CFG 8.0

ERNIE-Image 的 Inpainting/Outpainting 核心优势:

  1. 精准控制:Mask 精确指定修复/扩展区域,像素级精度
  2. 上下文感知:自动理解画面风格、色调、构图
  3. 无缝融合:修复区域与原图自然衔接,无明显边界
  4. 灵活应用:从瑕疵修复到创意扩展,覆盖 90% 图片编辑需求
  5. Turbo 加速:8 步快速出图,适合批量处理

对于摄影师、设计师、电商运营,这是"二次创作"的核心工具。一张原始素材,通过 Inpainting + Outpainting 可以衍生出数十张变体,大幅降低拍摄成本。


本文工作流基于 ComfyUI + ERNIE-Image 8B。代码示例使用 Diffusers API。

ERNIE-Image Team