【SVG 生成系列论文(八)】如何生成 svg logo?IconShop: 通过自回归 Transformer 实现文本引导的矢量 Icon 生成

论文名:IconShop: Text-Guided Vector Icon Synthesis with Autoregressive Transformers (Siggraph Asia 2023)
文章提出的模型输入为文本,模型输出为单色的、相对简单的矢量图 icon。

技术细节主要分为 4 块:

  • SVG 表示与 Token 化:介绍用于表示 SVG 图标的数据结构以及将 SVG 脚本转换为离散标记序列的策略。
  • 掩码方案:掩码方案的实现细节,该方案使自回归模型能够基于双向上下文进行中间填充(FIM,Fill-In-the-Middle)。
  • 模型架构:详细阐述了 IconShop 的主要框架和嵌入策略。
  • 训练:介绍整个流程的训练目标。

上篇 介绍了 SVG 表示与 Token 化、掩码方案,本篇则介绍模型架构和具体的训练技巧。

模型架构

架构整体分为 4 个部分:SVG 图标嵌入(SVG Icon Embedding),文本嵌入(Text Embedding),输入准备和输出生成。

在这里插入图片描述

  1. SVG 图标嵌入
    每个 SVG 序列包含五类不同的 token:一维坐标,3种命令类型(M, C, L),SVG 结束标记 <EOS>,掩码标记 <Mask>,掩码结束标记 <EOM>

每个图标在 200×200 的边界框内,因此可能的一维坐标有 200² 个。为了表示不同类型的 token,将它们转换为维度为 40006(计算方式为 200² + 3 + 1 + 1 + 1)的独热向量。

通过一个可学习的嵌入矩阵 W ∈ R d m o d e l × 40006 \mathsf{W} ∈ R ^{d_{model}×40006} WRdmodel×40006 将这些独热向量转换为 d m o d e l d_{model} dmodel 维的向量。并类似 [ 1 ] ^{[1]} [1] 中使用两个额外的可学习矩阵 W x , W y ∈ R d m o d e l × 200 \mathsf{W^{x}}, \mathsf{W^{y}} ∈ R ^{d_{model}×200} Wx,WyRdmodel×200 来增强坐标信息。

e i   ⟵   W 2 + W x + W y h i x + W y h i y + P E i e_{i}\,\longleftarrow\,\mathsf{W}^{2}+\mathsf{W}^{x}+\mathsf{W}^{y}\mathsf{h}_{i}^{x}+\mathsf{W}^{y}\mathsf{h}_{i}^{y}+\mathsf{\mathsf{P}}\mathsf{E}_{i} eiW2+Wx+Wyhix+Wyhiy+PEi

其中 h i ∈ R 40006 h_i ∈ R ^{40006} hiR40006 是第 𝑖 个标记的独热向量。 ( h i x , h i y ) ∈ R 200 (h_{i}^{x},h_{i}^{y})∈ R ^{200} hixhiyR200 表示其一维坐标的二维表示。然后加入位置编码 P E i PE_i PEi 得到最终的嵌入 e i e_i ei

  1. 文本嵌入
  • 大规模语言模型(LLM)在广泛的文本数据上训练,能够捕捉复杂的词语关系,包括同义词和反义词。为了利用这种丰富的知识,从一个预训练的 BERT 模型 [ 2 ] ^{[2]} [2]中提取词嵌入层,并保持其固定以处理文本输入。
  • 作者还使用相应的词语分词器 tokenizer将文本描述离散化。分词器在文本开头添加 [CLS] 标记,在结尾添加 [SEP] 标记,分别表示文本序列的开始和结束。
  1. 输入准备
  • 由于文本描述和 SVG 序列长度不同,将文本 token s t e x t g t s_{text}^{gt} stextgt 和 SVG token s i c o n g t s_{icon}^{gt} sicongt 都用 0 填充为固定长度(具体实现上,SVG 为 512,文本为 50)。填充后,将它们连接形成目标序列 (期望的输出) s = [ s t e x t g t : s i c o n g t ] s=[s_{text}^{gt} :s_{icon}^{gt}] s=[stextgt:sicongt]
  • 在自回归 Transformer 中,模型根据前面的标记预测下一个标记。为了准备输入序列 𝑡,去掉 𝑠 的最后一个标记(即 <EOS>),并在开头添加 <SOS> 标记。这将 𝑠 向右移动一个位置,得到输入 t = [ < S O S > : t t e x t : t i c o n ] t=[<SOS>:t_{text} :t_{icon}] t=[<SOS>:ttext:ticon]
  • 由于去掉了 𝑠 的最后一个标记,因此 t i c o n t_{icon} ticon s i c o n g t s_{icon}^{gt} sicongt 少一个标记。
  1. 输出生成

在任何给定位置 𝑘,自回归 Transformer 根据前 𝑘 − 1 个标记生成一个维度为 d m o d e l d_{model} dmodel 的向量。通过线性变换和 softmax 函数获得在位置 𝑘 发生的所有标记的概率。

训练细节

训练目标是最小化文本和图标 token 的分别交叉熵损失。假设文本和图标的输出概率分别为 s out text s_{\text{out}}^{\text{text}} souttext s out icon s_{\text{out}}^{\text{icon}} souticon,我们计算各自的交叉熵损失,然后通过加权求和的方法将这些损失结合起来,如下所示 [Ramesh 等,2021]:

ℓ text = CE ( s out text , s gt text ) \ell^{\text{text}} = \text{CE}(s_{\text{out}}^{\text{text}}, s_{\text{gt}}^{\text{text}}) text=CE(souttext,sgttext)
ℓ icon = CE ( s out icon , s gt icon ) \ell^{\text{icon}} = \text{CE}(s_{\text{out}}^{\text{icon}}, s_{\text{gt}}^{\text{icon}}) icon=CE(souticon,sgticon)
ℓ total = λ t ℓ text + λ i ℓ icon \ell^{\text{total}} = \lambda_t \ell^{\text{text}} + \lambda_i \ell^{\text{icon}} total=λttext+λiicon

其中, CE ( ) \text{CE}() CE() 是标准的交叉熵函数, λ t \lambda_t λt λ i \lambda_i λi 是控制文本和图标重建相对重要性的加权参数。通过反复试验,我们在实验中设置 λ t = 1.0 \lambda_t = 1.0 λt=1.0 λ i = 7.0 \lambda_i = 7.0 λi=7.0

参考文献:
[1] SkexGen: Autoregressive Generation of CAD Construction Sequences with Disentangled Codebooks. In International Conference on Machine Learning. 24698–24724.
[2] Well-Read Students Learn Better: On the Importance of Pre-training Compact Models. arXiv preprint arXiv:1908.08962v2.

  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值