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

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加了个部件序列就发论文了,不过实验描述得非常详细,似乎真的想让别人复现

posted @ 2024-03-11 20:54  NoNoe  阅读(164)  评论(0编辑  收藏  举报