[论文阅读] DGFont++ Robust Deformable Generative Networks for Unsupervised Font Generation

Pre

title: DGFont++: Robust Deformable Generative Networks for Unsupervised Font Generation
accepted: Arxiv 2022
paper: https://arxiv.org/abs/2212.14742
code: None

关键词:字体生成, 可变形卷积, 无监督, 局部注意力, 对比学习
阅读理由:DG-Font的扩展

Target

现存方法大多是监督式,需要配对数据,而这里提出一种鲁棒的可变形生成网络,可以无监督地学习。

Idea

在DG-Font的基础上,给FDSC模块加上局部空间自注意力,更好地提取特征,并加入对比损失学习无关内容的一致风格特征。此外文章思路接近Stroke+,都是会议论文的扩展,加了更多的实验。猜想因为有两个新改进,因此加上两个"+"?

Background

相关工作的前两小节跟DG-Font写的一样,甚至文段间都有重复,这里只简单提一下。

从早期工作介绍到分离内容风格的EMD, SA-VAE,它们是监督式,且需要大量配对数据训练。然后介绍利用辅助信息(auxiliary annotations)的工作,如笔画、组件,有DM-Font,LF-Font,MX-Font,但他们依赖于先验知识,只能用于特定书写系统。不过MX-Font主打的就是跨语言...vimage-to-image translation的方法不能直接用于无监督字体生成上,因为他们通常将风格定义为纹理和颜色,常用AdaIN,不适合局部风格样式(几何形变)。然而DG-Font跟本文都还是用上了...

Deformable Convolution and Attention Mechanism

可变形卷积能够增强CNN的形变建模能力,它以额外的偏移增强了空间采样位置,现已被用于多个高层视觉任务中,如:目标检测、视频目标检测语义分割、人体姿态估计。近来也有一些方法将其用于生成任务,TDAN用它对齐两个连续帧并输出高分辨率帧,实现视频超分辨。也有工作在给定视图条件向量(view condition vectors)的情况下,通过可变形卷积合成了新的视图图像(view images)

在目标检测或语义分割任务中,可变形卷积跟注意力模块的正确组合能发挥出更好的效果。ID-Unet就是如此,它在有监督图片合成任务中提出 Soft and Hard Conditional Deformation Modules。研究显示在低分辨率特征中使用注意力更加有效。

ID-Unet:《Id-unet: Iterative soft and hard deformation for view synthesis》

Unsupervised Representation Learning

最近基于最大化互信息的对比学习很火,他们充分利用噪声对比估计(noise contrastive estimation),在学到的嵌入空间里,相关联的样本更贴近。对比损失的设计中,负样本数量、如何采样、数据增强都很重要。Moco维护字典作为负样本的队列,将数据增强的图片作为正样本,利用ImageNet数据集训练,在多种下游任务上都取得了良好表现。

但自然图片跟字形图片不同,数据增强方法也不通用,本文自行设计了几个增强方法。

Method(Model)

图1 无监督字体生成结果。给定内容跟风格参考图片(都是多张),模型会模拟风格进行生成。

本文作为会议论文的扩展,新增:

  1. 更鲁棒的风格特征抽取方法,引入对比学习
  2. 给FDSC加上局部空间注意力,成为FDSC-attn
  3. 更多消融实验
  4. 对不同图片大小都做了实验,并跟SOTA方法比较

Overview

图2 方法总览

看图2,架构跟DG-Font差不多,不再复述,生成器判别器详细架构见实验部分的表格。

Feature Deformation Skip Connection

图3 同一汉字两种字体的几何形变,每个笔画有对应关系

如图3所示,通过该笔画关系提出了FDSC(feature deformation skip connection)模块,它学习字体间的局部样式跟几何形变,预测 pairs of displacement maps,然后用其在低级内容特征图上进行可变形卷积。FDSC的输出喂给mixer以生成结果。

如图2所示,FDSC的输入是内容跟风格图的特征图\(F_s,\; F_c\),它将二者拼接并施以卷积,然后估计采样参数:

\[\Theta=f_{\theta}(F_{s},F_{c}). \tag{1} \]

\(f_\theta\)指可变形卷积层,\(\Theta = \{\Delta p_{k}, \Delta m_{k} | k=1, \ldots,|\mathcal{R}|\}\)是卷积核的偏移跟mask,其中\({\mathcal R}=\{(-1,-1),(-1,0),\ldots,(0,1),(1,1)\}\)是3x3核的常规网格(regular grid)。

基于可变形卷积\(f_{D C}(\cdot)\)就能获得变形后的特征图:

\[F_{c}^{'} = f_{D C}(F_{c},\Theta). \tag{2} \]

具体来说对于\(F_{c}^{'}\)里的每个位置p,可如下应用可变形卷积:

\[F_{c}^{'}(p) = \sum_{k=1}^\mathcal{R}w(p_{k}) \cdot x(p+p_{k}+\Delta p_{k}) \cdot \Delta m_{k}, \tag{3} \]

其中 \(w(p_{k})\) 表示可变形卷积核在第k个位置的权重,该卷积在非常规的位置\(p_{k}+\Delta p_{k}\)进行,同时\(\Delta p_{k}\)可能是分数。根据前人经验,该操作通过双线性插值(bilinear interpolation)实现。最终FDSC的输出\(F_{c}^{'}\)喂回mixer,然后 \(F_{c}^{'}\) 像常用的跳跃连接一般跟\(F_s\)拼接(concatenate)。

这部分几乎直接copy DG-Font

字形图片中有许多相同颜色的区域,比如背景色跟字的颜色,使用可变形卷积可以把相同颜色的区域关联现在一起。由于难以优化非唯一解(non-unique solution),因此给偏移\(\Delta p\)施加约束,就是加了个损失项。

众所周知,低维特征比高维的含有更多的结构和空间信息,因此选择哪个级别的特征进行转换就很关键。实验部分分析了不同FDSC模块数的模型性能。

FDSC-attn. 细节看图2c,QKV矩阵由1x1卷积得到,看起来就是对原先FDSC输出再进行一次自注意力。但它是“局部空间的”注意力,空间维度上每个位置 \((i,j)\),都以其为中心在K上抽取一小块,记为\(\mathcal{k}\),权重\(\mathcal{w}\)由下述公式得到:

\[\mathcal{w} = r e s h a p e(FFN(c o n c a t(f l a t t e n(\mathcal{k}), \mathcal{q})). \tag{4} \]

FFN就是FC层+leaky ReLu+FC层,\(\mathcal{w}\)等价于传统 key query 汇聚的softmax注意力图,与来自V的相应patch逐元素乘就能得到输出 \(\mathcal{o}\),处理所有位置就有输出\(O_a\)

不同于可变形卷积,额外的注意力模块给出了某个位置的特征及其上下文patch之间的热力图,让模型关注局部注意力信息,并根据当前位置特征跟上下文产生“软”形变特征。

Unsupervised Feature Representation for Style Encoder

图4 对比表示学习示意图。风格参考及其增强过的图片是正样本对,数据集中其他图片是负样本

为了学习鲁棒的字体表示,希望学习无关内容的一致风格特征,为此通过自监督的对比学习,理解各字体的相似与差异。定义几个数据增强来找正样本对,目标是学习特征空间,其中字形及其正样本对应该接近,这是通过最大化他们间的互信息来实现的。

不同于I2I,本文将风格定义为几何形变、笔画粗细、笔锋(tips of brushes)、连笔(joined-up writing pattern)。对比表示学习见图4,风格编码器学习风格图片\(I_s\)到风格编码\(Z_s\)的映射,类似MOCO,构建数据样本队列,存储之前采样过的图片,作为负样本。\(Z_s^+\) 是正样本对应的编码,\(Z_s^-\) 是负样本对应的,有对比损失:

\[\mathcal{L}_{s t y} = -\log \frac{\exp(Z_{s}\cdot Z_{s}^{+} / \tau)}{\exp(Z_{s}\cdot Z_{s}^{+}/\tau) + \sum_{i=1}^{N}\exp(Z_{s}\cdot Z_{s}^{i-}/\tau)}, \tag{5} \]

其中\(\tau\)是温度超参数,该log损失是(N+1)路((N+1)-way)基于softmax的分类器,希望将\(Z_s\)分类为\(Z_s^+\)。风格编码器跟DG-Font不同,采用动量的,跟《Momentum contrast for unsupervised visual representation learning》里的一样进行更新。

但如此构建的正负样本对是否太容易区分了,仿射变换不就能得到对应的正样本吗?

Loss Function

Contrastive loss 公式5,相比DG-Font唯一新增的损失

Adversarial loss 经典对抗损失,仍然采用DG-Font的多任务判别器,独立判别每个风格

\[\mathcal{L}_{a d v}=\max_{D_{s}} \min_{G} \mathbb{E}_{I_s\in P_s,I_c\in P_c}[\log D_{s}(I_{s}) +\log (1-D_{s}(G(I_{s},I_{c})))], \tag{6} \]

Content consistent loss 对抗损失使模型生成的图片真实,但忽略了内容准确度。为了预防模式坍塌,并相同内容提取的特征内容一致,就是让内容图跟生成的图片用内容编码器提取的特征图一致:

\[\mathcal{L}_{cnt} = \mathbb{E}_{I_s\in P_s,I_c\in P_c} \left\|Z_{c}-f_{c}(G(I_{s},I_{c}))\right\|_{1}. \tag{7} \]

Image Reconstruction loss 重建损失,保持域不变的特征(如内容),就是风格内容都用同一张图片的,试着重新生成该图片:

\[\mathcal{L}_{i m g}=\mathbb{E}_{I_{c}\in P_{c}}\left\|I_{c}-G(I_{c},I_{c})\right\|_{1}. \tag{8} \]

Deformation offset normalization 给可变形卷积的偏移施加限制,因为同一个字即便风格不同,对应笔画所需的形变不会太多:

\[\mathcal{L}_{o f f s e t}=\frac{1}{|\mathcal{R}|}\left\|\Delta p\right\|_{1}, \tag{9} \]

其中\(\Delta p\)是偏移,\(|\mathcal{R}|\)是卷积核的数量,看起来就是希望偏移尽可能小,不然解不唯一,很难优化

Overall Objective loss 所有\(\lambda\)都是超参数,N是FDSC模块的数量,生成器最小化损失,判别器最大化

\[\mathcal{L} = \mathcal{L}_{a d v}+\lambda_{img}\mathcal{L}_{i m g}+\lambda_{c nt}\mathcal{L}_{c n t}\lambda_{sty}\mathcal{L}_{sty}+\lambda_{offset}\sum^N_i\mathcal{L}_{o f f s e t}, \tag{10} \]

Experiment

Implementation Detail

表1 生成网络架构

表2 判别网络架构

Network Architecture 除了表1表2还介绍了FDSC的结构,FDSC-attn的局部空间注意力模块用13x13的patch大小。FRN表示 filter response normalization

Training Strategy 卷积层参数均由 He initialization 初始化,其中所有bias设为0,线性层权重从 N(0, 0.01) 采样。风格编码器用Adam优化器,\(\beta_1=0.9,\; \beta_2=0.99\),内容编码器跟mixer用RMSprop,\(\alpha=0.99\)。整个框架训练 200,000 iterations,学习率设为0.0001,且有0.001的weight decay。然后是模型用 hinge的对抗损失训练,且有\(\gamma=10\)的R1正则化。\(\lambda_{img}, \lambda_{cnt}, \lambda_{sty}, \lambda_{offset}\)均为0.1,公式5的温度超参数\(\tau = 0.07\)。测试时,用10张风格图去计算平均风格编码。

Data augmentation 对风格参考图片,依次进行随机缩放(0.71.2)、旋转(-2020 degree)、水平垂直平移(偏移值为图片大小的0~0.2)、随机擦除(用255填充)

Compared Methods 简单介绍了用于比较的模型

Dataset

231个字体,有印刷体也有手写体,每个都包含1143个常用汉字。数据集随机化分为测试跟训练集,训练集有221个字体,每个含800汉字。测试集由两部分组成,一个是那221个字体剩下的343个字,另一部分用于测试泛化能力的剩余10种字体。

图片尺寸128x128,与主流方法保持一致。提到为了跟MX-Font比较,需要将字拆分为组件?(sub-characters),公平起见用新搜集的数据集去做128x128的实验,而80x80的就用DG-Font的数据集

Metrics

L1 loss, Root Mean Square Error (RMSE), SSIM, LPIPS, FID

前三个指标属于像素级的,模糊的图片得分高,但不符合人类的感知,需要后两个感知级指标

Results

表3 整个数据集上的定量比较。第一列的 80/128 表示训练跟测试时的图片尺寸

Quantitative comparison 定量结果看表3,对于 Cycle-GAN, GANimorph 这种只能一对一转换风格的,就每个风格训练了个模型。

值得注意的是FID方面,MX-Font不如FUNIT,但其他指标都更好,这点在MX-Font原论文也是如此,作者认为这是因为MX-Font用像素级的损失去监督模型训练,FUNIT在关注真实性跟生成质量的FID上表现更好。感觉是FID指标可能并不适合字体生成任务,因为MX-Font论文中FUNIT的样本十分糟糕,但FID就是更低,本文里的FID也很逼近DGFont++,尽管结果完全不行,它真的能叫感知级的指标吗?

但另一方面DGFont++作为改进版,加注意力又加对比损失,对比DGFont却没有显著提升,需要指标精确到小数点后四位来区分,甚至有的指标还不如DGFont

图5 跟SOTA的结果比较。红框表示结构错误,蓝框是风格错误,橙框表示模糊或噪声输出

Qualitative comparison FUNIT明显不行,MX-Font跟本文的DGFont++差不多,输在需要配对数据,而且不能应对中空的字体(图5最后一列)

Ablation Study

图6 DGFont中不同部分的效果。a将内容编码器前3个卷积层换成可变形卷积层 b加一个FDSC模块(没有normalization,公式9那个) c给FDSC模块加上normalization d加上另一个FDSC模块(即DGFont)

baseline就是常用的编解码器模型,没有可变形卷积、FDSC、对比损失。图6把baseline增量地加到DGFont,各模块确实有效,字形有改善,但指标上变化不大,cd两列尤为明显。

图7 DGFont++消融研究的样本

表4 DGFont++消融研究,最后一行的模型就是DGFont++

表4、图7是一步步把DGFont改为DGFont++,作者说加上注意力对像素级指标影响不大,但FID跟LPIPS都超越了DGFont,认为图7里第四第五列能体现出加了attn模型更好地学到了风格。说实话确实有变好的趋势,但并不显著。加上对比损失后有较大提升,没有笔画缺失或噪点,表明对比学习有利于得到鲁棒且内容不变的风格表达。

图8 参考集大小变化对性能的影响。 a,b用箱线图展示了FID,c展示了每个模型的FID方差

注:箱线图可参考:https://www.cnblogs.com/Stareven233/p/17102304.html

图8分析鲁棒性,不同颜色表示不同的参考图片数量。通过箱线图可以看出DGFont++在FID上表现更好,相同参考图片下的波动也小。图8c可以看出DGFont++的FID方差更小,特别是参考图片少的时候。同时可以看到参考图片越多二者的FID方差都越小,作者认为是对比学习的功劳,可以减轻参考图片变化的影响。a,b能看出参数图片数量多,FID略微上升,四分位间距IQR减小,结果更稳定。

表5 跟U-Net的跳跃连接(SC)作对比。第一行是DGFont中的FDSC换成SC的新模型,第二行是DGFont

表5里SC应该就是U-Net中编解码器之间同分辨率层之间的通道,对语义分割尤为有效,因为它的输入输出具有相同结构。然而字体生成任务的内容输入输出间有几何形变存在。可以看到用FDSC确实好于SC。

图9 特征可视化。可视化FDSC输出的特征F'_c,特征图越白的的部分表示激活值越大。

图10 可视化学到的偏移。第一列是原图到生成图;第二列示所估计偏移 \Delta p 的形变流;第三列是箭头图(quiver plot)展示的偏移 \Delta p;第四列是第三列放大的细节。源图跟生成图片分别用蓝色跟绿色表示。

如图9所示,特征图\(F'_c\)很好保存了字符的样式,有助于生成完整结构的字符,另一方面可以看到FDSC模块有效转换了内容编码器抽取的特征(特征图跟内容字有较大差别)。

此外可视化了学到的偏移,使用光流跟字符流(optical flow and character flow)两种形式。为了清晰地可视化偏移,FDSC里的可变形卷积核设定为1x1。如图10所示,学到的偏移主要影响字符区域,背景的偏移值趋近于0(第二列光流部分仅字符区域有光亮色彩,第三列箭头指示笔画方向),证明公式9偏移损失的有效性。

对于字符流(第三列),可以看到大多数偏移矢量从目标字符的笔画指向相应的源笔画。结果显示卷积过程中,目标字符的采样位置倾向于偏移到源字符相应的位置,(是说给定目标风格,懂得在源图相应笔画处去提取特征?)

焯,大意了,从消融实验开始许多图、描述都是照搬DG-Font的,完全没必要再写一遍!

图11 风格插值。左右两端两种字体,中间的图片插值而来(convex combinations?)

同时图11提供风格插值以证明学到的风格表示具备语义。首先从两个字体抽取风格特征,然后线性插值风格因子\(Z_s\)以得到插值图片,\(Z_s\)以0.1间隔从0取到1。可以看到风格变化十分顺畅,而且粗细、笔画、连笔(似乎没体现?)都有渐变,且不影响字符内容。

图12 用户调查结果,蓝条越长说明本文的DGFont++越受欢迎

图12用户调查采用成对的A/B测试,对每个作比较的方法,随机采样100个样本对给受试者,每对含本模型跟对比模型生成的样本。受试者是10个每天都用汉字的人,被要求在7秒内从没对样本中选出跟ground-truth更接近的。

Conclusion

本文提出了有效的无监督字体生成模型,无需配对数据,且能扩展到未知字体。使用FDSC跟FDSC-attn传递全局与局部可变的低维空间信息给mixer。此外通过内容编码器中的可变形卷积学风格一致特征表示。且做了大量试验验证有效性。

Critique

怀疑图1只是示意图,并非模型真实的生成结果,比后面图5的效果好太多了。首先作为扩展论文,创新点不多,加注意力是常用方式,而且似乎提升并不大。而对比学习感觉是比较新的idea,或许能单独写一篇文章?但既然放在这里,可能它单独带来的提升并不是特别大?

此外文章的书写十分详细,模型架构,训练细节都有提供。但要是写写实验设备、batchsize啥的就更好了,由于代码未开源,也不好评估训练开销。然后图8的箱线图跟图12的用户调查都挺新鲜,其他图也画得很好,而且实验从消融,可视化到插值都有涉及。遗憾的是仍然没能跟SOTA比一比,文章发在22年末,像22年初的FsFont、CG-GAN或许可以比较下。

Unknown

  • 输入的风格图可以多张?看图1是可以,但图2结合AdaIN的使用又感觉是跟内容图一对一的?
posted @ 2023-05-26 14:55  NoNoe  阅读(338)  评论(0编辑  收藏  举报