如何使用AI编辑图像中的文本

2024年03月15日 由 alex 发表 392 0

简介

自动更新图像中文本的任务正式称为场景文本编辑(STE)。本文介绍了 STE 模型架构如何随着时间的推移而演变以及它们所释放的功能。我们还将讨论它们的局限性和仍有待完成的工作。事先熟悉GAN和扩散模型会有所帮助,但并非绝对必要。


3


场景文本编辑任务(STE)


定义

场景文本编辑(STE)是指自动修改捕捉视觉场景的图像(而不是主要包含文本的图像,如扫描文件)中的文本。其目的是在保留原始美感(排版、书法、背景等)的前提下修改文本,而无需花费昂贵的人力。


使用案例

场景文本编辑看似是一项矫揉造作的任务,但实际上它有多种实际用途:


(1) 为场景文本识别(STR)生成合成数据


4


当我开始研究这项任务时,我惊讶地发现阿里巴巴(电子商务平台)和百度(搜索引擎)一直在发布有关 STE 的研究。


至少就阿里巴巴而言,他们的研究很可能是为了支持 AMAP,即谷歌地图的替代品。为了绘制世界地图,你需要一个强大的文本识别系统,它能在各种真实世界条件下(如遮挡或几何扭曲)读取各种字体的交通和街道标志,并可能使用多种语言。


为了建立场景文本识别的训练集,我们可以收集真实世界的数据,并由人类进行注释。但这种方法受到人力的限制,可能无法保证足够的数据多样性。相反,合成数据的生成可以提供几乎无限的、带有自动标签的多样化数据源。


(2) 控制AI生成的图像


5


Midjourney、Stability 和 Leonardo 等人工智能图像生成器实现了视觉资产创建的民主化。小企业主和社交媒体营销人员现在无需艺术家或设计师的帮助,只需输入文字提示即可创建图像。然而,文本到图像的模式缺乏可控性,无法满足概念艺术之外的实用资产--活动海报、广告或社交媒体帖子--的需要。


这类资产通常需要包含文本信息(日期和时间、联系方式或公司名称)。对于文本到图像模型来说,拼写正确历来是个难题,尽管最近有了一些进展--DeepFloyd IF、Midjourney v6。但即使这些模型最终学会了完美拼写,文本到图像界面的用户体验限制依然存在。用文字描述在哪里以及如何放置一段文字是非常乏味的。


(3) 视觉媒体的自动本地化


电影和游戏通常会针对不同地域进行本地化。有时可能需要将西兰花换成青椒,但大多数情况下需要翻译屏幕上可见的文字。随着电影和游戏行业其他方面的自动化(如配音和唇语同步),可视化文本编辑没有理由继续使用人工操作。


架构时间表:从 GAN 到 Diffusion

用于场景文本编辑的训练技术和模型架构在很大程度上追随了图像生成这一更大任务的发展趋势。


GAN 时代(2019-2021 年)

GAN(生成对抗网络)在 2010 年代中期主导了图像生成任务。GAN 指的是一种具有对抗性质的特定训练框架(而不是规定模型架构)。训练生成器模型是为了捕捉数据分布(从而具备生成新数据的能力),而训练判别器则是为了将生成器的输出与真实数据区分开来。当判别器的猜测结果与随机掷硬币的结果一样好时,训练过程就结束了。在推理过程中,判别器将被丢弃。


GAN 特别适合图像生成,因为它们可以执行无监督学习,即无需标记数据即可学习数据分布。根据图像生成的总体趋势,最初的场景文本编辑模型也采用了 GAN。


GAN 时代 #1:字符级编辑 - STEFANN

STEFANN 被认为是第一个在场景图像中修改文本的作品,它在字符级别上进行操作。字符编辑问题分为两个:字体适应和颜色适应。


6


STEFANN 是公认的第一项修改场景图像中文本的工作。它以之前在字体合成(创建与输入数据中的字体或文本样式非常相似的新字体或文本样式的任务)领域的工作为基础,并增加了一个约束条件,即输出结果需要与原始图像无缝融合。与之前的工作相比,STEFANN 采用了纯粹的机器学习方法(与明确的几何建模等方法相反),不依赖字符识别来标注源字符。


STEFANN 模型架构基于 CNN(卷积神经网络),并将问题分解为:(1) 通过 FANnet 进行字体适配--将源字符的二进制化版本转化为二进制化的目标字符;(2) 通过 Colornet 进行颜色适配--对 FANnet 的输出进行着色,使其与图像中的其他文本相匹配;(3) 字符放置--使用先前建立的技术(如内绘和接缝雕刻)将目标字符重新融合到原始图像中。前两个模块采用 GAN 目标进行训练。


虽然 STEFANN 为场景文本编辑铺平了道路,但它在实际应用中也有诸多限制。它一次只能对一个字符进行操作;更改整个单词需要多次调用(每个字母一次),并限制目标单词与源单词具有相同的长度。此外,步骤 (3) 中的字符位置算法假定字符不重叠。


GAN 时代 2:词级编辑--SRNet 和 3 模块网络

SRNet 是第一个在单词级执行场景文本编辑的模型。SRNet 将 STE 任务分解为三个(联合训练的)模块:文本转换、背景内绘和融合。


7


SRNet 是第一个在单词级别进行场景文本编辑的模型。SRNet 将 STE 任务分解为三个(联合训练的)模块:


  1. 文本转换模块(蓝色)对目标文本(上图中的 "barbarous")进行编程渲染,目的是在纯色背景上以与输入词("introduce")相同的字体进行渲染。
  2. 背景内绘模块(绿色)会擦除输入图像中的文字,并填补空白以重建原始背景。
  3. 融合模块(橙色)将渲染的目标文本粘贴到背景上。


SRNet 架构。所有三个模块都是全卷积网络(FCN),其中背景内绘模块尤其类似 U-Net(一种 FCN,具有编码器层与相同大小的解码器层跳接的特性)。


SRNet 训练。每个模块都有自己的损失,网络根据损失总和(LT + LB + LF)进行联合训练,其中后两者通过 GAN 训练。虽然这种模块化方法在概念上非常优雅,但其缺点是需要成对的训练数据,并对每个中间步骤进行监督。实际上,这只能通过人工数据来实现。对于每个数据点,我们需要随机选择一张图片(从 COCO 这样的数据集中),从字典中任意选择两个单词,然后用任意一种字体渲染,以模拟 "之前 "和 "之后 "的图片。因此,训练集不包括任何逼真的例子(尽管它可以在一定程度上超越渲染字体)。


荣誉奖。SwapText 采用了与场景文本编辑相同的基于 GAN 的 3 模块网络方法,并对文本转换模块提出了改进建议。


GAN 时代 #3:自监督和混合网络

向无监督学习的飞跃。STE 研究的下一个飞跃是采用自监督训练方法,即在无配对数据(即包含文本的纯图像库)上训练模型。要做到这一点,就必须去除与标签相关的中间损失 LT 和 LB。由于 GAN的设计,剩下的最终损失也不需要标签;模型只需根据判别器区分真实图像和生成器生成的图像的能力进行训练即可。TextStyleBrush 率先为 STE 提供了自监督训练,而 RewriteNet 和 MOSTEL 则通过两个阶段的训练做到了两全其美:一个阶段是监督训练(优势:大量的合成标签数据),另一个阶段是自监督训练(优势:真实的自然非标签数据)。


区分文本内容和风格。为了消除中间损失,TextStyleBrush 和 RewriteNet 将问题重构为文本内容与文本风格的分离。重申一下,STE 系统的输入是:(a) 包含原始文本的图像;(b) 所需的文本--更具体地说,是在白色或灰色背景上使用固定字体(如 Arial)的所需文本的程序渲染。我们的目标是将 (a) 中的样式与 (b) 中的内容结合起来。换句话说,我们的目标是摒弃 (a) 中的内容和 (b) 中的样式。这就是为什么有必要将给定图像中的文本内容与样式分离开来的原因。


8


TextStyleBrush 以及为什么 GAN 会过时。虽然将文本内容与风格分离的想法简单明了,但在实践中却需要复杂的架构才能实现。TextStyleBrush 是这类论文中最著名的一篇,它使用了不少于七个联合训练的子网络、一个预训练的字体分类器、一个预训练的 OCR 模型和多重损失。设计这样一个系统的成本肯定不菲,因为所有这些组件都需要进行消融研究才能确定其效果。再加上 GANs 众所周知难以训练(理论上,生成器和判别器需要达到纳什平衡),一旦证明扩散模型非常适合图像生成,STE 的研究人员便迫不及待地转而使用扩散模型。


扩散时代(2022 年至今)

2022 年初,图像生成领域从 GAN 转向 Latent Diffusion Models(LDM)。在此,我将重点介绍 LDM 架构中与场景文本编辑任务最相关的部分。


9


如上所述,基于 LDM 的文本到图像模型有三个主要组成部分: (1) 文本编码器--通常是 CLIP;(2) 实际扩散模块--将文本嵌入转换为潜空间中的图像嵌入;(3) 图像解码器--将潜图像放大为完全大小的图像。


将场景文本编辑作为扩散涂色任务

文本到图像并不是扩散模型所支持的唯一模式。毕竟,CLIP 既是文本编码器,也是图像编码器,因此传递给图像信息创建模块的嵌入也可以对图像进行编码。事实上,它可以对任何模式进行编码,也可以对多个输入的串联进行编码。


这就是 "内绘"(inpainting)背后的原理。"内绘 "的任务是根据给定的指令,仅修改输入图像的一个子区域,使其看起来与图像的其他部分保持一致。图像信息创建者接收一个编码,该编码捕获了输入图像、要内绘区域的遮罩和文本指令。


场景文本编辑可被视为内绘的一种特殊形式。大多数 STE 研究都归结为以下问题: 如何利用任务的附加信息(即原始图像、所需文本及其位置等)来增强文本嵌入?从形式上讲,这就是所谓的条件引导。


位置引导

显然,需要有一种方法来指定对原始图像进行修改的位置。这可以是一个文本指令(如 "更改底部的标题"),也可以是文本行的细粒度指示,还可以是每个目标字符的更细粒度的位置信息。


通过图像掩码进行位置引导。指示所需文本位置的一种方法是通过灰度遮罩图像,然后通过 CLIP 或其他图像编码器将其编码到潜空间。例如,DiffUTE 模型只需使用带有白色条纹的黑色图像来指示所需的文本位置。


10


TextDiffuser 可生成字符级的分割掩码:首先,它会将所需的文本大致渲染到正确的位置(在白色图像上使用 Arial 字体的黑色文本),然后将该渲染通过分割器,以获得带有每个字符单独边界框的灰度图像。分割器是一个 U-Net 模型,与主网络分开,在 400 万个合成实例上进行训练。


11


通过语言建模进行位置引导。在《视觉任务的统一序列推理》中,作者展示了大型语言模型(LLM)可以通过简单地生成数字标记来作为图像中物体位置的有效描述符。可以说,这是一个不直观的发现。因为 LLM是基于统计频率(即通过观察标记在同一上下文中出现的频率)来学习语言的,因此期望它们生成正确的数字标记感觉并不现实。但是,目前大规模的 LLM 经常会打破我们的期望。


TextDiffuser 2 以一种有趣的方式利用了这一发现。如下图所示,他们在<文本、OCR 检测>对的合成语料库上对 LLM 进行了微调,教它生成文本边界框的左上角和右下角坐标。值得注意的是,他们决定为文本行(而不是字符)生成边界框,从而为图像生成器提供了更大的灵活性。他们还进行了一项有趣的消融研究,使用单点来编码文本位置(框的左上角或中心),但观察到拼写性能较差--当没有明确告知文本应该在哪里结束时,模型经常会幻化出额外的字符。


12


字形引导

除了位置外,图像生成器还可以输入另一条信息,即字符的形状。有人可能会说,形状信息是多余的。毕竟,当我们提示文本到图像模型生成一只火烈鸟时,我们一般不需要传递任何关于火烈鸟长腿或羽毛颜色的额外信息--模型大概已经从训练数据中学习到了这些细节。然而,在实践中,训练集(如 Stable Diffusion 的 LAION-5B)以自然图片为主,其中文字的比例较低(非拉丁字母的比例更高)。


多项研究(DiffUTE、GlyphControl、GlyphDraw、GlyphDiffusion、AnyText 等)试图通过明确的字形引导来弥补这种不平衡,即使用标准字体以编程方式有效渲染字形,然后将渲染编码传递给图像生成器。有的只是将字形置于附加图像的中心,有的则靠近目标位置(让人想起 ControlNet)。


通过扩散实现 STE(仍然)复杂

虽然扩散模型的训练过程比 GAN 更加稳定,但特别是 STE 的扩散架构仍然相当复杂。下图显示的是 AnyText 架构,其中包括:(1) 辅助潜在模块(包括上文讨论的位置和字形引导);(2) 文本嵌入模块,除其他组件外,该模块还需要训练好的 OCR 模块;(3) 用于生成图像的标准扩散管道。很难说这在概念上比基于 GAN 的 TextStyleBrush 简单得多。


13


当现状过于复杂时,我们就会自然而然地不断研究,直到找到一个简洁的解决方案。在某种程度上,这就是自然语言处理领域的现状:计算语言学理论、语法、依存解析--所有这些都归结到变形器之下,而变形器的表述非常简单:一个标记的含义取决于它周围的所有其他标记。显然,场景文本编辑与这种清晰性相去甚远。架构包含许多联合训练的子网络、预训练的组件,并且需要特定的训练数据。


有了适当数量和质量的训练数据,文本到图像模型在文本生成的某些方面(拼写、字体多样性和字符的清晰度)必然会变得更好。但在更长的时间内,可控性仍将是一个问题。即使模型最终学会了完全按照你的指示进行操作,文本到图像的范例可能仍然是一种不合格的用户体验--你是愿意详细描述一段文字的位置、外观和感觉,还是愿意只画一个近似的方框,然后从颜色选择器中选择一种灵感颜色?


文章来源:https://medium.com/towards-data-science/editing-text-in-images-with-ai-03dee75d8b9c
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消