Fork me on GitHub

VLM的视觉词汇表扩充(Vary:扩展大型视觉语言模型的视觉词汇量)

下面从“论文结构 → 算法核心 → 关键公式/机制 → 和现有 VLM 的关系”四个层次,把 Vary(Vision Vocabulary Augmentation) 的算法部分彻底拆解。


一、论文整体结构速览

Vary 这篇论文的逻辑其实非常“干净”,核心只有一件事:

CLIP 的视觉词汇不够 → 我们显式扩充视觉词汇表

典型结构是:

  1. Introduction

    • 指出 LVLM 在细粒度视觉任务上的瓶颈
    • 定位问题为:视觉词汇不足(visual vocabulary bottleneck)
  2. Related Work

    • CLIP / LVLM
    • Visual Tokenization
    • OCR / Document Understanding
  3. Method(重点)

    • Visual Vocabulary Augmentation(Vary)
    • 两阶段架构(Vary-tiny / Vary-base)
  4. Experiments

    • DocVQA / ChartQA / OCRBench
    • 消融实验
  5. Analysis

    • 新视觉词是否真的学到“新东西”

我们现在只拆 Method(算法核心)


二、Vary 的问题建模(非常关键)

论文中对问题的正式建模,可以总结成一句话:

现有 LVLM 使用的视觉 token 空间是“冻结且封闭的”,导致细粒度视觉概念成为 OOV(out-of-visual-vocabulary)问题。

这里的“词汇”指的不是文字,而是:

  • CLIP 视觉 encoder 输出的 embedding 分布
  • 这些 embedding ≈ 视觉词表

但问题是:

  • CLIP 的视觉空间是为 自然图像 + 语言对齐 优化的
  • 字符、表格、线条、排版结构 不敏感

👉 所以 Vary 的目标是:

\( \textbf{learn new visual tokens that are complementary to CLIP} \)


三、算法核心一:视觉词汇生成(Vary-tiny)

这是 Vary 最原创、最像 NLP 扩词表的部分。


3.1 关键思想

把“视觉词”当成可以被生成、被学习、被扩展的对象

在 NLP 中:

  • token 是离散的
  • vocab 可以 grow

Vary 说:
👉 视觉 embedding 也可以 grow


3.2 Vary-tiny:视觉词生成器

架构组成

Vary-tiny 主要包含:

  1. 视觉 backbone(如 ViTDet)
  2. 视觉词汇网络(Visual Vocabulary Network)
  3. 轻量语言模型(如 OPT-125M)

结构直觉是:

Image
 ↓
Dense Visual Features
 ↓
Visual Vocabulary Generator
 ↓
New Visual Tokens

3.3 “生成视觉词”是什么意思?

这里非常重要,很多人第一次会误解。

不是生成文字标签,而是生成 embedding 向量

\( \mathbf{z}_i \in \mathbb{R}^d \)

这些 \((\mathbf{z}_i)\)

  • 不在 CLIP embedding 分布中
  • 专门覆盖 CLIP 弱的区域(如字符、边缘、布局)

你可以理解为:

在视觉 embedding 空间里,长出一批“新方向”


3.4 生成机制(核心算法点)

论文使用的是一种 自回归生成 + 对齐约束

  • 将视觉词当成一个“序列”
  • 通过语言模型预测下一个视觉词 embedding
  • 用视觉-语言任务反向约束这些 embedding 是否有用

直觉类比:

像用 GPT 生成新 subword,但 loss 来自下游理解任务


3.5 这一阶段学到了什么?

Vary-tiny 学到的是:

  • 一套新的视觉原子单元

  • 它们对:

    • 文本边界
    • 字符形状
    • 表格线条
    • 密集结构
      更敏感

这一步相当于:

给 VLM 扩了“视觉词表”


四、算法核心二:视觉词汇融合(Vary-base)

有了新词,还不够,关键是怎么用


4.1 核心设计原则

论文非常明确:

不替换 CLIP,只做增量增强(augmentation)

原因很现实:

  • CLIP 的通用视觉能力非常强
  • 直接替换 = 灾难

4.2 双视觉词汇并行结构

在 Vary-base 中,图像会走两条路:

Image
 ├─ CLIP Visual Encoder → CLIP Tokens
 └─ Vary Visual Encoder → New Visual Tokens
            ↓
      Token Fusion
            ↓
          LLM

也就是说:

  • 原始视觉词汇(通用)
  • 新视觉词汇(细粒度)

并行输入 + 融合


4.3 Token 融合方式(关键但克制)

论文在这点上很“保守”,这也是它工程上稳的原因:

  • 不做复杂 cross-attention 堆叠

  • 不改 LLM 结构

  • 只做:

    • concat
    • linear projection
    • position alignment

这样做的好处:

  • 不破坏 LLM
  • 易迁移
  • 易复现

4.4 从 LLM 视角看发生了什么?

LLM 看到的是:

[视觉token_1 ... 视觉token_K] + [文本token]

但这些视觉 token:

  • 一部分来自 CLIP(“老词”)
  • 一部分来自 Vary(“新词”)

👉 本质效果是:

LLM 的“视觉词表”变大了


五、关键损失函数设计(算法灵魂)

Vary 并不是随便生成 embedding,它用任务来“约束词义”。

典型 loss 包括:

  1. 视觉-语言对齐 loss
  2. 下游任务生成 loss(QA / OCR)
  3. 冗余抑制 / 多样性约束(防止新词塌缩)

核心思想一句话:

只有“能帮助语言模型完成任务的视觉词”,才是好词


六、为什么 Vary 有效?(从算法角度)

你可以从三个层面理解:


1️⃣ 表示能力层

CLIP 视觉空间 ≈ 自然图像 manifold
Vary 扩展了这个 manifold 的维度和覆盖范围


2️⃣ 信息瓶颈层

Q-Former / pooling 解决的是 压缩
Vary 解决的是 “原材料不够”


3️⃣ 训练信号层

Vary 的新词:

  • 直接被下游任务监督
  • 不靠图文弱对齐
  • 更 task-oriented

七、一句“评审级”总结(你可以直接用)

Vary reframes visual tokenization in LVLMs as a vocabulary expansion problem, and introduces a generative mechanism to learn complementary visual tokens beyond CLIP’s embedding space, enabling finer-grained visual perception without sacrificing generalization.


八、完美闭环

你可以把整条技术线连起来:

  • CLIP:给了“通用视觉词表”
  • Q-Former:学会“挑词、压缩词”
  • Vary:直接“扩词表”

一句话闭环:

当你发现 token 不够用时,不一定要压得更狠,也可以把词造得更多。


真正重要的是:它扩的到底是哪一类“词”

我先给你一句结论版,再逐层拆。


一句话结论

Vary 扩充的不是“新物体类别”,而是 CLIP 视觉词汇体系中缺失的、对细粒度结构与符号敏感的“低—中层视觉语义词”。

关键词只有三个:

  • 不是类别
  • 偏结构/符号
  • CLIP 的盲区

一、先澄清一个常见误解

错误理解

Vary 是给 CLIP 加了更多 object label / concept token

正确理解

Vary 扩的是 “视觉子词(visual sub-lexemes)”

类比 NLP:

NLP VLM
word object
subword / morpheme 结构型视觉词
punctuation 视觉符号词

Vary 扩的是 后两类


二、Vary 扩充的视觉词汇三大类型

论文和实验里,其实已经给了非常清晰的信号。我们按语义层级来分。


1️⃣ 结构型视觉词(Structural Visual Tokens)

这是 Vary 最重要的一类贡献

典型特征

  • 对几何结构高度敏感

  • 不对应“物体”,而对应:

    • 边界
    • 线
    • 对齐关系

具体包括

  • 表格的 行 / 列分隔线
  • 文档的 段落边界
  • 图表的 坐标轴
  • 框图中的 连接线

为什么 CLIP 不行?

因为 CLIP 的训练目标是:

“这张图整体像不像这句话”

而不是:

“这张图里某条线和另一条线是什么关系”

👉 所以 CLIP 会把这些结构当噪声。

Vary 则显式把它们变成“词”


2️⃣ 符号 / 字符级视觉词(Symbolic / Glyph Tokens)

这是 Vary 在 OCR / DocVQA 上起飞的根本原因。

这些“词”长什么样?

  • 单个字符的形状特征
  • 数字 vs 字母 vs 标点
  • 粗体 / 斜体 / 下划线
  • 字符间距、对齐方式

注意:

它们不是“字母 A / B”的语义,而是“这个东西是一个字符”的视觉原子

类比 NLP

这相当于:

  • NLP 里从 word-level
  • 退到 char / byte-level
  • 但仍然保留语义可用性

CLIP 的 patch embedding:

  • 太大
  • 会把多个字符糊在一起

Vary 生成的新词:

  • 专门为“字符级感知”服务

3️⃣ 布局关系型视觉词(Layout / Relation Tokens)

这一类非常“隐蔽”,但在问答里作用巨大。

它们表达什么?

不是“是什么”,而是:

  • 上 / 下
  • 左 / 右
  • 对齐 / 包含
  • 相邻 / 跨列

例如:

“右侧第二列的数值是多少?”

CLIP 能看到“数值”,但不知道“第二列”

Vary 的新词,正是用来编码这种空间关系先验的。


三、Vary 明确没有扩充什么(反而很重要)

这点反而能看清它的定位。

❌ Vary 没有重点扩:

  • 新的自然物体类别(猫、狗、车)
  • 高层抽象概念(危险、拥挤、美丽)
  • 情感 / 风格语义

原因很简单:

这些 CLIP 已经非常强了

Vary 是“补短板”,不是“重复造轮子”。


四、从 embedding 空间看:这些新词在哪里?

从表示学习角度,你可以这样理解:

  • CLIP 的 embedding manifold:

    • 覆盖自然图像语义
  • Vary 扩充的词:

    • 落在 CLIP manifold 的边缘或空洞区域
    • 填补 高频但语义弱的区域

你可以想象一个图:

[ Object semantics ]
      ●   ●
   ●            ●
        (空洞)
      ◉ ◉ ◉   ← Vary 新词

这些新词:

  • 不一定“漂亮”
  • 极其有用

五、为什么这些词对 LLM 特别重要?

因为 LLM:

  • 擅长推理
  • 不擅长感知

而这些新视觉词:

  • 把“感知问题”提前解决

  • 让 LLM 接收到的是:

    • 结构化 token
    • 而不是像素噪声

一句话总结:

Vary 扩的是“让语言模型能用得上的视觉词”。


六、和你前面讨论过的内容,统一视角

你可以把这几件事串成一条线:

  • CLIP 视觉词汇表:通用、偏物体
  • Q-Former:从现有词里挑重点
  • Vary:当词不够时,直接造新词

而 Vary 造的,正是:

CLIP 不关心,但 LLM 非常需要的视觉语义单元


七、一句“论文答辩级”总结

你可以在答辩或评审里这样说:

Vary primarily augments low- and mid-level visual tokens that encode fine-grained structures, symbols, and layout relations, which are underrepresented in CLIP’s object-centric visual vocabulary but critical for document and diagram understanding tasks.


posted @ 2026-02-02 10:38  stardsd  阅读(73)  评论(0)    收藏  举报