ERNIE-Image Diffusers 调用指南:Python 代码从零到生产

mei 7, 2026

ERNIE-Image Diffusers 调用指南:Python 代码从零到生产

HuggingFace Diffusers 库完整支持 ERNIE-Image——本文教你用 Python 代码调用 ERNIE-Image 进行图像生成。


一、环境安装

# 安装 diffusers 和相关依赖
pip install diffusers transformers accelerate torch

# 安装 ERNIE-Image 支持
pip install git+https://github.com/huggingface/diffusers.git

二、基础调用

单图生成

from diffusers import ERNIEImagePipeline
import torch

# 加载模型
pipe = ERNIEImagePipeline.from_pretrained(
    "baidu/ERNIE-Image",
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

# 生成图像
image = pipe(
    prompt="a cat sitting on a windowsill, city view at night",
    negative_prompt="",
    width=1024,
    height=1024,
    num_inference_steps=28,
    guidance_scale=7.0,
    generator=torch.Generator("cuda").manual_seed(42)
).images[0]

# 保存
image.save("output.png")

三、批量生成

from diffusers import ERNIEImagePipeline
import torch

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

# Prompt 列表
prompts = [
    "a cat on a table",
    "a dog in a garden",
    "a bird in a tree",
    "a fish in a pond"
]

# 批量生成
images = pipe(
    prompt=prompts,
    negative_prompt=[""] * len(prompts),
    width=1024,
    height=1024,
    num_inference_steps=28,
    guidance_scale=7.0
).images

# 保存
for i, img in enumerate(images):
    img.save(f"output_{i}.png")

四、Turbo 模式调用

from diffusers import ERNIEImageTurboPipeline

# 加载 Turbo 模型
pipe = ERNIEImageTurboPipeline.from_pretrained(
    "baidu/ERNIE-Image-Turbo",
    torch_dtype=torch.float16
).to("cuda")

# Turbo 模式:8 步生成
image = pipe(
    prompt="a sunset over the ocean, cinematic lighting",
    width=1024,
    height=1024,
    num_inference_steps=8,
    guidance_scale=1.0  # Turbo 不需要高 CFG
).images[0]

image.save("turbo_output.png")

五、Inpainting 调用

from diffusers import ERNIEImageInpaintPipeline
from PIL import Image
import numpy as np

# 加载 inpainting 模型
pipe = ERNIEImageInpaintPipeline.from_pretrained(
    "baidu/ERNIE-Image",
    torch_dtype=torch.float16
).to("cuda")

# 加载原图和 mask
init_image = Image.open("input.png").convert("RGB")
mask_image = Image.open("mask.png").convert("L")

# Inpainting
image = pipe(
    prompt="a beautiful garden with flowers",
    image=init_image,
    mask_image=mask_image,
    width=1024,
    height=1024,
    num_inference_steps=28,
    guidance_scale=7.0
).images[0]

image.save("inpaint_output.png")

六、PE 模块调用

from diffusers import ERNIEImagePipeline

pipe = ERNIEImagePipeline.from_pretrained(
    "baidu/ERNIE-Image",
    torch_dtype=torch.float16,
    enable_pe=True  # 开启 PE 模块
).to("cuda")

# PE 模块会自动增强 prompt
image = pipe(
    prompt="cat on window",
    width=1024,
    height=1024,
    num_inference_steps=28,
    guidance_scale=7.0
).images[0]

image.save("pe_output.png")

七、API 服务部署

from fastapi import FastAPI
from pydantic import BaseModel
from diffusers import ERNIEImagePipeline
import torch

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

class GenerateRequest(BaseModel):
    prompt: str
    width: int = 1024
    height: int = 1024
    steps: int = 28

@app.post("/generate")
async def generate(req: GenerateRequest):
    image = pipe(
        prompt=req.prompt,
        width=req.width,
        height=req.height,
        num_inference_steps=req.steps,
        guidance_scale=7.0
    ).images[0]
    
    import io
    from PIL import Image
    buf = io.BytesIO()
    image.save(buf, format="PNG")
    buf.seek(0)
    
    from fastapi.responses import Response
    return Response(buf.read(), media_type="image/png")

八、总结

Diffusers 调用 ERNIE-Image 核心要点:

  1. 安装依赖:diffusers + transformers + accelerate
  2. 基础调用:Pipeline.from_pretrained → pipe() → save
  3. 批量生成:传入 prompt 列表即可
  4. Turbo 模式:8 步生成,无需高 CFG
  5. Inpainting:支持 mask 引导的局部重绘
  6. API 部署:FastAPI + Diffusers = 完整服务

Diffusers 提供了简洁的 API,让 ERNIE-Image 集成到 Python 应用变得简单。


本文基于 HuggingFace Diffusers + ERNIE-Image 8B 模型。

Yan Ming

ERNIE-Image Diffusers 调用指南:Python 代码从零到生产 | Blog