ERNIE-Image 8B开源:8B参数实现顶级文生图与精准文字渲染
00
引言
百度文心大模型团队开源了ERNIE-Image,一款基于单流DiT架构的8B参数文生图模型。仅需24GB显存的消费级显卡即可运行,在指令遵循、文字渲染等主流benchmark上全面领先开源模型,尤其擅长海报、漫画分镜、多面板布局等强控制力场景。团队同步推出ERNIE-Image Turbo,8步推理即可生成高保真图像。模型权重与推理代码已全部开源,魔搭创空间支持快速体验。
体验地址:

开源地址:
- ERNIE-Image:https://modelscope.cn/models/PaddlePaddle/ERNIE-Image
- ERNIE-Image-Turbo:https://modelscope.cn/models/PaddlePaddle/ERNIE-Image-Turbo
01
模型介绍
ERNIE-Image基于DiT架构,参数量80亿(8B),仅需24GB显存即可生成媲美顶级商业模型的复杂图像。在GenEval、OneIG、LongTextBench等主流评测中全面领先开源模型,整体效果接近NanoBanana、Seedream 4.5等最先进模型。模型在复杂指令跟随与精准文字渲染方面优势显著,同时覆盖动漫、胶片、超现实主义、剪影、老照片等多元视觉风格。

核心特性:
- 小模型,强性能
仅8B参数规模,在GenEval、OneIG、LongTextBench等主流评测中取得开源模型世界第一,效果接近最先进的商业级模型。 - 精准文字渲染
在高密度文本、长文本及版式敏感的文字生成任务上表现稳定,支持中英文等多语言文字渲染,适合海报、信息图、类UI图像等重文字场景。 - 复杂指令跟随
面对多主体关系、细节约束和知识密集型描述的prompt,模型保持强理解与精准执行能力。 - 结构化生成突出
在海报、漫画、分镜、故事板和多面板图像等结构化视觉任务中,能更好地保持布局逻辑和画面组织。 - 多元风格覆盖
支持写实摄影、设计感图像、动漫二次元、胶片、超现实主义、剪影、老照片等多种视觉风格,以及更柔和、更具电影感的画面风格。 - 消费级硬件友好
24GB VRAM即可部署运行,降低了研究与生产环境的使用门槛。



左右滑动查看更多
Prompt Enhancer(提示词增强器)
ERNIE-Image在详细、结构化的长prompt下表现最佳,但实际使用中用户往往只输入一句简短描述,难以充分发挥模型能力。
为此,团队内置了3B参数的轻量级Prompt Enhancer,自动将简短输入扩展为更详细、结构化的prompt——不改变用户意图,而是将简洁请求转化为更能发挥模型潜力的形式。在海报、动漫、网页布局、游戏截图等结构化视觉任务中效果尤为明显。
以下示例展示了Prompt Enhancer的效果:无PE时模型倾向于字面理解短prompt,结果不完整;启用3B PE后生成质量显著提升。使用更强LLM作为PE可进一步提升效果,表明提示词增强是发挥ERNIE-Image长prompt能力的有效杠杆。




评测结果
ERNIE-Image在四个主流文生图评测基准上进行了评估:GenEval(组合生成)、OneIG-EN / OneIG-ZH(中英文开放域图像生成)和LongTextBench(长文本渲染保真度)。
- 全面领先开源模型
ERNIE-Image在所有四个benchmark上均为开源模型第一:GenEval第1名(0.8856)、OneIG-ZH第2名(0.5543)、LongTextBench第2名(0.9733)、OneIG-EN第3名(0.5750),与NanoBanana 2.0、Seedream 4.5等顶级闭源模型直接竞争。 - 极致参数效率
上述成绩仅来自8B参数的DiT架构,是同性能水平下最具参数效率的模型之一。 - 文字渲染突出
在LongTextBench上排名第2,中英文长文本渲染均表现出色;在OneIG的Text维度上也保持高竞争力,体现了多语言文字生成的核心优势。




左右滑动查看更多
02
模型推理
Diffusers推理
环境安装:
pip install git+https://github.com/huggingface/diffusers
推理脚本:
import torch
from diffusers import ErnieImagePipeline
pipe = ErnieImagePipeline.from_pretrained(
"Baidu/ERNIE-Image-Turbo",
torch_dtype=torch.bfloat16,
).to("cuda")
image = pipe(
prompt="这是一张呈现城市街道场景的摄影作品,画面采用平视角度拍摄,展现了一条带有顶棚的步行街或商业街区。画面中央偏下位置有一位骑自行车的行人,背对镜头,正朝画面深处行进,因逆光拍摄而呈现为深色剪影,细节难以辨认。地面铺设有规则的方形地砖,中央有一条明显的盲道贯穿画面,盲道表面的凸起纹理在光线照射下清晰可见。光线从画面右侧斜射入,形成强烈的逆光效果,产生明显的丁达尔效应(光束感),照亮了空气中的尘埃或蒸汽,在街道上投下长长的阴影。画面左侧和远处有多位行人,有的背对镜头,有的侧身行走,均呈现为剪影或半剪影状态。整体色调偏暖,以金黄色和深褐色为主,营造出黄昏或清晨时分的氛围。",
height=1264,
width=848,
num_inference_steps=8,
guidance_scale=1.0,
use_pe=True # use prompt enhancer
).images[0]
image.save("output.png")
SGLang推理
安装sglang:
git clone https://github.com/sgl-project/sglang.git
启动服务:
sglang serve --model-path baidu/ERNIE-Image-Turbo
发送生成请求:
curl -X POST http://localhost:30000/generate \
-H "Content-Type: application/json" \
-d '{
"prompt": "这是一张呈现城市街道场景的摄影作品,画面采用平视角度拍摄,展现了一条带有顶棚的步行街或商业街区。画面中央偏下位置有一位骑自行车的行人,背对镜头,正朝画面深处行进,因逆光拍摄而呈现为深色剪影,细节难以辨认。地面铺设有规则的方形地砖,中央有一条明显的盲道贯穿画面,盲道表面的凸起纹理在光线照射下清晰可见。光线从画面右侧斜射入,形成强烈的逆光效果,产生明显的丁达尔效应(光束感),照亮了空气中的尘埃或蒸汽,在街道上投下长长的阴影。画面左侧和远处有多位行人,有的背对镜头,有的侧身行走,均呈现为剪影或半剪影状态。整体色调偏暖,以金黄色和深褐色为主,营造出黄昏或清晨时分的氛围。",
"height": 1264,
"width": 848,
"num_inference_steps": 8,
"guidance_scale": 1.0,
"use_pe": true
}' \
--output output.png
Diffsynth推理
环境安装:
pip install -U diffsynth==2.0.8
运行以下代码可以快速加载 PaddlePaddle/ERNIE-Image 模型并进行推理。DiffSynth-Studio显存管理已启动,框架会自动根据剩余显存控制模型参数的加载,最低 3G 显存即可运行。
from diffsynth.pipelines.ernie_image import ErnieImagePipeline, ModelConfig
import torch
vram_config = {
"offload_dtype": torch.bfloat16,
"offload_device": "cpu",
"onload_dtype": torch.bfloat16,
"onload_device": "cpu",
"preparing_dtype": torch.bfloat16,
"preparing_device": "cuda",
"computation_dtype": torch.bfloat16,
"computation_device": "cuda",
}
pipe = ErnieImagePipeline.from_pretrained(
torch_dtype=torch.bfloat16,
device='cuda',
model_configs=[
ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors", **vram_config),
ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="text_encoder/model.safetensors", **vram_config),
ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors", **vram_config),
],
tokenizer_config=ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="tokenizer/"),
vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 0.5,
)
image = pipe(
prompt="一只黑白相间的中华田园犬",
negative_prompt="",
height=1024,
width=1024,
seed=42,
num_inference_steps=50,
cfg_scale=4.0,
)
image.save("output.jpg")
03
模型LoRA训练
DiffSynth-Studio也支持了ERNIE-Image模型的文生图LoRA训练。
环境安装:
pip install -U diffsynth==2.0.8
训练脚本:
# Dataset: data/diffsynth_example_dataset/ernie_image/Ernie-Image-T2I/
# Download: modelscope download --dataset DiffSynth-Studio/diffsynth_example_dataset --include "ernie_image/Ernie-Image-T2I/*" --local_dir ./data/diffsynth_example_dataset
accelerate launch examples/ernie_image/model_training/train.py \
--dataset_base_path data/diffsynth_example_dataset/ernie_image/Ernie-Image-T2I \
--dataset_metadata_path data/diffsynth_example_dataset/ernie_image/Ernie-Image-T2I/metadata.csv \
--max_pixels 1048576 \
--dataset_repeat 50 \
--model_id_with_origin_paths "PaddlePaddle/ERNIE-Image:transformer/diffusion_pytorch_model*.safetensors,PaddlePaddle/ERNIE-Image:text_encoder/model.safetensors,PaddlePaddle/ERNIE-Image:vae/diffusion_pytorch_model.safetensors" \
--learning_rate 1e-4 \
--num_epochs 5 \
--remove_prefix_in_ckpt "pipe.dit." \
--output_path "./models/train/Ernie-Image-T2I_lora" \
--lora_base_model "dit" \
--lora_target_modules "to_q,to_k,to_v,to_out.0" \
--lora_rank 32 \
--use_gradient_checkpointing \
--dataset_num_workers 8 \
--find_unused_parameters
验证脚本:
import torch
from diffsynth.pipelines.ernie_image import ErnieImagePipeline, ModelConfig
from diffsynth.core.loader.file import load_state_dict
pipe = ErnieImagePipeline.from_pretrained(
torch_dtype=torch.bfloat16,
device="cuda",
model_configs=[
ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors"),
ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="text_encoder/model.safetensors"),
ModelConfig(model_id="PaddlePaddle/ERNIE-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"),
],
)
lora_state_dict = load_state_dict("./models/train/Ernie-Image-T2I_lora/epoch-4.safetensors", torch_dtype=torch.bfloat16, device="cuda")
pipe.load_lora(pipe.dit, state_dict=lora_state_dict, alpha=1.0)
image = pipe(
prompt="a professional photo of a cute dog",
seed=0,
num_inference_steps=50,
cfg_scale=4.0,
)
image.save("image_lora.jpg")
print("LoRA validation image saved to image_lora.jpg")
04
总结
ERNIE-Image证明了8B参数模型可以在文字渲染、复杂指令跟随、结构化生成和多元风格表达上与更大规模模型竞争,同时保持消费级硬件可部署的实用性。希望开源的ERNIE-Image和ERNIE-Image Turbo能为研究、开发和创意应用提供有力的基础工具。
点击阅读原文,即可跳转模型合集