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 x0。通过从潜在空间过渡到图像空间,我们可以在像素级别上进一步监督文本生成。借助位置条件 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 x0,我们获得了用作OCR模型输入的图像 p g p_g pg p ′ g p′_g pg。我们利用全连通层之前的特征图,分别表示原始图像和预测图像中位置$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 pg都被设置为80x512。我们使用AdamW优化器,学习率为2e-5,批量大小为48。在采样过程中,每个图像最多选择5条文本行,每个文本行最多选择20个字符来渲染到图像上,因为此设置可以覆盖数据集中的大多数情况。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

5.1 消融实验

在这里插入图片描述

  1. Editing: 比较实验1和实验2,我们观察到当启用编辑分支时略有下降。这是因为文本生成和编辑是两项不同的任务,启用编辑分支增加了模型收敛的难度。为了集中精力分析文本生成部分,我们通过将概率参数σ设置为0,在所有后续实验中禁用了编辑。
  2. Position: 比较Exp.3和Exp.4,尽管 l g l_g lg中渲染的文本隐含地包含位置信息,但包含更准确的位置 l p l_p lp进一步提高了性能,并使模型能够在不规则区域中生成文本。
  3. Text Embedding: 在实验1~2中,字幕由CLIP文本编码器直接编码。在实验3中,我们使用文本嵌入模块将图像字幕的语义与文本的字形信息融合,使Sen-Acc度量显著提高了26.6%,这表明了该方法的显著优势。
  4. Text Perceptual Loss: 实验5~7验证了文本感知损失的有效性。在进行三个实验后,我们发现λ=0.01产生了最好的结果,与Sen-Acc度量中的Exp.3相比,提高了4.7%。值得注意的是,感知损失需要从潜在空间过渡到图像空间,这减缓了训练过程。因此,对于实验5~7,我们从实验3的13个epoh开始训练,只为剩下的2个epoch进行训练。尽管如此,知觉丧失表现出显著的改善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/223145.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大话数据结构-查找-有序表查找

注:本文同步发布于稀土掘金。 3 有序表查找 3.1 折半查找 折半查找(Binary Search)技术,又称为二分查找,它的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须…

助力信创自主可控,AntDB与浪潮、超聚变完成产品互认

日前,湖南亚信安慧科技有限公司与浪潮商用机器有限公司、超聚变数字技术有限公司展开产品兼容互认工作。 近年来,在数据处理需求快速增长以及信创政策加持的情况下,信创行业活力迸发。操作系统、数据库和服务器作为信创基础软硬件&#xff0…

idea编辑代码卡顿问题

现象: 日常开发代码的时候,偶尔会遇到开发某个项目的时候,一编辑代码就会idea就会卡住 定位: 1、不敲代码时,电脑性能一切正常 2、只要一修改代码,可以发现cpu老是飙到100 3、但是相同的一个项目&#x…

Ubuntu22.04通过Maas和Juju部署openstack charm

目录 官方文档材料准备软件硬件 模板机和虚拟网络安装MAAS官方文档MAAS节点配置安装MAAS浏览器登录MAAS进行配置 激活DHCP 官方文档 https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/ 这是一个通过Maas面板即可部署openstack的方式&#xff0…

python HTML文件标题解析问题的挑战

引言 在网络爬虫中,HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息,但是在实际操作中,我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题,并…

Spring Boot基础

文章目录 一、Spring Boot1. Spring的缺点2. Spring Boot 改变了什么3. Spring Boot项目搭建4. 热部署5. 依赖管理6. 代码生成器7. 日志8. 日期转换9. 接口文档10. 打包部署11. 自动装配 一、Spring Boot 1. Spring的缺点 在Spring Boot出现以前,使用Spring框架的…

Windows系统的Chkdsk(磁盘修复工具),好用快速的磁盘医生

一款非常具有专业性、权威的工具,可以全面的检测电脑的硬盘坏道,标记出来并且进行及时的修复,它还可以对移动硬盘等进行检测修复。chkdsk还可以支持目前流行的各种系统文件格式,例如:FAT、FAT32、NTFS等。还可以针对坏道磁盘错误进行深度优化,保证电脑磁盘的安全和完整性…

这是聊天阿!this (酸萝卜别吃)doge

1——on——1 chat 服务端 package work; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.ArrayList; import java.util.List;public class UDPServer {private static final int PORT 9876;private static List<ClientInf…

新生报到管理系统

【摘要】 随着我国教育水平的提高和新生数量的增加&#xff0c;合理妥善高效的进行新生接待&#xff0c;不但成为各个学校亟待解决的问题&#xff0c;对于广大新生来说&#xff0c;也是最先让他们了解学校形象的一个好机会。但是许多学校没有采用通过高效的系统来操作解决新生…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后&#xff0c;又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上&#xff0c;星纪魅族集团&#xff08;下称“魅族”&#xff09;董事长兼CEO沈子瑜宣布&#xff0c;魅族正式进入汽车市场&#xff0c;将在2024年第一季度启动“DreamCar共创…

pyqt5+QWebEngineView+pdfjs+win32print实现pdf文件的预览、打印

一、pdf显示逻辑 import sys from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgetsPDFJS = file:///pdfjs-1.9.426-dist/web/viewer.html # PDFJS = file:///usr/share/pdf.js/web/viewer.html PDF = file:///D:/Code/report.pdfclass Window(QtWebEngineWidgets.QWebEng…

大话数据结构-查找-散列表查找(哈希表)

注&#xff1a;本文同步发布于稀土掘金。 8 散列表查找&#xff08;哈希表&#xff09; 8.1 定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f&#xff0c;使得每个关键字key对应一个存储位置f(key)。查找时&#xff0c;根据这个确定的对应关系找到给…

Python Collections库的高级功能详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python的collections库提供了一系列有用的数据类型&#xff0c;扩展了内建的数据类型&#xff0c;为开发者提供了更多高级功能。本文将深入探讨collections库的一些高级功能&#xff0c;通过详细的示例代码演示&…

北森2023半年报洞察:中国HCM SaaS市场的未来,只能是北森

作者 | 曾响铃 文 | 响铃说 中国的HCM SaaS市场处在了一个不尴不尬的状态&#xff0c;尽管前景广阔&#xff0c;但是需求却迟迟未能爆发&#xff0c;整体行业卡在了一个明显的瓶颈期。 其中&#xff0c;又以北森的处境最为典型。 根据IDC发布的《IDC中国人力资本管理&#…

EDW国际数据管理最新趋势(二)|信息供应链与数据

最近Data Fabric、Data Mesh、DataOps等话题非常火。其实&#xff0c;信息供应链谈的也是同样的东西&#xff0c;那就是如何将数据治理与数据集成整合在一起的解决方案。 下图虽然简单但涵盖了非常大的信息量。将4A架构进行了拆解&#xff0c;应用架构与技术架构主要是支撑业务…

AOP记录操作日志

创建数据库表 -- 操作日志 create table operate_log (id int unsigned primary key auto_increment commentid,operate_user int unsigned comment 操作人员Id,operate_time datetime comment 操作时间,class_name varchar(100)comment 操作类,method_name varchar(100)comme…

IDEA 修改encoding

IDEA 修改encoding 现象&#xff1a;idea展示乱码 打开Settings>>File Encodings&#xff0c;修改为UTF-8即可

Kubernetes(K8s)_17_Kubernetes扩展

Kubernetes&#xff08;K8s&#xff09;_17_Kubernetes扩展 Kubernetes扩展CustomResuorceDefinition自定义API ServerOperator Kubernetes扩展 Kubernetes扩展: 不同角度实现对Kubernetes功能的增加/增强 内部组件: API Server、CRD、Operator、授权和准入控制kubelet: CRI、…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

Elasticsearch:什么是机器学习?

机器学习定义 机器学习 (ML) 是人工智能 (AI) 的一个分支&#xff0c;专注于使用数据和算法来模仿人类的学习方式&#xff0c;并随着时间的推移逐渐提高准确性。 计算机科学家和人工智能创新者 Arthur Samuel 在 20 世纪 50 年代首次将其定义为 “赋予计算机无需明确编程即可学…