Vary
为 LVLM 按需构建专属视觉词汇,ECCV 2024 学术顶会收录
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为 LVLM 按需构建专属视觉词汇,ECCV 2024 学术顶会收录
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Vary 项目官方 Logo
想象一下,你让一个大语言模型看一张包含密集文字的扫描件——表格、公式、手写批注混杂在一起。它能读懂吗?
当前主流多模态大模型(LVLM)普遍依赖 CLIP 作为视觉编码器。CLIP 的视觉特征是在几亿张自然图像-文本对上学到的,面对高分辨率文档、图表、结构化信息时,往往力不从心。CLIP 的"词汇表"是固定的,无法按任务需求扩展。
Vary 就是来解决这个问题的:由中国科学院大学(UCAS)团队提出,2024 年发表于计算机视觉顶会 ECCV,核心思想是为 LVLM 按需构建专属视觉词汇,让模型在特定视觉任务上拥有更丰富、更适配的表征能力。
Vary 的代码库基于 LLaVA(Large Language and Vision Assistant)构建,继承了 LLaVA 的经典架构——视觉编码器(Vision Encoder)+ 投影层(Projection)+ 大语言模型(LLM)。
但 Vary 的核心创新在于独立从头训练了一个新的视觉词汇网络(Vision Vocabulary),而非直接复用 CLIP。具体来说:
该方法在文档理解(DocVQA)、图表理解(ChartQA)等任务上显著超越了直接使用 CLIP 的基线方法。
Vary 支持两种视觉编码器路径:
| 编码器 | 参数量 | 适用场景 |
|---|---|---|
| CLIP-VIT-L-14 | ~304M | 通用图文对齐(现成可用) |
| 自定义 ViT | 可变 | 任务专属视觉词汇(需从头训练) |
Vary 的官方版本使用 Qwen-7B 作为 LLM 后端。Qwen 是阿里巴巴通义实验室开源的大模型,中英文能力均衡,是国内开源 LVLM 的热门基座选择。此外也支持 OPT-125M(Vary-tiny 版本)。
训练代码基于 DeepSpeed ZeRO-2 分布式训练框架,支持单机多卡和多机多卡场景。训练精度为 bf16,配合 Flash Attention 加速注意力计算。
Vary/
├── README.md # 项目说明文档
├── Vary_paper.pdf # 论文 PDF
├── assets/
│ ├── logo.jpg # 项目 Logo
│ └── vary.png # 架构图
└── Vary-master/
├── pyproject.toml # Python 包配置
├── vary/
│ ├── model/ # 模型定义
│ ├── demo/ # 推理脚本
│ │ └── run_qwen_vary.py # Qwen+Vary 推理入口
│ ├── train/ # 训练脚本(支持DeepSpeed)
│ ├── data/ # 数据处理
│ └── utils/ # 工具函数
└── zero_config/
└── zero2.json # DeepSpeed ZeRO-2 配置
Vary 提供了清晰的安装流程,但硬件门槛较高:
conda create -n vary python=3.10 -y
conda activate vary
pip install -e .
pip install flash-attn --no-build-isolation
这是最难的部分——Vary 官方未公开开放下载模型权重,需要联系论文通讯作者(weihaoran18@mails.ucas.ac.cn)申请授权后才能获取。这对于想要快速复现或测试的研究者来说是一个显著障碍。
CLIP-VIT-L 部分可从 HuggingFace 直接下载:
git clone https://huggingface.co/openai/clip-vit-large-patch14
python vary/demo/run_qwen_vary.py \
--model-name /vary/model/path/ \
--image-file /an/image/file.png
纯命令行调用,无 Web 界面,对非技术用户不够友好。
如果你有自己的文档/图表数据集,可以基于 Vary 代码库训练专属视觉词汇:
deepspeed Vary/train/train_qwen_vary.py \
--deepspeed Vary/zero_config/zero2.json \
--model_name_or_path /Qwen-7B/path/ \
--datasets your_data \
--bf16 --gradient_checkpointing
Vary 团队围绕核心方法构建了完整的模型家族:
| 模型 | 基座 | 参数量 | 特点 |
|---|---|---|---|
| Vary-base | Qwen-7B | ~8B | 官方主模型,文档理解强 |
| Vary-tiny | OPT-125M | ~125M | 轻量版,适合边缘部署 |
| Vary-toy | - | 小型 | 快速体验版 |
| GOT-OCR2.0 | - | ~580M | 端侧光学字符识别,统一OCR |
| OneChart | - | - | 图表解析,ACM MM 2024 Oral |
| Fox | - | - | 多页PDF理解(支持8页) |
其中 GOT-OCR2.0 是作者后续开发的 OCR 专项模型,在 GitHub 上同样获得了大量关注。
Vary 的模型权重没有公开下载链接,需要邮件联系作者。这一限制让大量想快速验证效果的研究者望而却步。相比之下,LLaVA、MiniGPT-4 等同期工作均直接开放了权重下载。
项目不提供 Dockerfile 或 docker-compose.yml,无法快速构建可复现的运行环境。相比之下,OpenGVLab 的 InternVL 等项目提供了完整的 Docker 支持。
只有命令行推理脚本,缺少 Gradio/Streamlit 等 web 界面,降低了非技术用户的可及性。
完整 Vary-base 的训练需要 DeepSpeed + 多卡 A100 集群,普通人无法复现。Vary-tiny 相对友好但效果有限。
Vary 的核心贡献在于提出了**"按需构建视觉词汇"**这一范式,而非仅仅是又一个多模态模型。这一思想启发了后续大量工作:
从 GitHub 趋势来看,Vary 团队持续活跃:论文发表后相继开源了 Vary-toy、GOT-OCR2.0、OneChart 等衍生项目,形成了有一定影响力的"Vary 家族"。
| 维度 | 评价 |
|---|---|
| 创新性 | 五星 - 提出视觉词汇扩容新范式 |
| 工程完整性 | 三星 - 核心代码完整,文档清晰 |
| 可复现性 | 两星 - 权重不开放,门槛高 |
| 部署友好度 | 两星 - 无容器化,无Web界面 |
| 学术价值 | 五星 - ECCV 2024,顶会认可 |
适合人群:有 GPU 资源、愿意联系作者获取权重、对文档/图表理解有专项需求的研究者。
不适合:想快速体验、无 GPU 硬件、或需要开箱即用产品的用户。