当前位置: 首页 > news >正文

【论文精读】TextDiffuser-2:释放语言模型用于文本渲染的力量

文章目录

  • 一、前言
  • 二、摘要
  • 三、方法
    • (一)TextDiffuser-2模型的整体架构
    • (二)语言模型M1将用户提示转换为语言格式的布局
    • (三)将提示和布局结合到扩散模型内的可训练语言模型M2中进行编码以生成图像
  • 四、实验
    • (一)实施细节
    • (二)消融研究
    • (三)实验结果
    • (四)TextDiffuser-2 的其他应用
    • (五)讨论


一、前言

TextDiffuser-2 生成的文本到图像:

  • 实现准确的文本生成工作
  • 保证图片中文本布局的合理性
  • 在强大的语言模型能力的支持下展现出文本风格的多样性
    在这里插入图片描述
    TextDiffuser-2继承并优化了其前身TextDiffuser的核心特性,主要创新在于其对语言模型的应用。

二、摘要

现有文本渲染方法的一些缺点:

  1. 灵活性和自动化程度有限:
    • GlyphControl需要用户设计字形图像来提供布局指导;
    • GlyphDraw和TextDiffuser依赖于手动指定关键字。
  2. 布局预测能力有限:
    • GlyphDraw只能渲染单行文本的图像,限制了其对多行文本场景的适用性;
    • TextDiffuser 生成的文本布局在视觉上并不吸引人,这主要归因于布局转换器的能力有限。
  3. 限制样式多样性:
    • TextDiffuser利用字符级分割掩码作为控制信号隐式地对每个字符的位置施加了约束,从而限制了文本样式的多样性,并在渲染手写或艺术字体时带来了挑战。
  4. 没有开源代码:现有方法可能不提供可用的代码、API 或演示。

TextDiffuser-2旨在释放语言模型用于文本渲染的力量:

  • 微调用于布局规划的大型语言模型

    1. 将用户提示转换为布局:MARIO-10M数据集中的标题-OCR对
    2. 确定位置:从用户提示中推断关键字或合并用户指定的关键字
    3. 修改布局:通过聊天,用户可以引导语言模型改变布局,例如重新生成、添加或移动关键字。
  • 利用扩散模型中的语言模型对行级别的位置和文本进行编码

    • 与之前采用严格字符级指导的方法不同,这种方法生成更加多样化的文本图像。

文章利用了两种语言模型进行文本渲染,一种用于布局规划的语言模型和另一种用于布局编码的语言模型。

效果评估:
通过人类参与者和 GPT-4V 参与的综合实验和用户研究,验证了 TextDiffuser-2 可以生成合理且视觉上令人愉悦的文本布局,并且增强了生成文本的风格多样性。

三、方法

(一)TextDiffuser-2模型的整体架构

语言模型M1和扩散模型分两个阶段进行训练:

在这里插入图片描述

(二)语言模型M1将用户提示转换为语言格式的布局

  • 输入:[description] Prompt: [prompt] Keywords: [keywords],其中keywords可选,如果用户没有明确提供关键字,语言模型应该推断要在图像上绘制的文本和布局,如果用户提供关键词(用灰色标记),语言模型只需要确定关键词对应的布局即可;
  • 输出:textline x0, y0, x1, y1,其中(x0, y0)和(x1, y1)分别代表左上角和右下角的坐标
  • 损失函数:交叉熵损失

(三)将提示和布局结合到扩散模型内的可训练语言模型M2中进行编码以生成图像

  • 损失函数:去噪L2损失
  • 混合粒度的分词方法:一方面,保持原始的BPE分词方法用于处理提示,另一方面,引入了新的字符token,并将每个关键词分解为字符级表示,并且还引入了新的坐标token来编码位置。

四、实验

(一)实施细节

布局规划:基于 FastChat 框架微调 vicuna-7b-v1.5模型。
布局编码:利用 SD 1.5并使用具有基本尺寸的内置 CLIP 文本编码器。

(二)消融研究

关于微调数据量的消融研究:
使用准确度、精确度、召回率和 F 度量来评估模型提取关键词的能力,并引入了一种 IoU 度量来测量每个样本生成的框之间的最大 IoU 值。实验结果表明,当使用 5k 数据进行微调时,该模型在大多数指标中实现了最佳性能。
在这里插入图片描述

关于坐标表示和标记化级别的消融研究:

  • 坐标表示:使用单点表示文本行提供了更大的灵活性,使生成的文本能够在角度和大小方面表现出更大的多样性。然而,当使用MARIO-Eval 基准进行评估时,利用左上角和右下角来表示文本行的方法评估效果要更好。
  • 标记化级别:使用子字级标记化的性能明显低于字符级表示,当使用子词级标记化时,模型对每个标记的拼写变得不敏感,这给文本渲染过程带来了重大挑战。

在这里插入图片描述

(三)实验结果

在MARIO-Eval基准上进行定量实验: TextDiffuser-2在多数评估指标上均展现出优异的性能。
在这里插入图片描述

将文本到图像的结果可视化: 与现有方法相比,TextDiffuser-2可以自动从提示中提取关键字以进行准确渲染。此外,TextDiffuser-2 生成的字体表现出广泛的多样性。

在这里插入图片描述
采用GPT-4V进行用户评测:根据用户反馈,GPT-4V对TextDiffuser-2生成的图像进行了评估,结果表明其具有优异的识图识字能力,并总结的理由合理。
在这里插入图片描述

(四)TextDiffuser-2 的其他应用

  1. 使用模板生成文本到图像: 当提供模板图像(例如打印的、手写的或场景文本图像)时,TextDiffuser-2可以用现有的OCR工具提取文本信息并将其作为条件直接输入到扩散模型中,从而无需进行布局预测语言模型M1。
    在这里插入图片描述
  2. 文本修复任务: 与 TextDiffuser 比较,TextDiffuser-2 可以生成更连贯的文本。
    在这里插入图片描述
  3. 无需文本的自然图像生成: 通过省略文本位置和内容引导,​​TextDiffuser-2 可以生成没有文本的图像。
    在这里插入图片描述

(五)讨论

通过多轮聊天进行操作布局

在这里插入图片描述

重叠布局: TextDiffuser-2 对重叠框表现出更大的鲁棒性。相反,其他两种方法生成的结果会产生乱码文本,从而影响图像的整体质量。
在这里插入图片描述

相关文章:

  • 解决前端性能问题:如何优化大量数据渲染和复杂交互?
  • Linux操作系统的vim常用命令和vim 键盘图
  • 并发编程中常见的设计模式,c++多线程如何设计
  • 微服务间通信重构与服务治理笔记
  • [Python人工智能] 四十二.命名实体识别 (3)基于Bert+BiLSTM-CRF的中文实体识别万字详解(异常解决中)
  • 探索程序员职业迷宫:选择适合自己的职业赛道
  • 【论文阅读】Mamba:选择状态空间模型的线性时间序列建模(二)
  • FFmpeg【SDK02】关于AVIO的一些使用
  • Jenkins设置使用163邮箱发送邮件
  • html基本标签
  • 【力扣经典面试题】14. 最长公共前缀
  • 【JavaEE】_Spring MVC项目使用数组与集合传参
  • 模拟退火算法(带你了解原理 实践)
  • 【ELK日志分析系统】ELK+Filebeat分布式日志管理平台部署
  • Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)
  • 2017届校招提前批面试回顾
  • 30秒的PHP代码片段(1)数组 - Array
  • jdbc就是这么简单
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • ReactNativeweexDeviceOne对比
  • Spring声明式事务管理之一:五大属性分析
  • windows下使用nginx调试简介
  • - 概述 - 《设计模式(极简c++版)》
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端性能优化--懒加载和预加载
  • 如何设计一个比特币钱包服务
  • 消息队列系列二(IOT中消息队列的应用)
  • 一个JAVA程序员成长之路分享
  • 一个完整Java Web项目背后的密码
  • Spring第一个helloWorld
  • 说说我为什么看好Spring Cloud Alibaba
  • ​2021半年盘点,不想你错过的重磅新书
  • (2)STL算法之元素计数
  • (33)STM32——485实验笔记
  • (C)一些题4
  • (C语言)逆序输出字符串
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (规划)24届春招和25届暑假实习路线准备规划
  • (六)vue-router+UI组件库
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • ... 是什么 ?... 有什么用处?
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Core 版本不支持的问题
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net mvc总结
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net6Api后台+uniapp导出Excel
  • .Net下的签名与混淆
  • .NET中使用Protobuffer 实现序列化和反序列化
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [51nod1610]路径计数
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现