TextDiffuser-2: Unleashing the Power of Language Models for Text Rendering¶
会议: ECCV 2024
arXiv: 2311.16465
领域: 图像生成
一句话总结¶
TextDiffuser-2 利用两个语言模型分别进行布局规划和布局编码,实现了更灵活、更自动化、更多样化的视觉文本渲染,在保持文本准确性的同时大幅提升了字体风格多样性。
研究背景与动机¶
扩散模型在图像合成领域取得了巨大成功,但在视觉文本渲染方面仍面临挑战。现有方法存在三大缺陷:
- 灵活性和自动化不足:GlyphControl 需要用户手动设计字形图像,GlyphDraw 和 TextDiffuser 需要手动指定关键词,无法直接从自然语言提示生成对应图像。
- 布局预测能力受限:GlyphDraw 只能渲染单行文本,TextDiffuser 的 Layout Transformer 生成的布局不够美观。
- 字体风格多样性受限:TextDiffuser 使用字符级分割掩码作为控制信号,隐式约束了字符位置,限制了手写体或艺术字体的生成。
这些问题的根源在于现有方法使用了过于严格的字符级控制信号,缺乏灵活的布局规划能力。TextDiffuser-2 旨在释放语言模型在文本渲染中的潜力,解决上述问题。
方法详解¶
整体框架¶
TextDiffuser-2 采用两阶段训练架构,核心是两个语言模型: - 语言模型 M1(布局规划器):基于 Vicuna-7B 微调,将用户提示转换为语言格式的布局 - 语言模型 M2(布局编码器):扩散模型内的 CLIP 文本编码器,编码行级文本位置和内容信息
关键设计¶
1. 语言模型进行布局规划(M1)
利用 MARIO-10M 数据集中的 caption-OCR 对微调 Vicuna-7B,使其成为布局规划器:
- 支持两种模式:(a) 用户不提供关键词时,自动推断文本内容和布局;(b) 用户提供关键词时,只需确定对应的布局位置
- 输出格式为 "textline x0, y0, x1, y1",坐标归一化到 0~128 范围
- 通过多轮对话支持布局修改(重新生成、添加、移动关键词)
- 仅需 5k 数据即可达到最优微调效果
2. 语言模型进行布局编码(M2)
在扩散模型内利用 CLIP 文本编码器编码行级布局信息:
- 混合粒度分词策略:对 prompt 保持原始 BPE 分词,对关键词引入字符级分词(如 "WILD" → "[W]", "[I]", "[L]", "[D]")
- 引入 256 个坐标 token 和 95 个字符 token 编码位置和内容
- 行级边界框提供更灵活的生成控制,不限制字体风格多样性
- 最大序列长度 L 设为 128,覆盖 94% 训练样本
3. 模型容量
整体模型基于 SD 1.5,包含 922M 参数,输入图像尺寸为 512×512。
损失函数¶
- 阶段一(布局规划):交叉熵损失训练 M1,同时训练有/无关键词场景
- 阶段二(图像生成):L2 去噪损失训练 M2 和 U-Net
\[\mathcal{L}_{denoise} = \mathbb{E}_{z_0, \epsilon, t} \| \epsilon - \epsilon_\theta(z_t, c, t) \|^2\]
实验关键数据¶
主实验¶
在 MARIO-Eval 基准上的定量结果和用户研究:
| 指标 | SD-XL | PixArt-α | GlyphControl | TextDiffuser | TextDiffuser-2 |
|---|---|---|---|---|---|
| FID↓ | 62.54 | 87.09 | 50.82 | 38.76 | 33.66 |
| CLIPScore↑ | 31.31 | 27.88 | 34.56 | 34.36 | 34.50 |
| OCR Accuracy↑ | 0.31 | 0.02 | 32.56 | 56.09 | 57.58 |
| OCR F-measure↑ | 3.66 | 0.03 | 64.07 | 78.24 | 75.06 |
| 文本质量(人类)↑ | 14.58 | 3.65 | 21.35 | 23.44 | 36.98 |
| 文本-图像匹配(人类)↑ | 7.14 | 3.30 | 29.67 | 19.23 | 40.66 |
TextDiffuser-2 在 FID、OCR 准确率、用户研究等大多数指标上取得最佳结果。
消融实验¶
微调数据量消融(M1 布局规划器):
| 数据量 | Accuracy↑ | Precision↑ | Recall↑ | F-measure↑ | IoU↓ |
|---|---|---|---|---|---|
| 0k-2shot | 49.65 | 84.18 | 69.69 | 76.25 | 19.69 |
| 2.5k | 61.10 | 82.20 | 85.18 | 83.67 | 3.21 |
| 5k | 64.85 | 84.98 | 86.38 | 85.67 | 3.25 |
| 10k | 64.85 | 84.38 | 86.23 | 85.29 | 4.27 |
| 100k | 62.87 | 85.26 | 85.98 | 85.62 | 4.31 |
5k 数据即可达到最优性能,更多数据反而无明显提升。
坐标表示和分词粒度消融:
| 表示方式 | Accuracy↑ | Precision↑ | Recall↑ | F-measure↑ |
|---|---|---|---|---|
| Center (Char) | 35.19 | 61.75 | 62.71 | 62.23 |
| LT (Char) | 28.32 | 54.94 | 55.64 | 55.29 |
| LT+RB (Subword) | 15.48 | 41.74 | 42.53 | 42.13 |
| LT+RB (Char) | 57.58 | 74.02 | 76.14 | 75.06 |
使用左上+右下角点 + 字符级分词效果最佳,子词级分词准确率下降 42.1%。
关键发现¶
- 语言模型具有自主推断关键词的灵活性,如自动纠正拼写错误("RRAINBOW" → "RAINBOW")
- 行级引导比字符级引导产生更多样化的字体风格,但需要接受一定的准确率折中
- 通过多轮对话可以灵活操控布局,支持重新生成、添加或移动关键词
- TextDiffuser-2 对重叠框具有更强的鲁棒性
亮点与洞察¶
- 极少数据微调:仅需 5k caption-OCR 对即可将 7B 语言模型训练为高质量布局规划器,展现了 LLM 跨领域迁移的强大能力
- 控制粒度的权衡:从字符级→行级控制信号,用少量准确率换取了显著的风格多样性提升,是一个精妙的设计权衡
- 可交互布局编辑:基于聊天模型微调的布局规划器天然支持多轮对话修改布局,提升了实用性
- 混合粒度分词:prompt 用 BPE、关键词用字符级分词的混合策略兼顾了效率和拼写能力
局限性¶
- 无法渲染复杂语言(如中文),因字符集庞大导致 few-shot 甚至 zero-shot 场景
- 生成分辨率受限于 512×512
- 行级控制虽提升了多样性,但在需要精确字符对齐的场景下准确率略低于字符级方法
评分¶
- 创新性: ★★★★☆ — 双语言模型架构设计新颖,混合粒度分词策略巧妙
- 实用性: ★★★★★ — 自动化程度高,支持多轮交互编辑
- 实验充分度: ★★★★★ — 消融实验全面,包含人类和 GPT-4V 用户研究
- 写作质量: ★★★★☆ — 结构清晰,动机阐述充分