首页 > 其他分享 >[论文速览] CalliGAN@ Style and Structure-aware Chinese Calligraphy Character Generator

[论文速览] CalliGAN@ Style and Structure-aware Chinese Calligraphy Character Generator

时间:2024-03-11 21:01:22浏览次数:32  
标签:zi2zi Style Generator Chinese 字符 汉字 生成 风格 图像

Pre

title: CalliGAN: Style and Structure-aware Chinese Calligraphy Character Generator
accepted: AICCW(the AI for content creation workshop) at CVPR 2020
paper: https://arxiv.org/abs/2005.12500
code: https://github.com/JeanWU/CalliGAN
ref: https://blog.csdn.net/m0_51335899/article/details/123141736

关键词: 字体生成, 汉字, 书法,部件拆分,RNN
阅读理由: 回顾经典

Idea

在zi2zi基础上做改进,主要加了个部件序列信息

Motivation&Solution

图1 本文方法生成的结果,上下字体风格不同

  1. 部分字体覆盖的字符数量有限
  2. 书法作品的载体(纸张、石碑等)由于腐蚀导致字迹不清,限制了名作的使用

Background

图像翻译

图像到图像的转换是一种视觉和图形问题。它的目的是学习输入图像和输出图像之间的映射函数。使用这种技术的应用范围很广,如风格转移,物体更换,季节转移,或照片增强。

汉字生成

Zi2zi是一个开源项目,但从未以论文或技术报告的形式发表。第一篇使用GANs生成中国书法汉字的论文是AEGG[18],同样基于pix2pix,但增加了一个额外的编解码器网络,在训练过程中提供监督信息。与可以生成多类图像的zi2zi不同,AEGG只支持单类的字符生成。

DCFont[11]和PEGAN[23]都是从zi2zi修改而来,从数百个训练样本中生成GB2312字体库中使用的全部6763个汉字。PEGAN通过引入多尺度图像金字塔来通过细化连接传递信息来改进zi2zi,而DCFont则整合了预先训练过100种字体的样式分类器来获得更好的样式表示。SCFont[12]通过调整笔画提取算法[16]进一步改进了DCFont,以保持从输入图像到输出图像的笔画结构。

与学习给定字体之间的翻译模型相比,EMD[33]和SA-VAE[22]都将内容和风格分离为两个不相关的域,并使用两个独立的编码器来为它们建模。然而其技术细节不同,EMD在一个双线性混合网络(bilinear mixer network)中混合风格和内容的潜在特征,再使用图像解码器生成输出图像。因此,它的训练样本非常特殊,一个样本由两组训练图像组成,一组用于内容,另一组用于风格。(这点SA-VAE也是)

与此相反,SA-VAE采用序列方法(sequential approach),首先识别给定图像中的汉字,然后将识别的汉字编码为特殊的代码,这些代码代表12个高频汉字结构和101个高频字根。SA-VAE表明,汉字的结构知识有助于提高输出图像质量。

emmm我寻思SA-VAE也不是序列方式吧,而且哪里需要识别图像的汉字,内容字形的语义是已知的,所谓“特殊的代码”还有第三部分是hash码。

CalliGAN

由于汉字是高度结构化的,早期的一些方法使用采用拆分合并的方法,将一个汉字分解成笔画,然后将每个笔画单独生成再组合为对应的汉字[31,29]。但结构复杂的汉字难以自动分解的缺陷,并且需要手动分解某些字体风格,比如草书[30]。

随着神经网络和计算机视觉技术的发展,一项名为“风格转换”的研究取得了显著的成功,该研究旨在将画家的艺术风格添加到相机捕捉的照片中。风格转换逐渐演变为图像到图像的转换[10,34,32,14,17,24,3],其目的不仅是为目标图像添加风格细节,还包括对象从一个域到另一个域的转换,如马到斑马,反之亦然。由于中国书法家在笔画形式上各有自己的风格,产生书法汉字可以看作是汉字风格的域间转化。

一种中文字体可以很容易地渲染许多字符图像。给定两种字体,可以很容易地获得无数字符对。因此,通过训练图像到图像的翻译模型来生成字符是一种实用的方法,该方法生成的字符质量为最先进的[2]。与字体呈现的字符图像相比,毛笔书写的字符图像更加不规则。此外,它们需要花费时间和精力来创建。据我们所知,目前还没有明确定义的毛笔书法图像数据集,只有一篇现有的论文使用毛笔书法字符图像来进行实验[18]。本文是第二篇来处理这种图像类型。

利用毛笔书写的图像,提出了一种多风格图像-图像转换的方法。我们把风格定义为书法家的身份。如果一个书法家在不同的创作时期有不同的风格,我们就为这个书法家定义多个风格标签。为了验证所开发的方法,我们将与现有方法进行比较。综上所述,本文有两个贡献:

  1. 现有的多字体汉字生成方法是为了生成较大差距(highly different)字体的汉字,本文是第一个在细粒度上处理样式的方法。此外,本文是第二篇毛笔书法图像转换的论文。我们的代码和数据集是公开的,可以帮助研究人员复现我们的结果。
  2. 该方法采用了一种新颖的组件编码器。据我们所知,该方法是第一个将汉字分解成部件(component)并通过循环神经网络进行编码的方法。提出的方法生成了很好的图像,从而获得了良好的数字评价和主观意见。

提出的CalliGAN方法与现有方法有两个共同点:

  1. 首先,CalliGAN是一种基于GAN的方法,就像zi2zi、AEGG、DCFont和PEGAN。
  2. 其次,利用了汉字结构的先验知识,像SA-VAE那样。CalliGAN和SA-VAE的一个明显区别是利用汉字结构的方式。SA-VAE只使用汉字的结构和部首,这是高层次的结构信息,而CalliGAN将汉字完全分解成 ·部件· ,提供低层次的结构信息,包括笔画的顺序。

简而言之,CalliGAN整合了生成真实图像的GANs和保留字符结构的SA-VAE的优点。

Method(Model)

Overview

图2 架构和损失。CalliGAN是一个基于编解码器的图像翻译网络,有两个分支分别控制风格和内容。4个基于图像的损失:对抗损失、像素损失、一致性损失和分类损失

Architecture. 设h是由Unicode等系统编码的字符代码,s是风格标签,y是在风格s下表示h的图像。根据给定的中文字体渲染一个图像x(内容字形),使用成对的图像集{x}和{y}来训练我们的网络将内容字形转换为书法家写的图像。

通过图像编码器Ei对x进行编码,生成一个图像特征向量vi。同时,我们查阅字典T,获得h的结构序列c,通过编码器Ec生成结构特征向量vc。将参考图像y的样式标签s转换为一个有效编码向量vs,vc、vi和vs串联起来作为输入特征向量,以生成书法字符图像\(\hat{y}\)。

Image encoder and decoder. 使用U-Net[21]作为编码器-解码器架构,中国书法大多是用黑色墨水表现的,假设图像是灰度图。修改了U-Net的架构,将输入和输出图像的通道数从3个减少到1个。

表1 编解码器架构。细节略

图3 部件序列样例。

Component encoder. 图3显示了一些部件的例子。我们使用一个公开的汉字分解系统,即中国标准交换码,它定义了517个汉字部件。给定一个字符h,我们使用该系统来获得其部件序列:

\[c = (k_1, k_2, \ldots, k_n), \tag{1} \]

图4 部件编码器E_c架构

其中n为c的长度,由h决定。为了将可变长度序列c转换为定长特征向量vc,我们提出了一个序列编码器,如图4所示,该编码器包含嵌入层和LSTM模型。嵌入层将构件码转换为128维的嵌入向量,将其输入到LSTM模型中,生成结构特征向量vk。这些嵌入向量在我们的训练过程中自动优化。LSTM模型随机初始化。

表2 判别器和风格分类器架构

Discriminator and auxiliary style classifier 鉴别器和辅助风格分类器除了输入层的输入通道数以外,几乎与zi2zi的鉴别器和辅助风格分类器相同。它的架构如表2所示。鉴别器和辅助风格分类器共享前三层,并拥有独立的第四层。

公式2~6 4种损失

Losses. 4种损失如公式2~6所示:对抗损失2、像素损失3、一致性损失4和风格分类损失5

Experiment

Settings

随机初始化网络的权值,使用Adam[15]优化器训练模型,参数β1为0.5,β2为0.999,batch size为16。因为我们的鉴别器D学习速度比生成器快,所以我们在更新鉴别器一次之后更新生成器两次(相当于TTUR?)。

40个epochs,前20个的初始学习率设为0.001,将后20个的衰减率设为0.5。在一台配备了8核2.1GHz CPU和Nvidia GPU RTX 2080 Ti的机器上训练我们的模型需要25小时(cpu什么洋垃圾中的洋垃圾?)。设置λp=100, λc=15和λs=1。使用TensorFlow实现。

Dataset

为了编制一个图像集来进行实验,从一个中国书法图像库中下载图像。所有的图像都是由专家模仿古代的杰作用笔写成的,或者是由艺术字体呈现的。该资源库涵盖了29种书法风格。其中一些属于定义明确的楷书、半草书和隶书,但其余的没有被归类。我们选择了属于楷书的7种风格来进行实验,它们的名称是

  1. 褚遂良。
  2. 柳公权。
  3. 欧阳询《皇甫诞碑》
  4. 欧阳询《九成宫醴泉铭》。
  5. 颜真卿《多宝塔碑》。
  6. 颜真卿《颜真卿勤礼碑》。
  7. 虞世南。

图5 7种风格字体的例子

表3 训练和测试样本的统计数据

第3、4种风格是同一古代书法家欧阳询在其早年和晚年创作的。因为书法家风格的变化,我们把它们当作两种不同的风格,这也是中国书法界的经验法则。第5和第6种也属于同一作家书写但不同的风格。

每种风格都有几千张图片,但同一风格下的一些图片可能是同一个字。我们总共收集了47552张图片,涵盖了6548个不同的字符,但只有5560个字符在所有7种风格中都可用。表3显示了它们的统计数据。我们从5560个常用字符中随机抽取1000个字符作为测试字符集。并有7737张测试图像。我们使用剩余的39815张图像来训练我们的模型。

图像大小取决于字符的形状,长边是固定的140像素。我们保持它的长宽比,并通过Lanczos重采样将长边放大到256像素。我们将放大后的图像放在中心,并填充两个短边,生成一个256×256像素的正方形图像,作为我们的真实图像y。

图像颜色深度为1位单色。在重新采样时,不改变深度,将这些单色图像线性地转换为取值范围在-1到1之间的张量。使用宋体来渲染输入的图像x,因为它涵盖了所有汉字,而且被zi2zi所使用。

Results

表4 性能比较 one-hot表示把zi2zi的标签嵌入向量替换为了简单的one-hot向量(这样也行?)

图6 消融研究。

表5 与zi2zi的对比。

图7 zi2zi的失败样例

表6 用户主观研究

图8 与AEGG的对比。AEGG的图片直接拿它们原论文的,因此比例不同

Conclusion

总结完写了一堆问题,确实启发了不少后来的工作?

Critique

在zi2zi上改进似乎是当时的热潮,图片分辨率通过上采样达到了256,不是会影响生成吗?事实上放大看gt都有锯齿了

呃呃,实验怎么跟baseline比还有来有回,AEGG也不重跑

贡献就开源跟部件编码器,相当于给zi2zi加了个部件序列就发论文了,不过实验描述得非常详细,似乎真的想让别人复现

标签:zi2zi,Style,Generator,Chinese,字符,汉字,生成,风格,图像
From: https://www.cnblogs.com/Stareven233/p/18018315

相关文章

  • [论文速览] Separating Style and Content for Generalized Style Transfer
    Pretitle:SeparatingStyleandContentforGeneralizedStyleTransferaccepted:CVPR2018paper:https://arxiv.org/abs/1711.06454code:none关键词:styletransfer,chinesetypefacetransfer,fontgeration阅读理由:回顾经典Idea将图片解耦成内容和风格两种特......
  • 【转】关于@GeneratedValue和@GenericGenerator
    一、JPA通用策略生成器通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,其生成规则由@GeneratedValue设定的。@id和@GeneratedValue都是JPA的标准用法。JPA提供的四种标准用法为TABLE、SEQUENCE、IDENTITY、AUTO。TABLE:使用一个特定的数据库表格来......
  • Blazor笔记-Component styles
    更新记录注意:非教程。纯笔记,日常查询用的。需要教程的小伙伴找几本书看看即可哈哈,有Vue基础的话非常快,概念都是通的。非工作需要不建议深入学习Blazor,深入Vue吧,用的多,哈哈。完整目录地址:https://www.cnblogs.com/cqpanda/p/17596348.html点击查看2024年3月7日发布。2023......
  • css Module里less里嵌套css,使用的时候,style.xxx不用嵌套吗?
    在CSSModules中,使用Less编译器编译并转换成模块化CSS后,你不需要在JavaScript中通过style.xxx的方式进行嵌套引用。当你在Less文件中使用嵌套语法编写样式时,编译过程会自动将这些嵌套转换为扁平化的类名,并且生成一个映射对象。例如,在Less文件(假设为styles.module.less)中:.contain......
  • 有一个子组件DataList,然后在父组件中引入,并在父组件引入中的DataList标签上设置style
    有一个子组件DataList,然后在父组件中引入,并在父组件引入中的DataList标签上设置style样式,能生效吗?在React中,父组件可以通过props将样式传递给子组件,并在子组件内部应用这些样式。但直接在父组件引用子组件的地方设置style属性通常不会生效,因为React的JSX语法并不支持这种写法。......
  • Vue 3.0 Class与Style绑定
    操作元素的class列表和内联样式是数据绑定的一个常见需求。因为它们都是attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js做了专门的增强。表达式结果的类型......
  • Qt 随机数生成器:QRandomGenerator
    一、描述QRandomGenerator可用于从高质量随机数生成器生成随机值。与C++随机引擎一样,QRandomGenerator可以通过构造函数使用用户提供的值作为种子。播种时,此类生成的数字序列是确定性的。也就是说,给定相同的种子数据,QRandomGenerator会生成相同的数字序列。给定不同的种......
  • Qt 生成随机数 qrand、QRandomGenerator
    //老方法//利用qrand和qsrand生成随机数//位于QtGlobal中//例,生成一个0和10之间的随机数1qsrand(QTime::currentTime().msec());//设置种子,该种子作为qrand生成随机数的起始值,RAND_MAX为32767,即随机数在种子值到32767之间2qrand()%10;//新方法//利用QRandomGenerator类......
  • org.geotools.styling.StyleFactory is not an ImageIO SPI class
    jdk版本不正确?参考:https://blog.csdn.net/qq_40985985/article/details/113979329参考2:https://www.jianshu.com/p/41a71b73c053(geoserver采用的对应jre版本)的确从jdk11将为了jdk8后错误消失。。参考3:https://www.coder.work/article/4680826(DatumFactory不是ImageIOSPI类......
  • Angular 17+ 高级教程 – Prettier, ESLint, Stylelint
    前言不熟悉 Prettier,ESLint,Stylelint的朋友可以先看这篇 工具–Prettier、ESLint、Stylelint。本篇主要是教如何在Angular项目引入 Prettier、ESLint、Stylelint。 ESLint       目录上一篇 TODO下一篇TODO想查看目录,请移步 Angular17+高......