ERNIE-Image Prompt Enhancer 3B 独立部署与替代方案指南

июль 15, 2026

ERNIE-Image Prompt Enhancer 3B 独立部署与替代方案指南

ERNIE-Image 内置了一个 3B 参数的 Prompt Enhancer(PE),它基于 Ministral 3B 微调,能将简短的用户提示自动扩展为详细的结构化描述。但很多用户不知道的是——这个 PE 模型可以独立使用,甚至和其他文生图模型配合。

这篇文章从实战角度出发,教你如何把 PE 模型从 ERNIE-Image 管线中拆出来独立部署,以及在不使用 PE 时的替代方案。

Prompt Enhancer 到底是什么?

ERNIE-Image 的 Prompt Enhancer 是一个独立的语言模型,设计目标是解决"用户不会写 prompt"这个核心痛点。它的工作流程很简单:

用户输入 "一只猫" → PE (3B) → "一只黑白相间的中华田园猫,蹲坐在复古的书架上,背景是暖色调的木质书柜,柔和的自然光线从左侧窗户照入"

PE 模型的输出包含场景描述、光线条件、色彩基调、构图方式等结构化要素。它特别擅长生成中文描述,即使输入是英文提示词,PE 也会倾向于输出中英文混合的详细描述。

PE 模型的部署方式

PE 模型以 safetensors 格式发布,可以从 HuggingFace 或 ComfyUI 官方工作流中获取。

下载位置baidu/ERNIE-Image HuggingFace 仓库中的 ernie-image-prompt-enhancer.safetensors

方式一:在 ComfyUI 中使用

ComfyUI 的 ERNIE-Image 官方工作流中已经内置了 PE 节点:

  1. 从 ComfyUI 官方示例加载 ERNIE-Image 工作流
  2. 工作流中包含 "Prompt Enhancer" 文本编码器节点
  3. 可以单独禁用 PE(设置 use_pe=False)来对比效果
  4. PE 节点输出连接到 CLIP Text Encode 的 text 输入

方式二:在 Diffusers 中控制

通过 ErnieImagePipelineuse_pe 参数控制:

from diffusers import ErnieImagePipeline
import torch

pipe = ErnieImagePipeline.from_pretrained(
"Baidu/ERNIE-Image",
torch_dtype=torch.bfloat16,
).to("cuda")

启用 PE(默认)

image_with_pe = pipe(
prompt="一只猫",
use_pe=True
).images[0]

禁用 PE

image_without_pe = pipe(
prompt="一只黑白相间的中华田园猫,蹲坐在复古书架...", # 需要手动写详细prompt
use_pe=False
).images[0]

方式三:独立加载 PE 模型

如果你想把 PE 模型单独用在其他生成管线中:

from transformers import AutoModelForCausalLM, AutoTokenizer

从 HuggingFace 加载 PE 模型

model = AutoModelForCausalLM.from_pretrained(
"baidu/ERNIE-Image",
subfolder="prompt_enhancer",
torch_dtype=torch.bfloat16
).to("cuda")

tokenizer = AutoTokenizer.from_pretrained(
"baidu/ERNIE-Image",
subfolder="prompt_enhancer"
)

输入简短提示

prompt = "一只猫坐在书架上"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")

生成增强后的提示

with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
temperature=0.7,
do_sample=True
)

enhanced_prompt = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Enhanced: {enhanced_prompt}")

PE 与其他模型的配合

社区已经探索出多种将 PE 与其他模型配合使用的方案:

方案一:PE + Z-Image Turbo
在 Forge/Classic Neo 中同时加载 PE 和 Z-Image Turbo。PE 负责增强提示词,Z-Image Turbo 负责生成图片。这种组合可以实现更好的中文提示理解和更快的生成速度。

方案二:PE + Qwen3-4B
使用 Qwen3-4B GGUF 量化版作为 PE 的替代或补充。Qwen3 的多语言能力可以生成更丰富的英文描述。

方案三:PE + 二次处理
先让 PE 生成增强提示词,然后手动编辑优化,再输入到任何文生图模型(SD 3.5、FLUX.2 等)。

使用大型语言模型替代 PE

PE 模型只有 3B 参数,能力有限。对于更复杂的场景,可以考虑用更大的 LLM 替代:

# 使用 Gemini/Claude/ChatGPT 替代 PE
def enhance_prompt_with_llm(short_prompt, model="gemini"):
    """使用大语言模型增强提示词"""
    if model == "gemini":
        # 调用 Gemini API
        enhanced = gemini_client.generate_content(
            f"Enhance this image generation prompt into a detailed description "
            f"including scene, lighting, colors, composition: {short_prompt}"
        )
        return enhanced.text
    # ...

什么时候需要用 LLM 替代 PE?

  • 需要精确控制输出格式
  • 输入是多语言或专业领域术语
  • 需要包含特定风格参考
  • 生成内容对指令跟随精度要求高(PE 可能降低指令精度)

PE 开启 vs 关闭的选择策略

根据基准测试数据:

场景 PE 推荐 原因
文字渲染(海报/Logo) ✅ 开启 PE 提升文字渲染精度
复杂指令跟随 ❌ 关闭 PE 降低指令跟随精度
快速原型 ✅ 开启 省去手动写详细 prompt 的时间
批量生产 ⚠️ 视情况 如果 prompt 已优化则关闭
多语言提示 ✅ 开启 PE 擅长中英文混合场景
专业领域(医学/工业) ❌ 关闭 需要精确的领域特定输出

PE 模型的优势与局限

优势

  1. 轻量级(3B),可在消费级 GPU 上运行
  2. 特别擅长中文提示词增强
  3. 零配置,开箱即用
  4. 提升文字渲染和多样性

局限

  1. 基于 Ministral 3B,不是最强的语言模型
  2. 可能过度改写用户输入,导致输出偏离原始意图
  3. 不接收图像输入,仅处理文本
  4. 对非中文的优化偏向中文输出

实战建议

  1. 调试时:先用 use_pe=False 输入详细提示词,调优后再决定是否开启 PE
  2. 生产时:根据场景选择 PE 策略,不要一刀切
  3. 进阶:将 PE 的输出作为起点,配合 LLM 二次优化
  4. 社区方案:关注 Reddit r/StableDiffusion 上的 PE 使用经验分享

总结

ERNIE-Image 的 Prompt Enhancer 是一个被低估的工具。虽然它只是 3B 参数的小模型,但在中文 prompt 增强和文字渲染方面表现出色。更重要的是,它可以独立使用或与其他模型配合,为开发者提供了灵活的工作流选择。

无论你是选择在 ERNIE-Image 管线中直接使用 PE,还是把它拆出来配合其他模型,理解 PE 的工作原理和适用场景都能帮你做出更好的决策。

ERNIE-Image Team