【SVG 生成系列论文(二)】用 LLM 来生成 SVG 代码,StarVector: Generating Scalable Vector Graphics Code from Images

22 篇文章 0 订阅
5 篇文章 0 订阅

上篇 SVG 生成系列论文(一) 简要介绍了 StarVector 的背景和模型结构,本篇将更详细的介绍模型细节。

在这里插入图片描述

StarVector 的模型可以分为两大块:(1)Image Encoder and Visual Tokens 和 (2)CodeLLM(StarCode)

Image Encoder 和 Visual Tokens

(1)对于 Image Encoder,作者对 CLIP ViT-L/14 [57]、ConvNext [44](均在 LAION-2B [66] 上预训练)和 VQGAN [25] 均进行了实验(如下图),在图像重建任务中使用 SVG-Stack 中的光栅图像进行了预训练。作为 Image Encoder 的输出,作者利用最后层中所有可用的隐藏表示来带来最丰富的特征。

从下图明显看出使用 CLIP ViT-L/14 作为 Image Encoder 的效果更好。
在这里插入图片描述

作者将编码器的输出 z v z_{v} zv 定义为 L v L_{v} Lv 个嵌入序列的展平化二维网格。

  • 对于CLIP,有 L v L_{v} Lv = 257个嵌入,包括CLS令牌。
  • 对于VQGAN,使用预量化层并将它们展平以获得 L v L_{v} Lv = 196个嵌入。
  • 对于ConvNext,我们展平最后的激活图以获得 L v L_{v} Lv = 49个嵌入。

对于 Adapter 模块将图像嵌入非线性投影到 LLM 的嵌入空间,生成一组 Visual Tokens 嵌入(或 Visual Tokens)。这种转换匹配了嵌入的维度,并将图像表示与语言模型的嵌入空间对齐,有效地将视觉和SVG代码模态连接起来,用于生成任务。

具体来说,适配器由一系列具有 Swish[58]激活函数和 Batch Normaliazation (批标准化)[33]的全连接(FC)层组成。

CodeLLM(StarCode)

(2)CodeLLM 根据表示图像的 Visual Tokens 生成完整的SVG代码。采用了 StarCoder 架构[40],其具有预训练权重,为代码补全任务提供了通用模型。

StarCoder 是一个 decoder-only (仅解码器)的架构,使用多查询注意力[68]进行高效抽样。

  • 为了解决长序列长度和高内存需求的问题,作者使用了flash-attention [18],使得可以对 StarCoder 进行微调,上下文长度为8,192个 tokens,这是该模型的唯一限制。这种方法可以减轻通常与长序列中的神经注意力相关的二次复杂度。

在计算机科学和算法分析中,“quadratic complexity”(二次复杂度)指的是算法的执行时间或空间需求随着输入规模的增加而呈二次增长的情况。换句话说,当输入的大小增加一倍时,算法的执行时间或空间需求会增加到原来的四倍。二次复杂度通常表示为 O ( n 2 ) O(n^2) O(n2),其中n是输入规模。这种类型的复杂度常见于一些简单的嵌套循环算法或者涉及对所有输入数据进行逐一比较的情况。

  • 微调过程更新所有模型权重,以克服从原始预训练任务(通用代码生成)到本文的特定任务(图像到SVG转换)的分布偏移。
  • 作者强调,预训练的StarCoder没有经过训练用于生成SVG代码,因此需要进行端到端的微调(全参数微调)。

在这里插入图片描述

训练过程(StarCode 的微调过程):

  • 在训练期间,作者首先使用图像编码器 E E E 对图像 x x x 进行编码为 E ( x ) E(x) E(x),得到一个尺寸为 L v L_{v} Lv × D v D_{v} Dv 的隐藏二维特征 z v z_{v} zv,其中 L v L_{v} Lv 是序列长度, D v D_{v} Dv 是嵌入尺寸。
  • 适配器 A 将 z v z_{v} zv 投影到 CodeLLM 的维度空间,得到尺寸为 L v L_{v} Lv × D l D_{l} Dl 的视觉令牌(Visual Tokens) h v h_{v} hv,其中 D l D_{l} Dl 是CodeLLM的内部维度。
  • Ground Truth 的SVG代码也被分词并嵌入到CodeLLM空间中,作为 h l h_{l} hl,与视觉令牌 h v h_{v} hv 具有相同的维度。
  • 在训练期间,作者将视觉和SVG tokens 嵌入进行连接,并使用标准的语言建模训练目标进行建模,即使用SVG代码作为监督进行下一个令牌预测。
  • 在推断过程中,只输入根据图像得到的视觉令牌 h v h_{v} hv 作为上下文,将其 CodeLLM 自回归地进行解码输出 SVG 代码 (SVG Sampling)。
  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值