阿里开源AnyText:可在图像中生成任意精准文本,支持中文!

news2024/11/24 5:04:59

‍随着Midjourney、Stable Difusion等产品的出现,文生图像领域获得了巨大突破。但是想在图像中生成/嵌入精准的文本却比较困难。

经常会出现模糊、莫名其妙或错误的文本,尤其是对中文支持非常差,例如,生成一张印有“2024龙年吉祥”的春联图像,就连著名的文生图模型都很难精准生成。

图片
由著名文生图模型生成:图像还行,提示词根本理解不了嵌入图像中的中文

为了解决这些难题阿里巴巴集团的研究人员开源了,多语言视觉文字生成与编辑模型——AnyText。

根据「AIGC开放社区」的实际使用体验,AnyText对生成文字的把控可媲美专业PS,用户可自定义规划文字出现的位置,图片的强度、力度、种子数等,目前在Github超2,400颗星非常受欢迎。

图片
由AnyText生成,完美理解中文提示词,同时可自定义文字出现的位置

值得一提的是,AnyText能以插件形式与其他开源扩散模型无缝集成,可全面强化其图像嵌入精准文本的能力

开源地址:https://github.com/tyxsspa/AnyText

论文地址:https://arxiv.org/abs/2311.03054

在线demo:https://huggingface.co/spaces/modelscope/AnyText

图片
AnyText测试界面,直观操作简单,可手动调节各种参数

AnyText支持中文、日文、韩文、英语等多种语言,可帮助电商、广告平面设计、电影制作、动画设计师、插画师、网页设计、UI设计师、数字营销等领域的人员,提供高精准、自定义的文生图像服务。

AnyText技术架构

目前,开源的扩散模型在生成的图像中嵌入精准文本表现不佳,**主要有3个原因:****1)**缺乏包含全面文本内容注释的大规模图像和文本配对数据集。现有的大规模图像扩散模型的训练数据集,如LAION-5B,缺乏手动注释或文本内容的OCR结果。

**2)**许多开源扩散模型使用的文本编码器,如CLIP文本编码器,采用基于词汇的分词器,无法直接访问字符级别的信息,导致对个别字符的敏感性降低。

**3)**大多数扩散模型的损失函数旨在提高整体图像生成质量,缺乏对文本区域的专门监督和优化。

针对上述难题,阿里的研究人员开发了AnyText模型和AnyWord-3M数据集。AnyText采用了文本控制的扩散流程,包括两个重要模块:辅助潜变量和文本嵌入

图片

辅助潜变量模块用于生成或编辑文本的潜在特征,作用是接受文本字形、位置和遮罩图像等输入,生成用于文本生成或编辑的潜在特征

这些潜在特征在生成或编辑文本时起到辅助作用,帮助确保文本的准确性和一致性。

辅助潜变量使得AnyText能够在图像中,生成或编辑曲线或不规则区域的文本。这也就是说,即便想生成弯曲、不规则的字体也没问题!

图片

文本嵌入模块利用OCR模型将笔画数据编码为嵌入向量,并与标记器生成的图像标题嵌入向量进行融合,从而生成与背景无缝融合的文本。

为了提高书写准确性,研究团队采用了文本控制的扩散损失和文本感知损失进行训练。

提升图像嵌入文本精准度

为了进一步提高生成文本的准确性,AnyText采用了文本控制扩散损失和文本感知损失进行训练。

文本控制扩散损失,用于控制生成的文本在指定位置和样式上的准确性。它通过比较生成文本与目标文本之间的差异,促使模型生成更准确、一致的文本。

文本感知损失,作用是进一步增强生成文本的准确性。它通过比较生成文本的特征表示与真实图像中相应区域的特征表示之间的差异,来衡量生成文本在视觉上的准确性。

AnyWord-3M数据集

这个数据集是提升AnyText文本能力的重要部分,一共包含了300万个图像-文本对,并提供了多种语言的OCR(光学字符识别)注释。

图片

AnyWord-3M中出现的文本行超过900万行,字符和词汇数总量超过2亿。文本涵盖中文、英文、日文、韩文等语言。这是目前公开的规模最大,也是第一个专门用于文本生成任务的多语种数据集

图片

**主要包含的数据集:**悟空数据集的中文部分,这是哩哩哩实验室构建的数亿级中文跨模态数据集。AnyWord-3M从中筛选出约154万张图像。

图片

LAION数据集的英文部分,由斯坦福大学等构建的大规模英文图像文字匹配数据集, AnyWord-3M选择了其中约140万张图像。

多个OCR识别数据集,包括文字定位和识别领域的标准数据集ArT、COCO-Text、RCTW等,提供了约10万张带标注的文本图像。

在获取这些源数据之后,AnyText研究人员还设计了严格的过滤规则,对图像和文本行进行过滤,确保训练数据的质量。

图片

文本行过滤的规则非常细致,例如,文本行高最小30像素、文本识别置信度超过0.7等。

所以,AnyWord-3M吸取了多个数据集的精华中的精华,也是AnyText能力非常强悍的重要原因之一。

技术交流

技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。

建立了大模型技术交流群,大模型学习资料、数据代码、技术交流提升, 均可加知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:mlc2060,备注:技术交流
方式②、微信搜索公众号:机器学习社区,后台回复:技术交流

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析基础之《pandas(1)—pandas介绍》

一、pandas介绍 1、2008年Wes McKinney(韦斯麦金尼)开发出的库 2、专门用于数据分析的开源python库 3、以numpy为基础,借力numpy模块在计算方面性能高的优势 4、基于matplotlib能够简便的画图 5、独特的数据结构 6、也是三个单词组合而…

2024年数学建模美赛能用chatGPT之类的AI吗?官方给了明确规定!

这两年chatGPT等大语言模型火了,能对话,自然也能回答数学建模方面的问题。 那美赛能不能用这些AI呢?2024年美赛官方对chatGPT等的使用做出了明确的规定(其中的VI. Contest Instructions部分): https://ww…

《2024 AIGC 应用层十大趋势白皮书》:近屿智能OJAC带您一起探索AI未来

Look!👀我们的大模型商业化落地产品📖更多AI资讯请👉🏾关注Free三天集训营助教在线为您火热答疑👩🏼‍🏫 近日国际知名咨询机构IDC发布《2024 AIGC 应用层十大趋势白皮书》的发布&am…

水文模型(科普类)

SWMM 模型概况: SWMM5 系列拥有编辑区域数据的功能,而且能模拟水文、 水力和水质。其核心部分是管道汇流计算模块,提供了恒定流法、运动波法和动力波法三种水动力学 方法。其中动力波法通过求解完整的圣维南方 程组进行计算,能够…

WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏

在WPF应用程序开发中,自定义一个漂亮的顶部工具栏具有多重关键作用,它不仅增强了用户体验,还提升了整体应用的专业性和易用性。以下是对这一功能的详细介绍: 首先,自定义顶部工具栏是用户界面设计的重要组成部分&…

508基于51单片机的火灾检测与报警系统设计

基于51单片机的火灾检测与报警系统设计[proteus仿真] 火灾检测与报警系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的火灾检测与报警系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 …

BigDecimal的性能问题

BigDecimal 是 Java 中用于精确计算的数字类,它可以处理任意精度的小数运算。由于其精确性和灵活性,BigDecimal 在某些场景下可能会带来性能问题。 BigDecimal的性能问题 BigDecimal的性能问题主要源于以下几点: 内存占用:BigDec…

华为OD机试 - 反射计数(Java JS Python C)

题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面发射。 无论物体经过 0 还是 1,都不影响其速度。 请计算并给出经过 t 时间单位后,物体经过 1 点的次数。 矩阵以左…

国产编程语言炫彩,界面库ui dll,有人了解吗

中文编程: 中英文双语编程, 中英一键切换, 中英对照, 中文为主, UNICODE/ANSI编码都支持; 完全免费: 炫语言免费, 调试器免费, IDE绿色版无需安装; 纯文本: 纯文本格式代码, 随意复制粘贴, GIT代码托管, 多人合作开发; PY风格: PY风格代码, 通过代码缩进确定作用域 非 大花括…

B+树索引及其原理

MySQL索引的底层结构是B树,为什么它会选择这个结构?联合索引是怎么实现的?最左侧匹配原则的原理是什么?本文将一一解答这些疑惑。 1 前置知识 在学习B树之前,我们先了解下其他的树形结构:二叉树、平衡二叉…

C++中的返回值优化(RVO)

一、命名返回值优化(NRVO) 是Visual C2005及之后版本支持的优化。 具体来说,就是一个函数的返回值如果是一个对象。那么,正常的返回语句的执行过程是,把这个对象从当前函数的局部作用域,或者叫当前函数的…

vue+element弹窗内---下拉框定位问题解决(方法之一)

问题: 加了 :popper-append-to-body"false" 这个属性也不好用时 可以试试这个 解决: 第一步: 找到el-select标签添加(popper-class"popperClass")属性-----如下图 第二步:在css中添加如下代码即可 ::v-deep .popperClass{ top:auto !important; }

Java学习苦旅(二十二)——MapSet

本篇博客将详细讲解Map和Set。 文章目录 搜索概念模型 MapMap.Entry<K, V>Map的常用方法说明TreeMap和HashMap的区别 Set常用方法说明TreeSet和HashSet的区别 结尾 搜索 概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例…

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…

Socks5代理ip和Https代理ip的区别,该如何选择?

Socks5代理和HTTPS代理都是计算机网络中的代理服务器&#xff0c;它们可以用于在客户端和其他服务器之间建立连接并充当中间人。 两种代理类型都有其优缺点和适用场景。 一、什么是Socks5代理 Socks5代理Socks5代理是一个网络协议&#xff0c;通过该协议可以建立TCP和UDP连接…

RDD算子——转换操作(Transformations )【map、flatMap、reduceByKey】

一、map map 算子 # spark-shell sc.parallelize(Seq(1, 2, 3)).map( num > num * 10).collect()# IDEA Test def mapTest(): Unit {// 1. 创建RDDval rdd1 sc.parallelize(Seq(1, 2, 3))// 2. 执行 map 操作val rdd2 rdd1.map(item > item * 10)// 3. 得到结果val re…

在Kubernetes中优雅地导出和清理Ingress资源

引言 Kubernetes的Ingress资源是定义外部访问集群服务的规则。随着微服务架构和容器化技术的普及&#xff0c;Ingress作为路由流量的关键组件变得愈发重要。当我们需要在环境之间迁移Ingress资源或者备份当前的配置时&#xff0c;就会用到导出功能。然而&#xff0c;直接使用k…

已解决 ValueError: Setting an array element with a sequence. 问题

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

Mac 环境多JDK安装与切换

一、下载jdk 去Oracle官网上下载想要安装的jdk版本&#xff0c;M芯片选择arm架构的.bmg格式的文件。 https://www.oracle.com/java/technologies/downloads/。 二、安装jdk 2.1 双击下载的文件&#xff0c;安装步骤一步步点继续就好。 2.2 安装完成后会在/Library/Java/JavaV…

Java网络爬虫--概述与原理

目录标题 基本概念与原理爬虫与搜索系统的关系爬虫运行原理爬虫步骤DNS域名解析 爬虫开发本质网络爬虫的分类通用网络爬虫聚集网络爬虫增量式网络爬虫Deep Web爬虫 参考文献 基本概念与原理 爬虫又叫网络蜘蛛&#xff0c;一种运行在互联网上用来获取数据的自动程序。 互联网的…