首页 > 其他分享 >[论文速览] Handwritten Text Generation from Visual Archetypes

[论文速览] Handwritten Text Generation from Visual Archetypes

时间:2023-09-28 13:12:34浏览次数:38  
标签:字符 训练 Archetypes Generation Text 生成 风格 mathcal 图片

Pre

title: Handwritten Text Generation from Visual Archetypes
accepted: CVPR 2023
paper: https://arxiv.org/abs/2303.15269
code: https://github.com/aimagelab/VATr

关键词: few-shot, styled handwritten text generation (HTG), Transformer, cross-attentions
阅读理由: 没有更好的,随便看看

Idea

有点风格转换的感觉,输入文本(英文句子),然后利用字体渲染出图片作为内容编码,另一方面结合风格图片编出的特征,用Transformer解码出目标风格的文本

Motivation&Solution

  1. 生成模型能够模仿风格,但无视了罕见词的泛化 —— 为内容和风格设计了更加鲁棒的表示
  2. 字符one-shot编码不利于泛化

Background

Styled handwritten text generation (HTG) 是一个新兴研究领域,致力于合成模仿特定书写者风格的手写文本图片

实际应用从高质量 personalized Handwritten Text Recognition (HTR) 训练数据合成到为残疾人自动生成手写笔记(后天残疾想写出原本的字??)。

模仿书写风格不仅要纹理、笔画粗细,倾斜,扭曲,圆润与否,还得考虑字符形状等。HTG的方法按处理对象可分为 1.底层笔画组成的轨迹 2.图片。前一种是在线HTG,后一种则是离线HTG模型。本文为后一种,因为不需要 pen-recording 训练数据

图1 不同于之前的SOTA(HWT),这里用视觉原型,借助原型间的相似度,可以生成常见和不常见(红色)的字符。

之前的一些方法将文本内容的编码初始化为 one-hot 向量,每个都表示固定字符集里的不同字符,这样所有字符都是独立的,无法共享存在的一些几何或视觉相似的信息,对于长尾分布的字符来说会存在质量gap。

Method(Model)

Overview

图2 VATr总览。少量参考图片先扔进预训练过的CNN,输出再给Transformer,得到鲁棒的风格向量。要生成的文本先渲染为 GNU Unifont 二元图片(16x16),表示这些字符的视觉原型,它们充当Transformer解码器的query,与风格向量进行交叉注意力运算。然后内容风格表达被喂入卷积解码器,然后输出风格化的手写文本图片。图中左边的$\mathcal{E}$是风格编码器,右边的$\mathcal{D}$是内容引导编码器。

从标准 GNU 统一字形编写的符号图像中获得密集矢量序列,将其作为一种文本的新表示,可看作其视觉原型(visual archetypes)。该策略适合生成训练时低频的字符,它们可能与高频词共享有一些视觉细节。风格方面通过在大型合成数据集上进行特定于训练来获取更鲁棒的未知风格表达(unseen writers’ calligraphy)

Style Encoder

卷积编码器backbone用的ResNet18,(维度操作、架构等实现细节)

预训练用一些字体渲染一些英文单词,然后加上纸一样质感的背景,有大于100M个样本,加点随机变换。

Content-Guided Decoder

用 GNU Unifont 渲染,因为该字体含有所有unicode字符,得到16x16的字符图片,然后拉平为向量,再投影到d维做query,类似ViT

图3 第一行是 unifont 字符,后面的都是其他风格的手写字符,字符间的几何相似性由视觉原型所捕捉,然后用于生成。

图3所示的相似性可以用于生成长尾字符,作者说数据量还得大

Transformer解码器输出加点高斯噪声,增强生成图片的多样性

Model Training

对抗损失:

\[L_{a d v}=\mathbb{E}\left[\max(1-\mathcal{D}_{\eta}(\mathbf{X}_{\mathbf{w}}),0)\right]+ \mathbb{E}\left[\max(1+\mathcal{D}_{\eta}(\mathcal G_{\theta}({\bf X}_{\mathrm{w}},{\bf C})),0)\right]. \]

用HTR模型\(\mathcal{R}_{\phi}\)来识别生成图片里的文本,用gt数据训练,损失如下:

\[L_{H T R}=\mathbb{E}_{\mathbf{x}}\left[-\sum\log(p(t_{\mathbf{x}}|\mathcal{R}_{\phi}(\mathbf{x})))\right], \]

x可以是真实的或生成图片,\(t_x\)是相应的gt文本

用卷积分类器\(\mathcal{C}_{\psi}\)分类图片所属的writer w:

\[{\cal L}_{c l a s s}= \mathbb{E}_{x}\left[-\sum\log(p(\mathrm{w}|\mathcal{C}_{\psi}(\mathrm{x})))\right]. \]

循环一致损失:

\[{\cal L}_{c y c l e}= {\mathrm{E}}\left[\left|\left| {\cal E}({\bf X}_{\mathrm{w}})-\mathcal{E}({\bf Y}_{\mathrm{w}}^{\mathrm{C}})\right|\right|_{1}\right]. \]

相当于要求生成图片跟风格图片抽取出来的风格向量一样

完整损失:

\[{\cal L}={\cal L}_{a d v}+{\cal L}_{H T R}+{\cal L}_{c l a s s}+{\cal L}_{c y c l e}. \]

Experiment

Settings

2080Ti
预训练CNN: Adam, lr=2e-5, 指数衰减, early stopping patience=30, 数据太多,收敛前一直能得到没见过的样本,1000iter算一个epoch
完整HTG: Adam, lr=2e-4
训练7k epoch

Dataset

IAM数据集

图4 IAM数据集中训练集字符分布和类别(对数尺度)。以1000为阈值划定长尾数据(红线)

Ablation Analysis

表1 VATr消融研究(预训练策略,内容输入)

FewShot Styled HTG

图2 IAM测试集上的生成质量(忽略风格)

表3 考虑 seen and unseen calligraphic style and in-vocabulary and out-of-vocabulary textual content 四个场景的生成质量评估(指标不明

图5 定性评估

图6 使用背景有伪影的风格图片生成的样例。多亏了大规模预训练策略,VATr更专注于风格的形状属性而不是图片背景,但这点会导致FID和GS偏高,

LongTail Characters Generation

表4 考虑包含长尾字符以及仅数字的单词生成,CER(Character Error Rate),由训练好的HTR模型识别生成文本得到

图7 数字图片生成比较(对应表4,证明visual archetypes比one-hot编码好

图8 生成一些不同风格 out-of-charset 的符号(希腊字母)

Conclusion

作者将模型泛化能力归因于大规模的预训练和视觉原型的应用,预训练也有助于抽取更有代表性的风格特征,无视背景和 ink texture

Critique

用字母对应的图片替代one-hot编码作为内容向量,真有点风格迁移/字体生成的感觉

Unknown

标签:字符,训练,Archetypes,Generation,Text,生成,风格,mathcal,图片
From: https://www.cnblogs.com/Stareven233/p/17637518.html

相关文章

  • 正确的使用margin:0 auto与body{text-align:center;}实现元素居中
    我们首先了解一下它们的基本概念:text-align是用于设置或对象中文本的对齐方式。一般情况下我们设置文本对齐方式的时候需要用此属性进行设置,如:ExampleSourceCodediv{text-align:left;}表示文本居左对齐。margin是设置对象四边的外延边距,被称为外补丁或外边......
  • itext7.pdfhtml For C#
    最近发现itext7(前身为iTextSharp)下有个https://github.com/itext/i7n-pdfhtml的项目可以支持html转PDF下面是官方电子书的翻译内容,原文地址:Chapter1:HelloHTMLtoPDF---第1章:你好HTML到PDF(itextpdf.com)第1章:你好HTML到PDF在本章中,我们将以许多不同的......
  • 编程语言mojo报错:error: cannot call function that may raise in a context that can
    代码:frompythonimportPythonfnmain():#fnmain()raises:#ThisisequivalenttoPython's`importnumpyasnp`letnp=Python.import_module("numpy")leta=np.array([1,2,3])print(a) 运行报错:[02:19:48](mojo)dev......
  • 5 分钟理解 Next.js SSG (Static Site Generation / Static Export)
    5分钟理解Next.jsSSG(StaticSiteGeneration/StaticExport)在本篇文章中,我们将介绍Next.js中的SSG(静态网站生成)功能,以及它是如何工作的。我们将介绍SSG的基本概念,以及在Next.js中如何使用ServerComponents和ClientComponents来实现不同的数据获取策略。什......
  • 后端笔记 - iText5处理pdf
    1.引入依赖<!--生成PDF的工具包--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.12</version></dependency......
  • 【流行前沿】Text + Sketch Image Compression at Ultra Low Rates
    今天分享一篇7月挂在arxiv上的文章,研究的是用生成式网络进行图片压缩。近十年来,用图片压缩的主流方法是神经网络来做。17年左右流行用带有量化的autoencoder来做图片压缩,同时训练的指标也是常用的distortionmetric,比如MSE,PSNR,MS-SSIM等等。但是这些方法在低比特率的时候通常有......
  • UnityGLTF插件加载模型时,OcclusionTexture贴图显示错误的问题处理
    工作中遇到使用UnityGLTF插件加载GLTF模型时,贴图显示错误的问题,如下图 检查材质时发现,把OcclusionTexture去掉就看起来正常了  看来是插件对OcclusionTexture的解析出了问题, 那么我们来看一下,GLTF中对OcclusionTexture的描述片段,是这样:"name":"5木质长廊1.bmp","o......
  • golang Context应用举例
     Context本质golang标准库里Context实际上是一个接口(即一种编程规范、一种约定)。typeContextinterface{Deadline()(deadlinetime.Time,okbool)Done()<-chanstruct{}Err()errorValue(keyany)any} 通过查看源码里的注释,我们得到......
  • Python之html2text:将HTML转换为Markdown文档示例详解
    From: https://mp.weixin.qq.com/s/Pa3NDXOseyg0mIn869mbhQ-----------------------------------------------------------------------------------------hello大家好我是Monday,本文将详细介绍如何使用Python库中的html2text模块来实现将HTML转换为Markdown的操作,并提供示例......
  • Android 第一次点击EditText不显示光标问题
    可以考虑在XML布局文件中添加android:focusableInTouchMode="true"属性,以确保ClearEditText控件在触摸模式下也能获取焦点。这样,用户在首次点击时会立即看到光标。在XML布局文件中,将ClearEditText的定义中添加android:focusableInTouchMode属性,如下所示:<com.tools.q......