GlyphDraw: Seamlessly Rendering Text with Intricate Spatial Structures in Text-to-Image Generation (Paper reading)
Jian Ma, OPPO Research Institute, CH, arXiv, Cited:1, Code, Paper
1. 前言
近期,在语言引导图像生成领域取得了令人瞩目的突破,实现了基于用户指令生成高质量和多样化图像。虽然合成效果令人惊叹,但当前图像生成模型的一个重要局限是其在图像中连贯生成文本的能力不足,尤其是对于复杂的字形结构,如中文字符。为了解决这个问题,我们引入了GlyphDraw,这是一个通用的学习框架,旨在赋予图像生成模型以生成嵌入文本的图像的能力,适用于任何特定语言。我们首先精心设计了图像-文本数据集的构建策略,然后基于基于扩散的图像生成器构建我们的模型,并仔细修改网络结构,使模型能够借助字形和位置信息学习绘制语言字符。此外,我们通过使用参数高效的微调技术,保持了模型的开放域图像合成能力,以防止灾难性遗忘。大量的定性和定量实验证明,我们的方法不仅能够准确地生成与提示中相符的语言字符,而且还能将生成的文本无缝融入背景中。
2. 整体思想
首先得有带中文文字的图片数据集,有了数据集我们还有构建prompt,使用BLIP-2为图像生成标题(用于prompt),现在就有了带文字的图像和标题。我们希望文字生成带文字图像,就需要让扩散模型对文字aware,并根据文本中的信息生成文字。本文使用的方法是:训练阶段,我们通过OCR识别将图片中的文字扣出来变成mask,把原图,mask,和文字提示cancat送到去噪器中,这样扩散模型就知道了具体的文字位置和文字信息,在prompt的加持下,训练这个模型就能让其学会根据文本生成对应位置的文字和内容。本文可能是第一份工作,生成的效果很突兀,就像20年前那种图片加文字的方式。
3. 方法
当前的图像合成方法在生成细粒度和复杂结构(如人手和文本内容)方面仍面临许多挑战。先驱性工作Imagen证明,使用冻结的预训练通用大型语言模型(如T5-XXL)可以在图像中呈现英文文本,而无需引入特定设计的网络和训练策略。最近的另一项工作提出利用字符感知的语言模型(如ByT5系列)进一步增强图像合成模型的视觉文本呈现能力。然而,正如这项工作中所展示的那样,这些方法对于生成非拉丁字符(如中文)是不足够的。这主要是由于中文字符具有更复杂的二维空间结构,由八种不同类型的基本笔画组成,以及大量常用字符(多达数千个)。因此,生成准确多样的中文字符更加困难,仍然是一个未解决的研究问题。此外,通过冻结预训练的通用语言模型对于调整图像合成模型以呈现用户指定的下游语言的视觉文本是不灵活的,而从头开始训练一个特定的语言模型则成本高昂且需要大量数据。因此,我们受到启发,设计了一种通用且可适应的算法,通过使用轻量级的训练策略和数据集来应对视觉文本呈现的挑战。
为了解决这个问题,我们提出了GlyphDraw,这是一个通用框架,旨在赋予图像生成模型在图像中生成连贯的视觉文本的能力。GlyphDraw利用字符字形和文本位置作为辅助信息,更好地控制字符生成的过程。我们的方法取得了令人瞩目的成果,能够生成多样化的视觉文本,精确地遵循给定的指令。值得注意的是,生成的文本智能地匹配最适合上下文的字体风格,并且与背景融合无缝,同时保持高质量的生成,避免过拟合和灾难性遗忘等问题,正如图1中的中文和英文示例所示。我们的主要贡献总结如下:
- 我们引入了GlyphDraw,一个通用且灵活的框架,用于解决任何特定语言(如英文或中文)的视觉字符生成问题。GlyphDraw在整个生成过程中提供细粒度的指导,使得高质量的复杂字符以各种风格无缝融入图像环境中。
- 我们开发了一种基于预训练模型的参数高效微调策略,以防止过拟合和灾难性遗忘,从而有效地保持了模型在开放域生成方面的强大性能,并同时实现了准确的视觉文本生成。
- 我们详细说明了训练数据集的构建过程和评估基准,在这些基准上,我们的GlyphDraw分别实现了中文和英文字符呈现的出色OCR准确率,分别达到74%和75%,显著优于先前的图像合成方法。
3.1 相关工作
许多研究探索了将文本内容整合到图像合成中的挑战。例如,字体生成的研究旨在通过将其视为基于给定输入字体的风格转换问题来创建新颖的字体。Diff-font利用扩散模型处理字体生成任务。然而,这些工作仅关注生成字体字形而没有背景,并且与我们改进图像合成中的文本生成的目标不符合。另一项相关工作提出了字符感知的扩散模型,通过融入字符级输入特征来改进文本生成。然而,字符感知方法在生成非拉丁文本方面表现不佳,这是由于它们的空间结构的复杂性。据我们所知,我们的论文首次提出解决非拉丁文本(例如中文)在通用图像合成中生成的难题。
3.2 介绍
在本节中,我们首先简要回顾一下Stable Diffusion (SD)的必要符号,以便更方便地描述我们后面提出的算法。然后,我们将详细介绍GlyphDraw框架的概述,并解释我们如何利用辅助信息。此外,我们还将介绍我们设计的防止灾难性遗忘的训练策略。最后,我们将介绍推断过程,该过程与训练阶段略有不同。
在SD中,输入图像会被自编码器变换为latent表示,扩散过程也是在隐空间中进行的。其中使用一个条件U-Net来预测当前步
t
t
t,隐空间噪声
z
t
z_t
zt和生成条件
C
C
C下的噪声
ϵ
\epsilon
ϵ,这里条件是被添加到U-Net模块中的交叉注意力模块。
Attention
(
Q
,
K
,
V
)
=
softmax
(
Q
K
T
d
)
⋅
V
w
h
e
r
e
Q
=
W
Q
(
i
)
⋅
φ
i
(
z
t
)
,
K
=
W
K
(
i
)
⋅
C
,
V
=
W
V
(
i
)
⋅
C
.
\operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d}}\right) \cdot V \\ where \quad Q=W_{Q}^{(i)} \cdot \varphi_{i}\left(z_{t}\right), K=W_{K}^{(i)} \cdot C, V=W_{V}^{(i)} \cdot C .
Attention(Q,K,V)=softmax(dQKT)⋅VwhereQ=WQ(i)⋅φi(zt),K=WK(i)⋅C,V=WV(i)⋅C.
其中,
φ
i
(
z
t
)
\varphi_{i}(z_{t})
φi(zt)是经过去噪器的展平的向量,
W
Q
(
i
)
,
W
K
(
i
)
,
W
V
(
i
)
W_{Q}^{(i)},W_{K}^{(i)},W_{V}^{(i)}
WQ(i),WK(i),WV(i)
是可学习的投影矩阵。在文本到图像生成这一背景下,条件
C
=
τ
θ
(
y
)
C=\tau_{\theta}(y)
C=τθ(y)是由预训练的CLIP文本编码器
τ
θ
\tau_{\theta}
τθ对文本
y
y
y编码所获得。
3.3 模型概述
我们提出的GlyphDraw方法的整体训练框架如图所示。我们重点修改了Stable Diffusion中的交叉注意力机制。原始输入潜变量 z t z_t zt被替换为图像潜变量 z t z_t zt、文本掩码 l m l_m lm和字形图像 l g l_g lg的concatenation。此外,通过使用特定领域的融合模块,条件 C C C配备了混合的字形和文本特征。文本掩码和字形信息的引入使得在整个训练过程中能够进行细粒度的扩散控制,这是提高性能的关键组成部分之一。对于图像潜部分,将OCR检测到的字符掩码 l m l_m lm和仅包含字符视觉信息的字形图像 l g l_g lg与图像潜特征 z t z_t zt进行连接。然后,组合的潜特征 z t ′ z'_t zt′被用作UNet的输入。至于文本条件部分,预训练的CLIP模型将提示和字形图像分别编码为嵌入 e t e_t et和 e g e_g eg。然后,采用融合模块进一步将文本和字形嵌入融合为条件特征 C C C,该特征用作UNet交叉注意力层的键和值组件。在推理过程中,采用类似MLP的掩码预测模块来估计字符掩码图。
3.4 辅助信息的探索
文字信息的像素表示,特别是类似汉字的表意文字,与自然对象的表示有很大的区别。例如,汉字“天空”只是由多个笔画构成的二维结构,而其自然图像对应的想象则是“一个巨大的蓝色屏幕上点缀着白云”。视觉文本是一种非常细粒度的特征,即使是微小的偏移或变形也会导致错误的文本呈现,从而产生不真实的图像生成。在将字符嵌入到自然图像背景中时,还需要考虑如何在不影响相邻自然图像像素的情况下精确控制文本像素的生成。因此,为了在逼真的自然图像上呈现完美的字符而不产生不协调之处,我们在基于扩散的合成模型中精心设计了两个关键组成部分,即位置控制和字形控制。
位置控制:字符像素的潜特征分布与自然图像像素的分布差异巨大。为了防止模型学习崩溃,我们创新地引入了细粒度的位置区域控制来解耦不同区域之间的分布。具体而言,在原始图像潜特征上生成一个二值掩码特征图,并将其连接到原始图像潜特征上。在训练阶段,通过OCR检测信息提取四边形状的掩码。在推理阶段,由于没有可用的参考图像,在早期的扩散阶段通过掩码预测模块生成掩码,这将在第3.5节进一步讨论。
字形控制:除了上述的位置控制之外,另一个重要的挑战是对语言字符笔画合成进行精细控制。鉴于中文字符的复杂性(通常由1到20个二维笔画组成)和多样性(高达10,000个常用字符),仅仅从大规模的图像-文本数据集中学习而没有任何明确的先验知识注入是极其困难的。为了准确生成中文字符,我们将明确的字形图像作为额外的条件信息引入到模型扩散过程中。具体而言,如图2所示,一个预先提取的字形图像,仅包含位于图像中心的中文字符,并带有白色背景,例如“北戴河(Beidai River)”,同时注入到图像潜部分和文本嵌入部分。首先,由字形生成器提取的灰度字形图像
l
g
l_g
lg被连接到噪声图像潜特征
z
t
z_t
zt和二值文本掩码
l
m
l_m
lm上,形成新的图像潜特征
z
t
′
=
c
o
n
c
a
t
(
z
t
,
l
g
,
l
m
)
z'_t = concat(z_t, l_g, l_m)
zt′=concat(zt,lg,lm)。经过卷积层进行维度调整后,特征向量
z
~
t
=
c
o
n
v
i
n
(
z
t
′
)
\tilde z_t = conv_{in}(z'_t)
z~t=convin(zt′) 被输入到 UNet 作为query组件。在条件信息方面,
C
=
M
[
c
o
n
c
a
t
(
e
g
,
e
t
)
]
C = M [concat(e_g, e_t)]
C=M[concat(eg,et)]通过融合模块
M
M
M从字形嵌入(
e
g
=
I
θ
(
l
g
)
e_g = I_θ(l_g)
eg=Iθ(lg))和文本嵌入(
e
t
=
τ
θ
(
y
)
e_t = τ_θ(y)
et=τθ(y))中提取,其中字形嵌入从固定的 CLIP 图像编码器 (
I
θ
I_θ
Iθ) 提取,文本嵌入从文本编码器 (
τ
θ
τ_θ
τθ) 提取。因此,GlyphDraw 的基本训练目标是:
L
G
D
b
=
E
ε
(
x
0
)
,
y
,
l
g
,
l
m
,
ϵ
∼
N
(
0
,
1
)
,
t
=
[
∣
∣
ϵ
−
ϵ
θ
(
z
t
,
t
,
y
,
l
g
,
l
m
)
∣
∣
2
2
]
\mathcal{L}_{GD_b}=\mathbb{E_{\varepsilon (x_0),y,l_g,l_m,\epsilon \sim N(0,1),t}}=[||\epsilon-\epsilon_{\theta}(z_t,t,y,l_g,l_m)||^2_2]
LGDb=Eε(x0),y,lg,lm,ϵ∼N(0,1),t=[∣∣ϵ−ϵθ(zt,t,y,lg,lm)∣∣22]
3.5 训练
在学习阶段,我们只更新用于学习语言字符生成的网络参数,同时冻结其他参数以保留模型的整体能力。为了使UNet能够将位置掩码和字形信息作为额外的通道与图像潜变量一起使用,我们相应地调整了UNet的输入“conv_in”模块,以适应额外的信息并在学习过程中更新它。类似地,融合模块也需要更新,该模块通过整合字形信息和文本提示的嵌入来修改生成条件C。此外,最重要的是,在更新从给定文本到图像分布的映射时,只需更新每个交叉注意力块 i i i中的 W K i W^i_K WKi和 W V i W^i_V WVi就足够了,因为文本特征是键和值投影矩阵的唯一输入。通过精选要更新的参数,我们的方法有效地保持了模型的生成性能,并在仅更新总参数的3%时实现了连贯的文本生成,大大加快了模型的收敛速度。
为了进一步提高我们模型的视觉文本生成性能,我们在训练目标的设计中实施了一种加权策略,旨在在学习过程中强调语言字符生成能力的学习。具体而言,我们根据位置掩码信息
l
m
l_m
lm,对文本区域的训练损失进行额外加权,如下所示:
L
G
D
=
E
ε
(
x
0
)
,
y
,
l
g
,
l
m
,
ϵ
∼
N
(
0
,
1
)
,
t
=
[
∣
∣
ϵ
−
ϵ
θ
(
z
t
,
t
,
y
,
l
g
,
l
m
)
∣
∣
2
2
+
α
∣
∣
(
ϵ
−
ϵ
θ
(
z
t
,
t
,
y
,
l
g
,
l
m
)
)
∗
(
1
−
l
m
)
∣
∣
2
2
]
\mathcal{L}_{GD}=\mathbb{E_{\varepsilon (x_0),y,l_g,l_m,\epsilon \sim N(0,1),t}}=[||\epsilon-\epsilon_{\theta}(z_t,t,y,l_g,l_m)||^2_2+\alpha||(\epsilon-\epsilon_{\theta}(z_t,t,y,l_g,l_m))*(1-l_m)||^2_2]
LGD=Eε(x0),y,lg,lm,ϵ∼N(0,1),t=[∣∣ϵ−ϵθ(zt,t,y,lg,lm)∣∣22+α∣∣(ϵ−ϵθ(zt,t,y,lg,lm))∗(1−lm)∣∣22]
3.6 推理
在推断过程中,由于缺乏原始图像x0,无法直接通过OCR检测器提取掩码信息lm。因此,我们在图2中提出了一个掩码预测模块(红色线和框),用于估计具有任意形状的粗略掩码。如图3所示,我们通过使用经过MSE损失训练的简单像素级MLP网络,在前几个扩散步骤(t = {T,T−1,…,tearly})中估计字符掩码,该损失是估计的掩码和真实掩码之间的损失。在获得预测的掩码后,我们通过DDIM 采样策略通过完整的扩散过程(t = {T,T−1,…,rT,…,1})重新生成图像。我们使用Glyphdraw模型对前几个步骤({T,T−1,…,rT + 1})进行采样,使用预训练的稳定扩散模型对剩余的步骤({rT,…,1})进行采样,丢弃字形和位置先验,其中r ∈ [0,1] 是一个超参数,用于在文本渲染精度和开放域生成能力之间进行权衡。
4. 实验
基于稳定扩散,GlyphDraw由VAE、UNet、CLIP和融合模块组成,总共包含19亿个参数,其中仅有10亿个参数(融合模块、conv_in模块和投影矩阵W(i)K、W(i)V)可训练。VAE和UNet从稳定扩散模型的检查点初始化,CLIP图像和文本编码器从预训练的CLIP检查点加载。在CLIP编码器之后,图像和文本的token长度分别为257和64。我们采用一个具有6层、8个注意头和1024个隐藏维度的Transformer作为融合模块。我们将学习率设置为2e-5,将方程中的加权比例超参数α设置为0.5。整个模型在24个A100 GPU上进行训练,每个GPU的批量大小为25,共进行20个epoch的训练。