StarVector
视觉与图像生成

StarVector

StarVector 是一个用于生成高质量可缩放矢量图形(SVG)代码的基础模型。它采用先进的多模态架构,能够处理图像和文本输入,并将矢量化任务视为代码生成问题。StarVector 在图像到 SVG 和文本到 SVG 的生成方面均表现出色,尤其擅长处理复杂的 SVG 元素,适用于图标、徽标和技术图表等多种应用场景。

快点收藏起来

什么是 StarVector

StarVector 是一个开创性的基础模型,专门用于生成可缩放矢量图形(Scalable Vector Graphics, SVG)代码。它通过将矢量化过程视为代码生成任务,从而能够以前所未有的精度和复杂性处理视觉和文本输入。StarVector 的独特之处在于其先进的多模态架构,该架构能够精确地理解和整合图像与文本信息,生成包含圆形、多边形、文本元素和复杂路径等丰富 SVG 语法的代码。这一创新方法使得 StarVector 在图像矢量化和文本引导的 SVG 创建方面都表现出色,超越了以往基于曲线的矢量化方法,能够更好地捕捉图像的语义信息并生成更紧凑、更精确的 SVG 输出。StarVector 的强大能力使其成为设计、Web 开发和数字艺术等领域中自动化图形设计工作流程和改进可缩放图形的关键技术。

starvector

StarVector 的功能

StarVector 拥有多项先进功能,使其在 SVG 生成领域处于领先地位:

  • 先进的多模态架构: StarVector 能够精确地处理视觉和文本信息,实现复杂的图像矢量化和文本引导的 SVG 创建。
  • 卓越的复杂性处理能力: 能够直接从图像中识别并生成复杂的 SVG 元素,如文本和复杂路径,这在以前的方法中往往难以实现。
  • 强大的数据基础: StarVector 基于 SVG-Stack 数据集进行训练,该数据集包含超过 200 万个精心挑选的 SVG 样本,确保了模型在各种图形风格上的稳定性能。
  • 领先的性能: 在文本到 SVG 和图像到 SVG 的生成任务中,StarVector 的性能均优于现有的其他方法。
  • 图像到 SVG(Image-to-SVG): 模型能够理解图像中的视觉元素,并将其转化为结构化的矢量图形代码。尤其擅长矢量化图标、徽标、技术图表和图形等。
  • 文本到 SVG(Text-to-SVG): 除了图像矢量化,StarVector 还可以根据文本指令直接生成 SVG 代码,为创意设计提供了更大的灵活性。
  • 可编辑和可缩放的输出: StarVector 生成的 SVG 代码是完全可编辑的,并且由于矢量图形的特性,可以无损地进行任意缩放。
  • 利用 SVG 原始元素: 模型能够有效地利用 SVG 的各种原始元素,如圆形、多边形、路径等,生成简洁而精确的 SVG 代码。
  • 与 StarCoder 结合: StarVector 的架构借鉴了 StarCoder 的工作,将代码生成的研究与 SVG 生成相结合。
  • 推理优化: 在生成过程中,StarVector 对温度、长度惩罚和 logit bias 等超参数敏感,可以通过调整这些参数来优化生成的 SVG 代码的质量,并鼓励生成有效的 SVG 输出。
  • 生成质量提升: 通过生成多个具有不同参数的样本,并使用 DinoScore 等指标进行排序,从而进一步提高生成 SVG 的质量。

starvector-teaser

如何使用/快速开始

要开始使用 StarVector 进行 SVG 生成,您可以按照以下步骤进行操作:

  1. 访问 StarVector 网站或 GitHub 仓库: 访问 StarVector 官方网站 或其 GitHub 仓库 以获取最新的信息和代码。
  2. 安装依赖: 根据 GitHub 仓库中的说明,安装所需的依赖库。这通常包括 PyTorch 和 Transformers 等 Python 库。您可能还需要安装 starvector 库以使用图像栅格化功能。
  3. 加载预训练模型: StarVector 提供了预训练的模型,您可以使用 Transformers 库轻松加载这些模型。例如,可以使用以下代码加载 80 亿参数的图像到 SVG 模型:
    from transformers import AutoModelForCausalLM, AutoTokenizer, AutoProcessor
    import torch
    model_name = "starvector/starvector-8b-im2svg"
    starvector = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
    processor = AutoProcessor.from_pretrained(model_name)
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    
  4. 准备输入数据: 对于图像到 SVG 的任务,您需要准备输入的图像文件。对于文本到 SVG 的任务,您需要准备描述所需图形的文本指令。
  5. 处理输入数据: 使用加载的 Processor 处理输入图像或文本。
  6. 生成 SVG 代码: 将处理后的输入传递给模型以生成 SVG 代码。
  7. 后处理和可视化(可选): 您可以使用 CairoSVG 等工具将生成的 SVG 代码栅格化为图像进行预览。

StarVector 的 GitHub 仓库中提供了更详细的代码示例和使用说明,包括如何进行模型训练和评估。请注意,StarVector 模型目前主要适用于矢量化图标、徽标、技术图表和图形等,可能不适用于自然图像或插图。您可以探索仓库中的脚本和文档,了解如何使用不同的模型变体(如 10 亿参数和 80 亿参数的模型)以及如何针对特定的任务进行微调。此外,StarVector 团队还在 Hugging Face 上提供了模型 checkpoints 和数据集,方便用户使用和研究。

相关导航