StarVector:图像秒变矢量代码!开源多模态模型让SVG生成告别手绘

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🎨 「设计师集体失业?开源模型把PSD转SVG变成填空题」

大家好,我是蚝油菜花。你是否也经历过这些设计至暗时刻------

  • 👉 甲方要矢量图却只给JPG,钢笔工具抠到视网膜脱落
  • 👉 SVG代码手写3小时,浏览器预览发现路径节点溢出了
  • 👉 用AI生成矢量图,结果导出后渐变填充全变马赛克...

今天要拯救设计圈的 StarVector ,正在重新定义矢量生成!这个学术天团打造的AI神笔:

  • ✅ 「所见即代码」:上传图片/输入文字,3秒吐标准SVG文件
  • ✅ 智能节点优化:比传统工具减少47%冗余路径,文件体积暴降
  • ✅ 多模态理解王:能同时听懂「LOGO要圆润+科技蓝」的模糊需求

已有UI团队用它1天做完季度ICON库,插画师靠它复活手稿成矢量艺术品------你的设计流水线,是时候注射「AI矢量加速剂」了!

🚀 快速阅读

StarVector是一个开源的多模态视觉语言模型,专注于图像和文本到SVG的转换。

  1. 核心功能:支持图像到SVG和文本到SVG两种生成模式,输出标准可编辑的矢量图形文件
  2. 技术原理:基于StarCoder架构的多模态模型,在包含200万样本的SVG-Stack数据集上训练,采用视觉编码器+语言模型联合处理

StarVector 是什么

StarVector 是开源的多模态视觉语言模型,由ServiceNow Research、Mila -- Quebec AI Institute 和 ETS Montreal 联合开发,专注于将图像和文本转换为可缩放矢量图形(SVG)代码。模型采用多模态架构,能同时处理图像和文本信息,直接在 SVG 代码空间中操作,生成标准的、可编辑的 SVG 文件。

StarVector 在包含超过 200 万个 SVG 样本的 SVG-Stack 数据集上训练,提供 StarVector-1B 和 StarVector-8B 两种规模,满足不同需求。相比传统矢量转换工具,它能更好地理解图像语义,生成更紧凑、结构更合理的SVG代码。

StarVector 的主要功能

  • 图像到 SVG 的转换:能将图像直接转换为 SVG 代码,实现图像的矢量化
  • 文本到 SVG 的生成:可以根据文本指令生成相应的 SVG 图形

StarVector 的技术原理

  • 多模态架构:采用视觉编码器提取图像特征,通过适配器映射到语言模型嵌入空间,实现对图像和文本的统一处理
  • 图像编码与视觉标记生成:通过Vision Transformer将图像转换为视觉标记,捕捉形状、颜色等关键特征
  • 语言模型与 SVG 代码生成:基于StarCoder语言模型,通过自回归预测生成SVG代码
  • 大规模数据集训练:在包含200万样本的SVG-Stack数据集上训练,支持多样化任务

如何运行 StarVector:从图像和文本生成可缩放矢量图形代码

StarVector 是一个用于生成可缩放矢量图形(SVG)的多模态视觉-语言模型,支持从图像到 SVG 和从文本到 SVG 的生成任务。下面将指导您如何安装 StarVector、运行其代码生成功能以及进行模型训练和评估:

安装

克隆代码库并创建虚拟环境

bash 复制代码
git clone https://github.com/joanrod/star-vector.git
cd star-vector

conda create -n starvector python=3.11.3 -y
conda activate starvector
pip install --upgrade pip  # 启用 PEP 660 支持
pip install -e .

安装训练所需依赖

bash 复制代码
pip install -e ".[train]"

更新代码库

bash 复制代码
git pull
pip install -e .

快速开始

任务:图像到SVG生成

以下代码展示了如何使用 StarVector 将图像转换为 SVG 代码:

python 复制代码
from PIL import Image
from starvector.model.starvector_arch import StarVectorForCausalLM
from starvector.data.util import process_and_rasterize_svg

# 加载模型
model_name = "starvector/starvector-8b-im2svg"
starvector = StarVectorForCausalLM.from_pretrained(model_name)

# 将模型移到 GPU 并设置为评估模式
starvector.cuda()
starvector.eval()

# 加载输入图像
image_pil = Image.open('assets/examples/sample-0.png')
image = starvector.process_images([image_pil])[0].cuda()
batch = {"image": image}

# 生成 SVG 代码
raw_svg = starvector.generate_im2svg(batch, max_length=1000)[0]
svg, raster_image = process_and_rasterize_svg(raw_svg)

使用 HuggingFace AutoModel

python 复制代码
from PIL import Image
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoProcessor
from starvector.data.util import process_and_rasterize_svg
import torch

# 加载模型
model_name = "starvector/starvector-8b-im2svg"
starvector = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, trust_remote_code=True)
processor = starvector.model.processor
tokenizer = starvector.model.svg_transformer.tokenizer

# 将模型移到 GPU 并设置为评估模式
starvector.cuda()
starvector.eval()

# 加载输入图像
image_pil = Image.open('assets/examples/sample-18.png')

image = processor(image_pil, return_tensors="pt")['pixel_values'].cuda()
if not image.shape[0] == 1:
    image = image.squeeze(0)
batch = {"image": image}

# 生成 SVG 代码
raw_svg = starvector.generate_im2svg(batch, max_length=4000)[0]
svg, raster_image = process_and_rasterize_svg(raw_svg)

训练

确认依赖已安装

bash 复制代码
pip install -e ".[train]"

设置环境变量

bash 复制代码
export HF_HOME=<模型存储路径>
export HF_TOKEN=<您的 HuggingFace 令牌>
export WANDB_API_KEY=<您的 WandB 令牌>
export OUTPUT_DIR=<输出路径>

预训练(第 1 阶段)

StarVector-1B 训练
bash 复制代码
accelerate launch --config_file configs/accelerate/deepspeed-8-gpu.yaml starvector/train/train.py config=configs/models/starvector-1b/im2svg-stack.yaml
StarVector-8B 训练
bash 复制代码
torchrun \
  --nproc-per-node=8 \
  --nnodes=1 \
  starvector/train/train.py \
  config=configs/models/starvector-8b/im2svg-stack.yaml

微调(第 2 阶段)

文本到 SVG 微调
bash 复制代码
# StarVector-1B
accelerate launch --config_file config/accelerate/deepspeed-8-gpu.yaml starvector/train/train.py config=configs/models/starvector-1b/text2svg-stack.yaml

# StarVector-8B
torchrun \
  --nproc-per-node=8 \
  --nnodes=1 \
  starvector/train/train.py \
  config=configs/models/starvector-8b/text2svg-stack.yaml

评估

HuggingFace 生成后端

bash 复制代码
# StarVector-1B 评估
python starvector/validation/validate.py \
config=configs/generation/hf/starvector-1b/im2svg.yaml \
dataset.name=starvector/svg-stack

# StarVector-8B 评估
python starvector/validation/validate.py \
config=configs/generation/hf/starvector-8b/im2svg.yaml \
dataset.name=starvector/svg-stack

演示

启动控制器

bash 复制代码
python -m starvector.serve.controller --host 0.0.0.0 --port 10000

启动 Gradio 服务器

bash 复制代码
python -m starvector.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload --port 7000

启动模型工作节点

bash 复制代码
python -m starvector.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path joanrodai/starvector-1.4b

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

相关推荐
技能咖31 分钟前
2025春招市场迎AI热潮:生成式人工智能(GAI)认证如何重构人才竞争力
人工智能
huhy~38 分钟前
GitHub开源的容器管理面板-Dpanel
开源·github
2301_764441331 小时前
基于BERT的序列到序列(Seq2Seq)模型,生成文本摘要或标题
人工智能·python·深度学习·bert
说私域1 小时前
开源链动2+1模式与AI智能名片赋能的S2B2C共享经济新生态
人工智能·微信·小程序·开源
蹦蹦跳跳真可爱5892 小时前
Python----计算机视觉处理(Opencv:霍夫变换)
人工智能·python·opencv·计算机视觉
livefan2 小时前
英伟达「虚拟轨道+AI调度」专利:开启自动驾驶3.0时代的隐形革命
人工智能·机器学习·自动驾驶
wd2099882 小时前
手绘的思维导图怎么转成电子版思维导图?分享今年刚测试出来的方法
人工智能·powerpoint
魔珐科技2 小时前
专访中兴通讯蒋军:AI数字人驱动企业培训,“内容生产”与“用户体验”双重提升
人工智能·aigc·ai数字人
果冻人工智能2 小时前
Linux 之父把 AI 泡沫喷了个遍:90% 是营销,10% 是现实。
人工智能