本文主要是介绍ANYTEXT: MULTILINGUAL VISUAL TEXT GENERATION AND EDITING,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ANYTEXT: MULTILINGUAL VISUAL TEXT GENERATION AND EDITING
Yuxiang Tuo, Institute for Intelligent Computing, Alibaba Group, ICLR2024 (6668), Code, Paper
1. 前言
基于扩散模型的文本到图像最近取得了令人印象深刻的成就。尽管当前用于合成图像的技术是高度先进的,并且能够以高保真度生成图像,但是当聚焦于生成的图像中的文本区域时,仍然有可能泄露显示,因为合成的文本通常包含模糊、不可读或不正确的字符,使得视觉文本生成成为该领域中最具挑战性的问题之一。为了解决这个问题,我们介绍了AnyText,这是一种基于扩散的多语言视觉文本生成和编辑模型,专注于在图像中呈现准确连贯的文本。AnyText包括一个具有两个主要元素的扩散管道:一个辅助潜在模块和一个文本嵌入模块。前者使用文本字形、位置和遮罩图像等输入来生成用于文本生成或编辑的潜在特征。后者采用OCR模型将笔划数据编码为嵌入,嵌入与标记器的图像字幕嵌入相融合,生成与背景无缝集成的文本。我们采用文本控制扩散损失和文本感知损失进行训练,以进一步提高写作准确性。AnyText可以用多种语言书写字符,据我们所知,这是第一部解决多语言视觉文本生成问题的作品。值得一提的是,AnyText可以插入社区中现有的扩散模型,以便准确地渲染或编辑文本。经过广泛的评估实验,我们的方法显著优于所有其他方法。此外,我们还提供了第一个大规模的多语言文本图像数据集AnyWord-3M,其中包含300万个带有多种语言OCR注释的图像-文本对。基于AnyWord-3M数据集,我们提出了用于评估视觉文本生成准确性和质量的AnyText基准。
2. 整体思想
整体就是基于了ControlNet,只不过有一些额外的细节创新吧,工作量比较足。Control Net确实强啊,就是一般人train不起。
3. 方法
如下图所示,AnyText框架包括一个文本控制扩散pipeline,该pipeline具有两个主要组件(辅助潜在模块和文本嵌入模块)。总体训练目标定义为:
L = L t d + λ L t p L = L_{td} + \lambda L_{tp} L=Ltd+λLtp
3.1 TEXT-CONTROL DIFFUSION PIPELINE
如上图,带文本的图像 x 0 x_0 x0经过VAE编码为 z 0 z_0 z0,然后获得加噪的 z t z_t zt。正常训练只需要由 z t z_t zt预测噪声 ϵ \epsilon ϵ。这里作者使用的是ControlNet的思想,也就是 z t z_t zt只经过冻结的U-Net。另外拷贝一个U-Net的编码层,命名为TextControlNet。输入是 z a z_a za和 z t z_t zt相加,然后控制U-Net。这使TextControlNet能够专注于文本生成,同时保留基本模型生成没有文本的图像的能力。此外,通过模块化绑定,各种基本模型也可以生成文本。如下图:
3.2 AUXILIARY LATENT MODULE
如图2,辅助信息包含字形 l g l_g lg,位置 l p l_p lp和掩码 l m l_m lm。 l g l_g lg就是图片中对应的文字,因为曲线到文字不好直接画出,所以这个文字直接是矩形的。 l p l_p lp是对文字的地方掩码,在推理时候根据用户的输入掩码来生成,如下:
l m l_m lm是除了文字以外的内容,是我们要保留的地方。文成图阶段, l m l_m lm是全掩码,在文本编辑阶段是想编辑的区域。在训练过程中,文本编辑模式比以σ的概率随机切换。
为了融入这些条件, l g l_g lg和 l p l_p lp经过堆叠的卷积层 G G G和 P P P提取到与 z t z_t zt同样分辨率到特征图, l m l_m lm经过VAE编码器 ϵ \epsilon ϵ,最终他们相加经过一个卷积融合层 f f f得到 z a z_a za:
z a = f ( G ( l g ) + P ( l p ) + ϵ ( l m ) ) z_a = f(G(l_g)+P(l_p)+\epsilon(l_m)) za=f(G(lg)+P(lp)+ϵ(lm))
3.3 TEXT EMBEDDING MODULE
文本编码器擅长从标题中提取语义信息,但要呈现的文本的语义信息可以忽略不计。此外,大多数预训练的文本编码器都是基于拉丁数据进行训练的,不能很好地理解其他语言。在 AnyText 中,我们提出了一种解决多语言文本生成问题的新方法。具体来说,我们将字形行渲染成图像,编码字形信息,并从标题tokens替换它们的嵌入。然后,将替换后的嵌入作为tokens馈送到基于transformer的文本编码器中,以获得融合的中间表示,然后使用交叉注意力机制将其映射到UNet的中间层。由于使用了文本的图像渲染,而不是仅仅依赖于特定语言的文本编码器,我们的方法显著增强了多语言文本的生成,如下图所示:
具体来说,text2img中,“”双引号中的单词BEVERLY和HILLS被分别制作为两个图像,这个图像经过OCR的编码器并通过可学习的卷积调整并替换整个句子中对应的tokens。这么做的目的是,为了在训练阶段文本编码中对于特定文本的语言信息更强,或者说,相对于冻结的text encoder和OCR encoder,这里给模型更多调整的空间,个人认为。
3.4 TEXT PERCEPTUAL LOSS
我们提出了一种文本感知损失,以进一步提高文本生成的准确性。假设 ε t ε_t εt表示去噪网络 ε θ ε_θ εθ预测的噪声,我们可以将时间步长 t t t和噪声潜像 z t z_t zt相结合来预测 z 0 z_0 z0。这可以进一步与VAE解码器一起使用,以获得原始输入图像的近似重建,表示为 x ′ 0 x′_0 x′0。通过从潜在空间过渡到图像空间,我们可以在像素级别上进一步监督文本生成。借助位置条件 l p l_p lp,我们可以准确地定位生成文本的区域。我们的目标是将该区域与原始图像 x 0 x_0 x0中的相应区域进行比较,并仅关注文本本身的书写正确性,不包括背景、字符位置、颜色或字体样式的偏差等因素。因此,我们采用PP-OCRv3模型,如第3.3节所述,作为图像编码器。通过裁剪、仿射变换、填充和归一化等操作处理位置 p p p处的 x 0 x_0 x0和 x ′ 0 x′_0 x′0,我们获得了用作OCR模型输入的图像 p g p_g pg和 p ′ g p′_g p′g。我们利用全连通层之前的特征图,分别表示原始图像和预测图像中位置$p4处的文本书写信息。文本感知损失表示为:
4. DATASET AND BENCHMARK
目前,缺乏专门为文本生成任务量身定制的公开数据集,尤其是涉及非拉丁语言的数据集。因此,我们提出了AnyWord-3M,这是一个来自公开图像的大规模多语言数据集。这些图像的来源包括NoahWukong Gu等人,LAION-400M-Schuhmann等人,以及用于OCR识别任务的数据集,如ArT、COCO Text、RCTW、LSVT、MLT、MTWI、ReCTS。这些图像涵盖了包含文本的各种场景,包括街景、书籍封面、广告、海报、电影框架等。除了直接使用注释信息的OCR数据集外,所有其他图像都使用PP-OCRv3检测和识别模型。然后,使用BLIP-2重新生成字幕。
通过严格的过滤规则和细致的后处理,我们总共获得了3034486张图像,超过900万行文本和2000多万个字符或拉丁单词。我们从KongWu和LAION子集中随机提取了1000张图像,以创建名为AnyText基准的评估集。这两个评估集分别专门用于评估中文和英文生成的准确性和质量。剩下的图像被用作名为AnyWord-3M的训练集,其中大约160万张是中文,139万张是英文,还有1万张是其他语言的图像,包括日语、韩语、阿拉伯语、孟加拉语和印地语。
对于AnyText基准测试,我们使用了三个评估指标来评估文本生成的准确性和质量。首先,我们使用句子准确性(Sen.Acc)度量,其中根据指定的位置裁剪每个生成的文本行,并将其输入PP-OCRv3识别模型以获得预测结果。只有当预测的文本完全符合基本事实时,它才被认为是正确的。此外,我们使用了另一个不太严格的度量标准,归一化编辑距离(NED)来测量两个字符串之间的相似性。这两个指标是使用OCR模型进行评估的。然而,仅仅依靠OCR并不能完全捕捉图像质量。因此,我们引入了Frechet Inception Distance(FID)来评估生成的图像和真实世界图像之间的分布差异。
5. 实验
我们的训练框架是基于ControlNet实现的,模型的权重是从SD1.52初始化的。我们的模型在AnyWord-3M数据集上使用8个A100 GPU进行了10个epochs的训练。我们采用了渐进微调策略,在前5个时期关闭编辑分支,然后在接下来的3个时期以σ=0.5的概率激活。在最后两个时期,我们启用了权重系数λ=0.01的感知损失。 l g l_g lg和 l p l_p lp的图像尺寸被设置为1024x1024和512x512,而 e g e_g eg、 p g p_g pg和 p ′ g p′_g p′g都被设置为80x512。我们使用AdamW优化器,学习率为2e-5,批量大小为48。在采样过程中,每个图像最多选择5条文本行,每个文本行最多选择20个字符来渲染到图像上,因为此设置可以覆盖数据集中的大多数情况。
5.1 消融实验
- Editing: 比较实验1和实验2,我们观察到当启用编辑分支时略有下降。这是因为文本生成和编辑是两项不同的任务,启用编辑分支增加了模型收敛的难度。为了集中精力分析文本生成部分,我们通过将概率参数σ设置为0,在所有后续实验中禁用了编辑。
- Position: 比较Exp.3和Exp.4,尽管 l g l_g lg中渲染的文本隐含地包含位置信息,但包含更准确的位置 l p l_p lp进一步提高了性能,并使模型能够在不规则区域中生成文本。
- Text Embedding: 在实验1~2中,字幕由CLIP文本编码器直接编码。在实验3中,我们使用文本嵌入模块将图像字幕的语义与文本的字形信息融合,使Sen-Acc度量显著提高了26.6%,这表明了该方法的显著优势。
- Text Perceptual Loss: 实验5~7验证了文本感知损失的有效性。在进行三个实验后,我们发现λ=0.01产生了最好的结果,与Sen-Acc度量中的Exp.3相比,提高了4.7%。值得注意的是,感知损失需要从潜在空间过渡到图像空间,这减缓了训练过程。因此,对于实验5~7,我们从实验3的13个epoh开始训练,只为剩下的2个epoch进行训练。尽管如此,知觉丧失表现出显著的改善。
这篇关于ANYTEXT: MULTILINGUAL VISUAL TEXT GENERATION AND EDITING的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!