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

19 篇文章 0 订阅
4 篇文章 0 订阅

SVG 生成系列论文(一)SVG 生成系列论文(二) 分别介绍了 StarVector 的大致背景和详细的模型细节。本篇则重点介绍实验以及数据集部分

StarVector 一文中提出了一个用于验证位图到矢量图生成的数据集SVGBench,其主要来源于 Glypazzn[1],DeepSVG[2],TheStack[3] 三个工作。如下图所示:
在这里插入图片描述
对于不同的 Dataset (SVG-Fonts、Icons、Emoji和Stack)均拆为了训练、验证和测试集。

  • 训练集用于优化网络的参数权重。
  • 验证集用于调整抽样超参数,测试集用于评估。
  • 此外,由于 CodeLLM 只能模型可以处理高达 8k 个上下文标记,因此该数据集只考虑最多包含 8,192 个 tokens 的示例。

SVG 简化(Simplification):
由于 DeepSVG[2] 需要对其输入的SVG进行简化。简化包括消除复杂的基元( Primitives ),并仅使用矢量路径( Path )。此外,颜色和形状被抽象为仅使用简单的线条笔触。作者创建了数据集的简化版本,下表显示了包含在 SVG-Bench 中的完整数据集。

SVG基元(SVG Primitives)指的是可在SVG(可缩放矢量图形)图像中使用的基本形状或元素。这些基元包括诸如直线、圆、矩形、多边形等几何形状,以及路径、文本、渐变等其他元素。在SVG图像中,这些基元可以用来描述图形的结构和外观。简化SVG通常会消除复杂的基元,只保留最基本的矢量路径以及简单的线条笔触,以减少图像的复杂度和文件大小。

在这里插入图片描述

Baseline

在这里插入图片描述
如上图所示,在之前的工作中,通常只考虑了三个简单的SVG命令 - M(移动)、L(直线)和C(曲线),而该模型原则上可以处理所有类型的复杂SVG命令。主要的 Baseline (对比模型)包括:

  • Im2Vec [4] 使用端到端的变分自编码器(VAE),仅使用图像监督进行训练来生成矢量图形。输入的栅格化图像被编码为一个“全局”潜在向量,然后传递给一个RNN,以生成每个路径的潜在代码。路径解码器将这些路径代码解码为贝塞尔路径,以生成输出的SVG。
    在这里插入图片描述
  • DeepSVG [2] 被引入为一种层次化的基于 path 的 VAE- Transformer 架构。输入 path 被分别使用不同的 path 编码器编码,然后使用第二个编码器进行聚合以生成潜在向量。解码器使用这个潜在向量来输出路径表示,提供实际的绘制命令和参数。然而,DeepSVG框架只适用于简化后的SVG。
    在这里插入图片描述
  • VTracer [5] 是一个基于规则的算法,用于将图像转换为SVG。这个3步骤的流水线算法依赖于对图像的分层聚类,将其追踪为向量。首先,像素被转换为路径,然后被简化为多边形。然后,用贝塞尔曲线对多边形进行平滑和拟合近似处理。
  • GPT-4-Vision 是最近由OpenAI发布对一个多模态大语言模型。

评估指标

传统的基于像素的度量标准可能不完全适用于SVG评估,因为背景颜色的主导地位可能会使它们产生偏差。因此,评估指标可以分为三类:

  • Pixel-based 指标:Mean Squared Error (MSE) 和 Structural Similarity Index (SSIM)
  • Vector-based 指标:作者利用点云文献中改编的Chamfer Distance(CD)作为度量标准[6]。这涉及将每个SVG离散化为一组点,通过在规律的间隔处对路径进行采样来实现。CD度量了两个SVG中对应点之间的平均最近点距离,提供了相似性的定量度量。较小的CD表示两个SVG更相似,而较大的距离表明它们更不同。给定两个SVGs s 1 s_{1} s1 s 2 s_{2} s2,在2D中定义为一组点 p 1 ∈ s 1 p1 ∈ s1 p1s1 p 2 ∈ s 2 p2 ∈ s2 p2s2,CD定义为: c ( s 1 , s 2 ) = 1 ∣ s 1 ∣ ∑ p 1 ∈ s 1 min ⁡ p 2 ∈ s 2 ∣ ∣ p 1 − p 2 ∣ ∣ 2 2 + 1 ∣ s 2 ∣ ∑ p 2 ∈ s 2 min ⁡ p 2 ∈ s 1 ∣ ∣ p 2 − p 1 ∣ ∣ 2 2 c(s_{1},s_{2})=\frac{1}{|s_{1}|}\sum\limits_{p_{1}\in s_{1}}\operatorname*{min}\limits_{p_{2}\in s_{2}}||p_{1}-p_{2}||_{2}^{2}+\frac{1}{|s_{2}|}\sum\limits_{p_{2}\in s_{2}}\operatorname*{min}\limits_{p_{2}\in s_{1}}||p_{2}-p_{1}||_{2}^{2} c(s1,s2)=s11p1s1p2s2min∣∣p1p222+s21p2s2p2s1min∣∣p2p122 其中 ∣ s i ∣ |s_{i}| si是集合 s i s_{i} si的基数,而 ∥ . ∥ 2 2 ∥.∥_{2}^2 ∥.22是平方欧几里得范数。
  • Perceptual-based 指标:Learned Perceptual Image Patch Similarity (LPIPS)

对比实验

实验展示了在SVG-Stack上的预训练效果以及在其他数据集上的微调效果,以下表格和图片分别为定量和定性的对比。所有实验是在 4 张 A100 80GB GPUs 上完成的。使用批量大小为2,梯度累积步数为8步,学习率为 5 × 1 0 − 4 5 × 10^{-4} 5×104 进行训练。在SVG-Stack上使用AdamW优化器进行训练的模型大约需要 5 天

在这里插入图片描述 在这里插入图片描述

消融实验

消融实验主要验证两件事:(1)Visual Encoder 该选哪个,证明 CLIP 的效果最好,(2)证明数据增强和 SVG-Stack 的预训练是有作用的。
在这里插入图片描述
在这里插入图片描述
1)数据增强:
作者引入了几种数据增强操作,旨在对SVG代码进行微小修改并在训练过程中将其栅格化以获得新样本。包括旋转、颜色噪声和曲线噪声。作者在包含较少样本的数据集上评估了这种设置,即SVG-Emoji和SVG-Icons,因为另外两个数据集足够大,不会过拟合。结果显示在表6中。这些增强操作都使得两个数据集的性能有所提升。我们看到SVG-Emoji的提升效果明显,因为其训练数据量有限。

2)SVG-Stack Pre-train:
在SVG-Stack上进行预训练对于具有少量数据的下游数据集非常有益。表6显示了不同数据集上所有指标的提升。从定性上来看,我们也可以看到预训练有助于模型从图像中识别微妙的细节。对于SVG-Emoji来说很需要预训练,因为由于其数据量有限,没有预训练会导致过拟合。正如图7所示,该模型依赖于颜色和形状来生成SVG。

在这里插入图片描述

[1] A learned representation for scalable vector graphics. In Proceedings of the IEEE/CVF International Conference on Computer Vision, pages 7930–7939, 2019.
[2] Deepsvg: A hierarchical generative network for vector graphics animation. Advances in Neural Information Processing Systems, 33:16351–16361, 2020.
[3] The stack: 3 tb of permissively licensed source code. arXiv preprint arXiv:2211.15533, 2022.
[4] Im2vec: Synthesizing vector graphics without vector supervision. (CVPR 2021)
[5] VTracer. https://www.visioncortex.org/vtracer-docs
[6] Density-aware chamfer distance as a comprehensive metric for point cloud completion.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值