腾讯+北京大学联手攻克AI绘制矢量图的“字符地狱”难题——更小的模型如何用更少的训练实现更好的效果

这篇研究来自腾讯视觉计算团队与北京大学视觉计算研究组的联合工作,于2026年4月以预印本形式发布,论文编号为arXiv:2604.05072。

平时刷手机时,你一定见过那种无论放多大都依然清晰锐利、不会出现锯齿的图标或插图。与普通的照片不同,这类图形背后并没有保存一个个像素点,而是用一段类似编程代码的文字来描述图形:从哪里画一条线、弧度是多少、颜色是什么。这就是SVG矢量图,它的本质是一段"绘图指令",就像厨师手里的菜谱,而不是一道已经做好的菜。

正是因为SVG本质上是代码,近年来的研究者们开始尝试用大语言模型来自动生成它——就像让AI写作文一样,让AI"写"出这段绘图指令。理论上听起来很美好,但现实中这条路走得并不顺畅。腾讯和北京大学的研究团队发现,这条路上有一个根本性的拦路虎,而他们为此提出的解决方案——HiVG,既实用又优雅。

**一、 绘图指令里藏着什么"陷阱"?**

要理解这个问题,先从AI语言模型是如何处理文字说起。通常情况下,模型读入的并不是一个个完整的单词,而是更小的单元,叫做"词元"(token)。英文里,"playing"可能被拆成"play"和"ing"两个词元;而数字"100"则很可能被拆成"1"、"0"、"0"三个独立的词元。

现在,把这个逻辑套用到SVG代码上,问题就出现了。一段描述一条简单曲线的SVG代码大概长这样:`M 100,200 c 20,-20 50,30 80,0`。这段代码在通用语言模型眼中,不过是一堆零散的字符——"M"是一个词元,"1"是一个,"0"是一个,"0"又是一个,逗号是一个……一个简单的坐标"100"被活生生撕裂成了三个毫无关联的符号。

这就带来了两个严重的后果。第一,模型在生成坐标时,根本感知不到"100"和"99"在空间上是相邻的,对它来说这只是两串不同的字符序列,就像"100"和"猫"一样没什么关联,于是模型很容易生成一些位置完全错乱的坐标——业界把这个现象称为"坐标幻觉"。第二,一段逻辑上很简单的绘图指令,经过这种逐字符拆解之后,会产生极其冗长的词元序列。一个普通图标,展开之后可能长达数百甚至上千个词元,而模型能处理的上下文长度是有限的,就像一个人的工作记忆有限,塞太多内容进去就会出错或遗忘。

问题的根源清晰了:现有的AI语言模型用处理自然语言的方式来处理绘图指令,这两者的结构根本对不上号。自然语言中,一个词通常对应一个完整的语义单元;而SVG代码中,一个有意义的"绘图动作"(比如"从这个点出发,沿着某条曲线到达那个点")却被拆散成十几个毫无语义的字符碎片。

**二、 菜谱革命:重新定义"绘图的基本单位"**

腾讯和北京大学的研究团队提出的解决思路,核心在于重新设计SVG的"词汇表",让AI学习的单位从字符碎片升级为有意义的绘图动作。他们把这套方法称为HiVG,即层级化SVG词元化框架。

这个名字里的"层级化"是关键。团队没有简单地把SVG拆成字符,而是建立了两个层级的表示单位,就像菜谱里既有"食材"又有"步骤组合"——你可以说"加入两克盐"(原子级别),也可以说"炒香葱姜蒜"(组合步骤级别)。

第一个层级叫做原子词元。研究团队把SVG代码中的每一种成分都分配了专属的词汇标签。结构性的元素(比如`<svg>`、`<path>`这类表示"开始一个形状"的标签)有它们自己的词元;绘图命令(比如"移动到某处"、"画一条直线"、"画一段贝塞尔曲线")有专属词元;颜色、透明度等视觉属性有专属词元;而最重要的一点是,所有坐标都被统一量化为离散的整数格,每一个坐标值对应一个独立的坐标词元,彻底告别了把"100"拆成"1-0-0"三个字符的混乱做法。

特别值得关注的是,研究团队还做了一个精妙的设计:除了每条路径的第一个坐标使用绝对位置外,后续所有坐标都改用相对偏移量来表示。这就好比GPS导航里,你可以说"目的地是北纬39度"(绝对坐标),也可以说"向前走500米,右转再走200米"(相对坐标)。后者的好处是,相似的图形动作在不同位置的图标里会产生相同的数字序列,这大大增加了不同SVG文件之间的"公共词汇",为下一步的压缩做好了准备。

第二个层级叫做片段词元(Segment Token),这才是整个方法最核心的创新。研究团队观察到,SVG绘图命令有一个天然的结构:每一种命令都有固定数量的参数。比如"画一条直线到某处"需要两个坐标参数,"画一段三次贝塞尔曲线"需要六个坐标参数,这是由SVG的语法规范硬性规定的。也就是说,"一个绘图命令加上它所有必需的参数"构成了一个完整的、可独立执行的几何单元,研究团队把这样的单元叫做"片段"。

既然有了这个天然的结构,为什么不直接把整个片段压缩成一个单一的词元呢?研究团队设计了一套叫做"结构片段学习"(Structure Segment Learning,简称SSL)的方法,用来从大量真实SVG数据中找出最频繁出现的片段组合,然后把这些高频组合打包成一个个复合词元。

这个学习过程的原理和语言模型训练时常用的"字节对编码"(BPE)很像。简单来说,就是从大量SVG文件里统计哪些相邻的词元组合出现频率最高,把最高频的组合合并成一个新词元,然后重复这个过程,一步步构建出一个"高频绘图动作词典"。经过这个过程,一个"标准的椭圆弧"、一个"正交直角转角"、一段"常见的贝塞尔曲线",都获得了自己专属的单一词元标签。

值得强调的是,研究团队在合并时设置了严格的约束:只有完整的、可以独立执行的几何片段才能被合并,绝不允许把一个命令的参数分给两个不同的命令。这就保证了每一个片段词元都是语法合法、几何完整的基本单元,不会产生"残缺的绘图指令"。

经过这两级压缩之后,效果非常显著。在腾讯的测试数据中,简单SVG的词元数量从原来的328个压缩到了126个,复杂SVG从2048个压缩到了740个,平均压缩比超过了62%,也就是说序列长度缩短了将近三分之二。

**三、 新词汇怎么"插队"进旧字典?——一个精心设计的入学考试**

光有新的词汇还不够。模型原本已经训练好了,有自己的理解体系,现在突然要往里塞进几千个全新的词元,就好比一个已经毕业的学生突然要学几千个新单词,如果初始化方式不对,这些新词会和已有知识体系格格不入,导致训练初期极度不稳定。

常见的处理方式有两种:一种是随机初始化(给新词元分配一个随机的"数学向量"),另一种是用整个词汇表的平均向量来初始化。这两种方式都忽略了SVG词元内部丰富的结构信息。

研究团队为此设计了一套叫做"层级均值-噪声初始化"(Hierarchical Mean-Noise,简称HMN)的策略。每一个新词元的初始向量由三到四个部分叠加而成,各部分按权重混合。

最基础的部分是原始词汇表的平均向量加上一点随机扰动,权重最大(0.8),这保证了新词元和模型已有的知识体系处于大致相同的"数学空间"里,不会一开始就偏离太远。第二部分是语义描述嵌入:研究团队为每个词元都写了一段自然语言描述,比如"带两个控制点和一个终点的贝塞尔曲线",然后用模型自己来理解这段描述,把理解结果作为词元的语义向量,权重为0.1。这让模型从一开始就对每个词元的"意思"有一个粗略的认知。

第三部分专门针对坐标词元,叫做数值嵌入。坐标词元最大的特点是它代表一个有序的数值,坐标10和坐标11在空间上应该比坐标10和坐标500更接近,但随机初始化完全感知不到这种顺序关系。研究团队的做法是把每个坐标值(归一化到0到1之间)通过一组"高斯径向基函数加多项式特征"的组合来编码,这种编码方式同时捕捉了数值的局部平滑性(相邻数值的编码相似)和全局排序关系(编码本身隐含大小关系)。然后再把这个编码通过一个固定的随机投影矩阵(基于"Johnson-Lindenstrauss变换"的思路)映射到模型的维度空间,权重为0.08。

这样一来,每个坐标词元从训练的第一天起,就已经知道自己代表的是一个空间位置,而且知道自己和相邻坐标的关系——这对于让模型学会"坐标是连续空间里的点而非孤立符号"至关重要。

**四、 从幼儿园到大学:三阶段渐进式课程训练**

把新的词汇表植入模型之后,训练过程本身也需要精心设计。研究团队采用了一个被称为"课程训练"的策略,其核心思想是:先让模型学简单的,再让它学复杂的,就像学生先学加减法再学微积分。

第一阶段被称为"嵌入对齐"。这个阶段只用原子词元,训练数据是长度中等的SVG序列(词元数在30到326之间)。目的是让新引入的SVG词元逐渐融入模型已有的"数学空间",同时让模型学会处理局部的几何过渡——比如理解"先画一条线,接着画一个弧"这样简单的动作序列。

第二阶段是"结构抽象"。这个阶段引入片段词元,训练数据的长度增加到326到605个词元之间。此时模型的学习重心从"逐步认识每个原始动作"转向"理解可复用的几何单元",就像学生从认识每一个音符,进步到能够识别和演奏完整的音乐短句。

第三阶段是"全局构图"。训练数据扩展到605到1000个词元的复杂SVG程序,模型开始学习如何在整个图形层面保持布局的一致性,理解不同路径之间的长距离关系——比如一个图标里不同元素之间的对称、对齐和比例关系。

三个阶段并不是相互独立的,每个新阶段都在前一阶段的基础上扩展训练数据,而不是推倒重来,这让模型在获得新能力的同时,不会遗忘已经学会的基础技能。

**五、 在真实数据上的测试:数字背后的故事**

研究团队用了相当大规模的数据来训练和验证这套方法。训练语料库由三个开源SVG数据集合并去重后得到,共包含约245万个独特SVG样本,覆盖图标、表情符号、标志、界面元素等多种类型。

在使用这些数据之前,研究团队对原始SVG进行了严格的预处理流程。首先是数据清洗,删除格式错误、无法渲染的内容,去除`<image>`、`<script>`等不适当的元素,把CSS样式内联到元素属性里,把颜色统一转换为十六进制格式。然后是坐标变换,把所有的`transform`属性"烘焙"进实际坐标,展开所有的`<use>`引用,最后把所有图形统一归一化到784×784的画布上。最后是坐标量化,把浮点坐标取整,把绝对坐标转换为相对坐标,并对边界外的路径进行裁剪。

最终用于训练的基础模型是Qwen2.5-VL-3B-Instruct,这是一个参数量只有30亿的多模态语言模型,视觉编码器和多模态投影层在训练中保持冻结,只有语言模型主体和新增的SVG词元嵌入层参与更新。训练使用AdamW优化器,学习率为1e-5,训练2个完整轮次。

评测结果覆盖了"图片转SVG"和"文字转SVG"两个任务,使用了多种互补的指标。在结构有效性方面,研究团队记录了渲染成功率、平均词元数、路径数和命令数。在语义和视觉质量方面,对于文字转SVG任务,研究团队测量了生成图像和文字描述之间的CLIP相似度;对于图片转SVG任务,还额外测量了SSIM(结构相似性)和LPIPS(感知相似性,数值越低代表越相似)。多样性通过计算生成样本之间的DINOv2特征余弦相似度来衡量,相似度越低说明生成结果越丰富多样。

在与其他方法的横向对比中,HiVG-3B面对的竞争对手包括GPT-5.2、Gemini-2.5-pro、Claude-Sonnet-4.5、Qwen3.5-Plus等大型商业模型,以及OmniSVG-8B、InternSVG-8B、SVGen-7B等专门针对SVG任务训练的模型。

图片转SVG任务的结果尤为突出。HiVG-3B在SSIM指标上得到0.896分,相比第二名的GPT-5.2(0.780分)高出了约15个百分点;LPIPS方面,HiVG-3B得到0.114,远低于GPT-5.2的0.205,意味着感知失真更小;CLIP-S相似度达到0.957,同样明显领先。这些数字背后的含义是:当你给HiVG-3B看一个原始图标并要求它生成对应的SVG时,还原出来的图形在结构和视觉效果上都非常接近原图。

文字转SVG任务的优势相对平衡一些,但HiVG-3B在PickScore(人类偏好预测得分)和HPS(人类偏好评分v2)等衡量"人类审美偏好"的指标上表现具有竞争力,同时CLIP文本对齐分数高于所有专门SVG模型。

一个特别值得关注的发现是,HiVG-3B在生成包含文字内容的SVG时表现出了异常强的能力,无论是英文字母、汉字还是各种标识文字,生成效果都明显优于其他方法。这与层级化词元化带来的序列压缩有直接关联:压缩后的序列让模型有足够的"注意力带宽"来处理文字这类需要精确几何的复杂内容。

**六、 真人评估:让专业用户来当裁判**

自动化评分指标再全面,也只是在测量图像层面的相似性,而对于SVG来说,还有一个同样重要的维度:生成的代码结构是否合理,能不能在专业软件里方便地编辑?

研究团队为此招募了8位专业SVG从业者作为评测者,从60张测试图片生成的SVG结果里,以完全随机化、匿名化的方式进行两轮评估。

第一轮是两两偏好对比:评测者同时看到原始图片和两个不同方法生成的SVG渲染结果,选择哪个更好地还原了原图(允许选平局)。HiVG-3B对阵SVGen-7B、OmniSVG-8B、InternSVG-8B、Qwen3.5-Plus、Gemini-2.5-pro、GPT-5.2和Claude-Sonnet-4.5七个方法,胜率在58.9%到70.8%之间,在所有参与比较的方法中排名第一。

第二轮是在Adobe Illustrator里打开SVG文件进行可用性评分。评测者从四个维度对每个方法生成的SVG打1到5分:语义分层(路径组是否对应有意义的图形部件)、可编辑性(能否方便地选取和修改局部元素)、冗余控制(是否有过多无意义的路径碎片)以及整体代码可用性。HiVG-3B在所有四个维度上均拿到了最高分,整体可用性得分为4.06,而竞争对手中最好的GPT-5.2得分为3.47。这个差距说明HiVG-3B生成的SVG不仅视觉上更准确,代码结构也更贴近专业设计师的工作习惯。

**七、 拆解每个组件的贡献:消融实验**

为了验证每个设计决策的有效性,研究团队还设计了一系列对照实验,系统地"拆掉"某个组件来看性能下降多少。

当拿完整的HiVG系统和"直接用原始SVG字符串训练"的基线系统对比时,差异非常明显。在图片转SVG任务上,SSIM从0.301跃升至0.896(提升了约197%),LPIPS从0.396下降至0.114(改善了39%),CLIP-S从0.797上升至0.957。这组数据直接证明了"把SVG建模为结构化可执行程序"这个核心理念的价值。

结构片段学习的训练规模实验显示,用5万个、50万个和150万个SVG样本分别训练片段词汇表,规模越大效果越好,但提升幅度递减:从5万到50万样本的提升幅度明显大于从50万到150万的提升幅度。

词元初始化策略的对比实验测试了七种不同的初始化方案,从最简单的随机初始化,到逐步加入均值锚点、语义描述嵌入、数值编码,直到完整的HMN方案(J-L版本)。结果显示,每一个组件的加入都带来了稳定的性能提升,完整方案在所有指标上均优于任何简化版本。特别是数值编码的加入,让SSIM从0.550进一步提升到0.720,效果非常显著。

三阶段课程训练的实验则清晰地展示了渐进式学习的价值:如果跳过前面阶段直接从高难度数据开始训练,模型在长序列SVG上的性能会明显下降;而经过完整三阶段训练的模型,在简单SVG上保持了高精度的同时,在复杂SVG上的表现也得到了显著提升。

研究团队还对片段学习过程中发现的噪声模式做了详细分析。在原始SVG数据里,有相当多"画了等于没画"的冗余命令,比如移动距离为零的直线命令、半径为零的椭圆弧命令、各参数都为零的贝塞尔曲线等。这些命令在渲染时看不出来,但会大量占用词元序列的长度。研究团队统计发现,在三种不同规模的训练集上,每个样本平均大约有0.86个这样的冗余命令被清除,且这个比例在不同数据集规模下非常稳定,说明这是SVG数据本身固有的质量问题,而非数据集的偶然特点。

此外,对学到的片段词元的分析发现,片段的原子词元长度中位数稳定在约9个词元,说明SSL学到的是复杂度相对均匀的几何单元,而不是有些过于简单、有些过于复杂的不均衡组合。在高频片段(出现频率最高的前50个)中,椭圆弧(占24%)和平滑曲线(占22%)最为突出,说明这些是SVG图形里最常见的可复用几何基元。

**八、 一个30亿参数的模型为何能赢过千亿参数的商业大模型?**

这个问题问到了这项研究最有意思的地方。HiVG-3B的参数量只有30亿,远小于GPT-5.2、Gemini-2.5-pro等数百亿乃至更大规模的商业模型,但在图片转SVG任务上却取得了全面领先的成绩。

答案在于信息密度。大型商业模型虽然有强大的通用能力,但在处理SVG时面临同样的基础问题:词元序列太长,信息太分散,注意力机制不得不在大量无意义的字符碎片之间来回游走。HiVG-3B通过层级化词元化,把同样的信息压缩成了更短的序列,让每一个词元都携带了更丰富的几何语义,使得相对有限的模型容量得到了更高效的利用。

这也体现在训练效率上。实验表明,在训练数据量大约是基线方法2.7倍的情况下,基线方法才能追上HiVG在较少训练数据下已经达到的性能水平——换句话说,用同样的训练预算,HiVG能达到更高的性能上限;或者达到同样的性能,HiVG只需要大约三分之一的训练成本。

归根结底,这项研究传递了一个清晰的信息:对于结构化的领域特定数据,精心设计的表示方式本身就是一种竞争力,它的价值有时候不亚于堆砌更多的模型参数和训练数据。矢量图的本质是有结构的几何语言,用同样有结构的词汇来学习它,要比用通用字符流去拟合它效率高得多。

这项发现对整个结构化代码生成领域都有启示意义——无论是CAD设计文件、HTML布局代码,还是其他任何有内在几何或逻辑结构的程序性语言,都可能受益于类似的表示层设计思路。研究团队也在论文末尾提出了未来的方向:将这套框架扩展到其他结构化图形格式,并探索与可微渲染目标函数的结合。

---

Q&A

Q1:HiVG的"片段词元"和普通SVG词元有什么具体区别?

A:普通的SVG词元化方式会把一段绘图命令拆成很多碎片,比如"画一段贝塞尔曲线,终点坐标是100,200"会被拆成十几个独立的字符或数字符号,彼此之间没有语义联系。HiVG的片段词元则把"一个完整的绘图命令加上它所有必需的坐标参数"打包成一个单一词元,比如"标准椭圆弧"或"正交直角转角"都有专属的单一词元。这样一来,模型处理的每一个词元都是一个完整可执行的几何动作,序列长度也因此缩短了约63%。

Q2:HiVG生成的SVG为什么在Adobe Illustrator里编辑起来更方便?

A:传统方法生成的SVG,路径和路径之间的拆分往往很随意,大量冗余路径碎片混在一起,在设计软件里很难对应到视觉上有意义的图形部件。HiVG由于在词元层面就对几何结构有了清晰的认知,生成的SVG路径组织更接近人类设计师的习惯:每条路径倾向于对应一个完整的视觉元素,冗余命令也被系统性地清除,因此专业评测者在可用性打分上给了4.06分,明显高于其他方法。

Q3:HiVG的层级均值噪声初始化方法是解决什么问题的?

A:当把新的SVG专用词元加入已经训练好的语言模型时,这些新词元的初始向量如果设置不当,会和模型已有的知识体系格格不入,导致训练初期非常不稳定。HMN初始化通过把原词汇表的均值向量、自然语言语义描述的编码以及数值位置编码按权重叠加,让每个新词元一开始就"知道"自己大概在模型的哪个语义区域,坐标类词元还额外知道自己代表的数值大小和空间顺序关系,从而大大减少了训练初期的混乱程度,让模型更快地学会处理结构化的SVG几何信息。