StableLearn Logo

搜索内容

CV 9 min read

GLM-Image:首个开源工业级自回归图像生成模型

GLM-Image 是首个开源的工业级离散自回归图像生成模型,采用混合架构结合自回归模块与扩散解码器,在文本渲染和知识密集型生成场景中表现出色。本文介绍其技术特点与快速使用方法。

Cover image for GLM-Image:首个开源工业级自回归图像生成模型

本文发布于 247 天前,内容可能已过时,请注意甄别。

1. 🚀 GLM-Image 来了

智谱 AI 最近发布了一个挺有意思的模型 —— GLM-Image,这是首个开源的工业级离散自回归图像生成模型。说白了,它就是用来生成图片的,但跟其他模型不太一样的是,它特别擅长处理那些需要精确文字渲染的场景,比如海报、PPT、科普插图这类东西。

有什么特别的?

  • 混合架构:结合了 90 亿参数的自回归模块(基于 GLM-4-9B)和 70 亿参数的扩散解码器
  • 文字渲染很强:在 CVTG-2K 和 LongText-Bench 测试中拿了开源模型第一,尤其是中文文字的准确率达到了 97.88%
  • 知识密集型生成:特别适合那些需要准确表达复杂信息的场景,不只是好看,还得”说得清楚”
  • 功能丰富:不仅能文字生图,还支持图像编辑、风格迁移等

官方资源:


2. 技术架构:为什么这么设计?

2.1 混合架构的思路

传统的扩散模型虽然生成的图片质量不错,但在理解复杂指令、准确渲染文字这些方面还是有点力不从心。GLM-Image 的团队想了个办法:把任务拆成两部分。

  1. 自回归生成器(9B 参数):基于 GLM-4-9B,负责”理解”你想要什么,生成包含语义信息的 token
  2. 扩散解码器(7B 参数):采用 CogView4 的架构,负责把这些 token “画”成高质量的图片

这就像是先有个人理解你的需求画个草图,然后再有个画师把草图细化成精美的作品。这种分工让模型既能准确理解复杂的指令,又能生成高质量的细节。

2.2 几个关键技术点

Semantic-VQ Token:选对”语言”很重要

GLM-Image 用的是 semantic-VQ 来做视觉 token 化。简单说,就是把图片转换成模型能理解的”语言”。相比传统的 VQVAE,这种方式训练损失更低(约 3 vs 7),语义相关性更强,更适合自回归建模。

渐进式生成:先布局后细化

在生成高分辨率图片时,GLM-Image 会先生成一个低分辨率的版本(约 256 个 token),确定整体布局,然后再生成高分辨率的细节(1024-4096 个 token)。这样做的好处是布局更可控,不容易”跑偏”。

Glyph-byT5:专治”提笔忘字”

为了让模型能准确渲染文字(尤其是中文),GLM-Image 引入了一个轻量级的 Glyph-byT5 模型,专门做字符级编码。这就是为什么它在文字渲染上表现这么好的原因。

解耦强化学习:各司其职

在后训练阶段,GLM-Image 用 GRPO 算法分别优化两个模块:

  • 自回归模块关注语义准确性、美学评分
  • 扩散解码器关注细节质量、文字精度

这种”分工明确”的训练方式让每个模块都能发挥最大作用。


3. 快速上手

3.1 环境准备

首先需要安装最新版本的 transformers 和 diffusers,因为 GLM-Image 用到了一些新特性:

   pip install git+https://github.com/huggingface/transformers.git
pip install git+https://github.com/huggingface/diffusers.git

硬件要求:Python 3.8+、CUDA 11.8+、至少 24GB GPU 显存(如果显存不够,可以试试降低分辨率)

3.2 生成第一张图片

代码很简单,加载模型然后调用就行:

   import torch
from diffusers.pipelines.glm_image import GlmImagePipeline

# 加载模型
pipe = GlmImagePipeline.from_pretrained(
    "zai-org/GLM-Image", 
    torch_dtype=torch.bfloat16, 
    device_map="cuda"
)

# 生成图像
prompt = "一只可爱的熊猫在竹林中吃竹子,水墨画风格"
image = pipe(
    prompt=prompt,
    height=32 * 32,  # 1024px,必须是 32 的倍数
    width=32 * 32,
    num_inference_steps=50,  # 步数越多质量越好,但也越慢
    guidance_scale=1.5,      # 控制生成图像与提示词的匹配度
    generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]

image.save("output.png")

3.3 图像编辑

GLM-Image 还支持基于参考图像的编辑,比如换个背景什么的:

   from PIL import Image

# 加载你想编辑的图片
reference_image = Image.open("input.jpg").convert("RGB")

# 告诉模型你想怎么改
edited_image = pipe(
    prompt="将雪地森林的背景替换为地铁站",
    image=[reference_image],  # 可以传多张图片
    height=33 * 32,
    width=32 * 32,
    num_inference_steps=50,
    guidance_scale=1.5,
).images[0]

edited_image.save("edited.png")

几个小提示

  • heightwidth 必须是 32 的倍数,这是模型架构决定的
  • num_inference_steps 推荐 50 步,质量和速度的平衡点
  • guidance_scale 推荐 1.5,太高可能会过拟合

4. 性能到底怎么样?

4.1 文字渲染:这是强项

GLM-Image 最亮眼的地方就是文字渲染能力,在多个基准测试中都拿了开源模型第一:

CVTG-2K 测试(复杂视觉文本生成):

  • 平均单词准确率:0.9116(开源第一)
  • NED 得分:0.9557(开源第一)

具体到多区域文本生成,表现也很稳:

  • 2 个区域:91.03%
  • 3 个区域:92.09%
  • 4 个区域:91.69%
  • 5 个区域:89.75%

对比一下,FLUX.1 的平均准确率只有 49.65%,SD3.5 Large 是 65.48%,差距还是挺明显的。

LongText-Bench 测试(长文本渲染):

  • 英文:0.9524(开源第一)
  • 中文:0.9788(开源第一)

中文文字渲染达到 97.88% 的准确率,这个数字还是很惊人的。测试覆盖了招牌、海报、PPT、对话框等 8 种常见场景。

4.2 通用图像生成:也不差

虽然 GLM-Image 主打文字渲染,但在通用图像生成上也没掉链子:

OneIG-Bench

  • 英文:0.528(对齐度 0.805、文本理解 0.969)
  • 中文:0.511(对齐度 0.738、文本理解 0.976)

DPG-Bench

  • 整体:84.78
  • 全局理解:87.74
  • 实体识别:90.25
  • 关系推理:92.15

TIFF-Bench

  • 短文本:81.01
  • 长文本:81.02

总的来说,在通用图像生成质量上能跟主流的潜在扩散模型打个平手,但在文字渲染和知识密集型场景中就明显领先了。


5. 总结一下

GLM-Image 是个挺有意思的尝试,它不只是想生成好看的图片,更想让 AI 能”说清楚”复杂的信息。通过自回归 + 扩散的混合架构,它在文字渲染这块做到了开源模型的天花板,中文文字准确率达到 97.88%,这对于需要制作海报、PPT、科普插图的场景来说还是很实用的。

几个亮点

  • 架构设计很巧妙,把”理解”和”绘画”分开处理
  • 文字渲染能力确实强,尤其是中文
  • 完全开源(MIT 许可证),可以商用
  • 不只能生图,还能编辑、风格迁移

从技术角度看,GLM-Image 代表了一个新方向:从”纯视觉生成”到”认知生成”。未来的图像生成模型可能不只是画得好看,还得”懂”你想表达什么,能准确地把复杂信息视觉化。这对教育、商业、科普等领域来说,想象空间还是挺大的。

如果你正好有文字渲染的需求,或者想做些知识密集型的图像生成,不妨试试 GLM-Image。

相关资源

分享文章

更多文章