AnyText是什么
AnyText是阿里巴巴智能计算研究院的团队推出的一个基于扩散的多语言视觉文本生成和编辑模型,专注于在图像中渲染准确和连贯的文本。AnyText包括两个主要元素的扩散管线:辅助潜在模块和文本嵌入模块。前者使用文本字形、位置和蒙版图像等输入来生成文本生成或编辑的潜在特征。后者采用OCR模型对笔划数据进行编码,这些编码与来自分词器的图像标题嵌入结合,生成与背景无缝融合的文本。该技术解决了在生成图像中的文本区域时合成文本模糊、不可读或错误的挑战,提高了图像中文本书写的准确性。
GitHub项目:https://github.com/tyxsspa/AnyText
论文地址:https://arxiv.org/abs/2311.03054
ModelScope:https://modelscope.cn/studios/damo/studio_anytext
Hugging Face:https://huggingface.co/spaces/modelscope/AnyText
AnyText的功能特色
- 多语言支持:AnyText能够生成多种语言的文本,包括中文、英文、日文、韩文等。
- 多行文本生成:用户可以指定在图像的多个位置生成文本。
- 变形区域书写:AnyText能够生成水平、垂直甚至曲线或不规则区域内的文本。
- 文本编辑能力:AnyText提供了修改图像中指定位置文本内容的功能,同时保持与周围文本风格的一致性。
- 即插即用:AnyText可以无缝集成到现有的扩散模型中,提供生成文本的能力。
AnyText的工作原理
AnyText通过以下模块的协同工作,AnyText能够在图像中准确地生成和编辑多语言文本,同时保持与背景的无缝融合,具体如下:
- 文本控制扩散管道:
- AnyText使用变分自编码器(VAE)对输入图像进行编码,生成一个潜在表示。
- 然后,通过扩散算法逐步向这个潜在表示中添加噪声,生成一系列时间步骤的噪声潜在图像。
- 在每个时间步骤,AnyText应用一个网络(TextControlNet)来预测应该添加到噪声潜在图像上的噪声,以控制文本的生成。
- 辅助潜在模块:
- 该模块接收文本字形(glyph)、位置(position)和蒙版图像(masked image)作为输入,生成一个辅助潜在特征图。
- 字形信息通过渲染文本到图像上生成,位置信息标记文本在图像中的位置,掩膜图像指示在扩散过程中应保留的图像区域。
- 文本嵌入模块:
- 该模块使用预训练的OCR模型(如PP-OCRv3)来提取文本的笔画信息,并将其编码为嵌入。
- 这些嵌入与来自分词器的图像标题嵌入结合,生成一个融合的中间表示,然后通过交叉注意力机制映射到UNet的中间层。
- 文本感知损失:
- 在训练过程中,AnyText使用文本感知损失来进一步提高文本生成的准确性。
- 这种损失通过比较生成图像和原始图像中的文本区域来实现,只关注文本本身的正确性,排除背景、字符位置偏差、颜色或字体样式等因素。
- 训练和优化:
- AnyText的训练目标是最小化文本控制扩散损失和文本感知损失的加权和。
- 在训练过程中,模型通过调整权重比(λ)来平衡这两种损失。
如何使用AnyText生成文字
- 访问AnyText的ModelScope空间或Hugging Face demo
- 输入Prompt提示词,然后选择指定文字位置
- 最后点击Run运行,等待图片和文字生成即可
© 版权声明
文章版权归作者所有,未经允许请勿转载。