TokenFlow
自 GPT-4o 以来,多模态统一成了一个共识性的方向:能不能用一个模型、一套 token,同时做到"看懂图像"和"生成图像"?
这个愿景的底层依赖是一个好的 视觉 tokenizer——它需要把连续的图像像素压缩成离散 token,让 Transformer 可以像处理文本一样处理图像。但这里有一个根本性的矛盾:
具体来说,理解任务(如视觉问答、场景推理)需要 tokenizer 捕捉的是"这张图里有猫、有沙发、猫在沙发上面"这种语义级的信息——颜色、纹理这些细节反而是噪声。而生成任务需要的是"猫的毛发纹理、沙发的皮革质感、光影的渐变过渡"这种像素级的精细编码。一个以重建为优化目标的 VQ tokenizer 天然偏向后者,结果是生成还可以,但用于理解时性能大幅下降。
这篇论文来自 ByteDance,发表在 CVPR 2025。它的核心贡献是提出了 TokenFlow——一个通过双码本共享映射来统一多模态理解和图像生成的新架构。它达成了几个里程碑:
- 首次让离散视觉输入在理解 benchmark 上超越 LLaVA-1.5 13B(提升 7.2%)
- 自回归图像生成 SOTA:GenEval 0.55,仅需 25 步采样
- 384×384 分辨率下 rFID 0.63 的强重建质量
在提出解法之前,论文先用一组 Motivation 实验精准地定义了问题。他们在 LLaVA-1.5 框架下,对比了不同类型的视觉编码器在多模态理解任务上的表现:
| 类型 | 视觉编码器 | MME-P↑ | SEEDB↑ | TQA↑ |
|---|---|---|---|---|
| 连续(语义) | CLIP ViT-B/14 | 1460.9 | 64.1 | 53.4 |
| 离散(像素) | VQGAN | 756.1 | 38.2 | 46.8 |
| 离散(像素) | LFQ | 889.5 | 41.1 | 46.4 |
| 离散(语义) | VQKD (CLIP蒸馏) | 1252.4 | 57.8 | 48.2 |
这张表的信息量很大。我们逐行看:
CLIP 是连续语义表征的"天花板"——MME-P 1460.9,这是理解任务的参考基准。VQGAN 是以重建为目标的像素级 tokenizer,它的 MME-P 只有 756.1,直接腰斩。这说明:一个"会画"的 tokenizer,在理解任务上几乎不可用。论文进一步做了一个聚类可视化实验,直观地揭示了问题的本质:
VQGAN 按颜色和纹理聚类——蓝色天空和蓝色布料被分到一起,完全忽略语义。VQKD 有一定的语义倾向,但聚类仍然混杂。这两种"相似性"是本质不同的,一个偏向"是什么",一个偏向"长什么样"。如果只用一个码本,就必须在两者之间做 trade-off——而这正是现有统一方法表现不佳的根本原因。
TokenFlow 的核心 Insight 可以用一句话概括:
打个比方:想象一栋大楼,每个房间有一个门牌号。TokenFlow 不是给"语义层"和"像素层"各建一栋楼,而是在同一栋楼里,让每个门牌号同时挂两套坐标系——一套描述语义位置,一套描述像素位置。当你查一个门牌号时,可以同时获取两种信息。
或者用信号处理的视角:这很像视频编码中的分层编码(scalable coding)——base layer 编语义(低频、低分辨率),enhancement layer 编细节(高频、高分辨率)。但 TokenFlow 的做法比传统的分层编码更精妙:不是串行叠加,而是并行投票。
具体来说,对于一张输入图像的每个 patch:
- 语义编码器提取语义特征,计算到语义码本中每个条目的距离
- 像素编码器提取像素特征,计算到像素码本中每个条目的距离
- 将两种距离加权求和,选择距离最小的索引作为这个 patch 的"共同身份"
这个设计的精妙之处在于:统一的是索引,而不是特征。语义特征和像素特征可以各自保持自己的表征空间,它们不需要被强行压缩到同一个向量里。但通过共享索引,下游任务只需要处理一种 token——查语义码本得到语义嵌入,查像素码本得到像素嵌入。
设计哲学
已有方法在"单流统一"与"双系统并联"之间摇摆。TokenFlow 提出了第三条路:多流提特征,单索引做统一。统一的对象不是连续特征流,而是离散索引语义。
架构详解
TokenFlow 的整体架构可以用五层来概括:双编码器 → 双码本共享映射 → 多尺度 VQ → 双解码器 → 统一 token 输出。
双编码器
输入图像 $x$ 同时进入两个编码器:
- Semantic Encoder $E_{\text{sem}}$:从 CLIP / SigLIP 等预训练文本对齐视觉编码器初始化。论文发现 保持 unfrozen 很关键——冻结会限制语义码本获取足够强的语义先验。
- Pixel Encoder $E_{\text{pix}}$:标准的卷积/注意力编码器,专注于提取颜色、纹理、局部结构等低层视觉特征。
得到两组连续表示:$\hat{z}_{\text{sem}} = E_{\text{sem}}(x)$ 和 $\hat{z}_{\text{pix}} = E_{\text{pix}}(x)$。
双码本 + 共享映射
这是 TokenFlow 最核心的创新。论文配置了两个码本:
码本配置
- Semantic Codebook $Z_{\text{sem}} \in \mathbb{R}^{K \times d_{\text{sem}}}$,其中 $K = 32768$,$d_{\text{sem}} = 32$
- Pixel Codebook $Z_{\text{pix}} \in \mathbb{R}^{K \times d_{\text{pix}}}$,其中 $K = 32768$,$d_{\text{pix}} = 8$
两个码本的索引集合大小相同(都是 $K$ 个 entries),但嵌入维度不同——语义需要更高维的表征空间,像素在共享索引前提下用更低维即可承载。
量化过程的核心公式:
其中 $d_{\text{sem},i} = \|\hat{z}_{\text{sem}} - z_{\text{sem},i}\|_2^2$,$d_{\text{pix},i} = \|\hat{z}_{\text{pix}} - z_{\text{pix},i}\|_2^2$,距离在计算前经过 $l_2$ 归一化。权重 $w_{\text{dis}} = 1.0$(论文附录 B.2 提到有自动平衡机制)。
多尺度向量量化(MSVQ)
在单尺度量化之上,TokenFlow 引入了多尺度结构(类似 VAR 的 residual levels),将图像表示为多个尺度上的离散结构。不同模型的尺度设置:
| 模型 | 输入分辨率 | 尺度设置 |
|---|---|---|
| TokenFlow-B | 224 | [1, 2, 4, 6, 8, 10, 12, 14] |
| TokenFlow-L | 256 | [1, 2, 3, 4, 6, 8, 10, 12, 14, 16] |
| TokenFlow-XL | 384 | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 17, 22, 27] |
MSVQ 的作用有两层:一是增强码本的表征能力(多尺度残差),二是天然适配下游的 next-scale prediction 生成范式——从最粗的 1×1 token 开始,逐尺度生成越来越精细的图像结构。
双解码器
- Semantic Decoder $D_{\text{sem}}$:重建教师模型的语义特征,与 teacher 提取的目标特征计算 $l_2$ 距离作为语义损失 $L_{\text{sem}}$。
- Pixel Decoder $D_{\text{pix}}$:重建原始图像,损失函数为:
其中 $L_P$ 是 LPIPS 感知损失,$L_G$ 是对抗损失,$\lambda_G = 0.5$。
训练目标
三项损失分别约束语义对齐、码本学习和像素重建,各司其职又通过共享索引耦合在一起(训练细节见下一 Part):
了解了模型架构,接下来看 TokenFlow 是如何训练的。训练分为三个阶段:Tokenizer 训练、视觉生成训练、多模态理解训练。每个阶段的训练目标、数据和策略都不同。
Tokenizer 训练
| 配置 | TokenFlow-B | TokenFlow-L | TokenFlow-XL |
|---|---|---|---|
| 输入分辨率 | 224 | 256 | 384 |
| 码本大小 | 32,768 | 32,768 | 32,768 |
| Semantic teacher | CLIP ViT-B/14-224 | ViTamin-XL-256 | SigLIP-SO400M-patch14-384 |
| 语义码本维度 | 32 | 32 | 32 |
| 像素码本维度 | 8 | 8 | 8 |
| 训练步数 | 1,000,000 | 500,000 | 500,000 |
VQ 码本学习损失(含 commitment loss,$\beta = 0.25$):
损失权重:$w_{\text{dis}} = 1.0$(距离平衡),$\beta = 0.25$(commitment),$\lambda_G = 0.5$(对抗损失)。
CLIP 初始化的关键
Semantic Encoder 从 CLIP/SigLIP 预训练权重初始化,且训练期间保持 unfrozen。消融实验表明这一设计对理解性能至关重要:加入 CLIP 初始化后 MME-P 从 1210 飙升到 1312(+102 分)。冻结语义编码器会严重限制码本获取足够的语义先验。
视觉生成训练
模型:基于预训练 LLM(Llama-2-7b),扩展词表加入视觉 token。图像 token 经 MLP 投影后与文本 token 拼接,交叉熵损失仅计算图像 token 部分。 训练数据:6000 万张高质量图像,caption 由 Qwen-VL 生成。训练 2 epochs,以 0.2 概率随机截断 caption 到第一句,增强短提示生成能力。 推理:classifier-free guidance scale = 7.5(训练时以 $p_{\text{drop}} = 0.1$ 概率将条件文本替换为空串)。单张 A100 生成一张 256×256 图像仅需 2.7 秒。多模态理解训练
训练流程:TokenFlow-B/L 使用 LLaVA-Pretrain558K 进行 adapter 预训练,再使用 LLaVA-v1.5-mix-665K 进行指令微调。TokenFlow-XL 使用 Cambrian-Alignment 预训练和 Cambrian-10M 指令微调(因 SigLIP-SO400M 在大数据上收益显著)。 语言 backbone:Vicuna-v1.5-13B 或 Qwen-2.5-14B。增强解码器微调
为进一步提升细粒度生成能力,论文将 Pixel Decoder 的残差层数和通道维度均翻倍,仅微调增强后的 decoder 层(冻结其他组件),在保持感知能力的同时提升重建保真度。
图像重建
| 模型 | 分辨率 | 压缩比 | 残差层数 | rFID↓ | PSNR↑ | SSIM↑ |
|---|---|---|---|---|---|---|
| VQ-GAN | 256 | 16 | 1 | 4.98 | 20.00 | 0.629 |
| LlamaGen | 256 | 16 | 1 | 2.19 | 20.79 | 0.675 |
| VAR | 256 | 16 | 10 | 1.00 | 22.63 | 0.755 |
| TokenFlow | 256 | 16 | 9 | 1.37 | 21.41 | 0.687 |
| VAR | 384 | 16 | 13 | 2.09 | 22.73 | 0.774 |
| TokenFlow | 384 | 14.2 | 15 | 0.63 | 22.77 | 0.731 |
在 384×384 分辨率下,TokenFlow 取得了 rFID 0.63 的强性能。256 分辨率下 rFID 1.37,虽然低于 VAR 的 1.00,但需要记住的是 TokenFlow 的首要目标不是纯重建——它同时要服务理解任务,这是 VAR 不需要承担的约束。
多模态理解(里程碑性结果)
| 方法 | 参数 | 分辨率 | 平均分 |
|---|---|---|---|
| LLaVA-1.5(连续) | Vicuna-13B | 336 | 62.9 |
| EMU3(离散) | 8B | 512 | 60.9 |
| TokenFlow-XL(离散) | Vicuna-13B | 384 | 64.0 |
| TokenFlow-XL(离散) | Qwen-2.5-14B | 384 | 67.4 |
这是本文最引人注目的结果:首次证明了离散视觉输入可以超越连续输入(LLaVA-1.5 + CLIP)。在相同语言 backbone(Vicuna-13B)下,TokenFlow-XL 超过 LLaVA-1.5 达 1.7%;换用 Qwen-2.5-14B 后提升到 7.2%。
视觉生成(自回归 SOTA)
| 模型 | 范式 | 分辨率 | 步数 | GenEval | DPG-Bench |
|---|---|---|---|---|---|
| SDXL | 扩散 | 1024 | 40 | 0.55 | 74.65 |
| DALL-E 3 | 扩散 | 1024 | — | 0.67† | 83.50 |
| EMU3 | 自回归 | 512 | 4096 | 0.54 / 0.66† | 80.60 |
| VAR | 自回归 | 256 | 28 | 0.53 | 71.08 |
| TokenFlow | 自回归 | 256 | 25 | 0.55 / 0.63† | 73.38 |
GenEval 0.55 在自回归范式中达到 SOTA,与扩散模型 SDXL 持平,但仅需 25 步采样——对比 EMU3 的 4096 步和 LlamaGen 的 1024 步,这是数量级的效率提升。使用 prompt rewriting(GPT-4V)后达到 0.63,接近 DALL-E 3。
论文提出了一个 multi-step sampling 策略:首轮以较大 top-k(k=1200, p=0.8)采样保持多样性,然后在同一尺度内以缩小参数(k=100, p=0.8)进行第二轮精炼。这种"由粗到精"的采样策略在保持创造性的同时增强了局部一致性。
单张 A100 生成一张 256×256 图像仅需 2.7 秒。
消融实验
| Shared Mapping | MSVQ | CLIP Init | rFID↓ | MME-P↑ | SEEDB↑ | TQA↑ |
|---|---|---|---|---|---|---|
| ✗ | ✗ | ✗ | 8.07 | 1252.38 | 57.84 | 49.16 |
| ✓ | ✗ | ✗ | 3.96 | 1212.51 | 55.97 | 47.42 |
| ✓ | ✓ | ✗ | 2.18 | 1209.90 | 56.08 | 47.40 |
| ✓ | ✓ | ✓ | 2.16 | 1312.09 | 58.99 | 49.29 |
三个关键组件各有分工:
- Shared Mapping 是重建的主力——引入后 rFID 从 8.07 骤降至 3.96(-4.11),代价是理解指标轻微下降
- MSVQ 进一步将 rFID 降至 2.18,同时为 next-scale prediction 提供基础
- CLIP Initialization(保持 unfrozen)是理解性能突破的关键——MME-P 从 1210 飙升到 1312(+102 分)
码本利用率的惊喜
传统 VQ tokenizer 在大码本下面临严重的"码本坍缩"问题——大量条目从未被激活。TokenFlow 在 8K 到 130K 条目的码本规模下始终维持 95%+ 的利用率。这说明 shared mapping 不仅解决了粒度矛盾,还顺带解决了码本利用率的老大难问题。
与已有方法的根本区别
| 方法 | 核心思路 | 统一方式 | 理解 | 生成 |
|---|---|---|---|---|
| Chameleon/EMU3/Show-o | 单一 VQ tokenizer | 单码本 | 弱 | 中 |
| Janus | 独立 tokenizer(理解+生成) | 双系统 | 中 | 中 |
| VILA-U | 单一流约束高低层表征 | 单码本 | 中 | 中 |
| VAR | 多尺度 next-scale | 单码本多尺度 | 弱 | 强 |
| TokenFlow | 双码本共享映射 | 索引统一、表征分工 | 强 | 强 |
与 VAR 的关系值得特别说明:TokenFlow 的 MSVQ 和生成头明显借鉴了 VAR 的多尺度 / next-scale prediction 思路,因此生成效率很高。但 VAR 只负责生成,不承担理解任务。TokenFlow 在 VAR 式多尺度生成能力之上,注入了语义分支与共享映射,把 tokenizer 从"好生成"扩展为"可统一"。
与 Janus 的对比也很能说明问题:Janus 为理解和生成分别使用独立 tokenizer,本质上是"两套系统并联",没有解决"同一视觉 token 能否兼容两种任务"的根本问题。TokenFlow 的做法是在索引层实现真正共享——同一个 token index 同时承载语义和像素两套嵌入。
局限性
- 生成质量仍有天花板:GenEval 0.55 虽为自回归 SOTA,但距离 DALL-E 3(0.67)和 SDXL 的 1024 分辨率仍有差距
- 理解未充分利用多尺度:MSVQ 训练了多尺度信息,但理解只用了 final-scale,是否有更优的融合方式值得探索
- 语义教师的上限锁死:性能受限于 CLIP/SigLIP teacher 的能力(TokenFlow-XL 达到教师的 97.1%)
- 分辨率受限:实验最高 384×384,更高分辨率未验证
个人启发
为什么这篇论文值得关注
TokenFlow 证明了一个重要的观点:离散视觉表征不仅能匹配连续表征,还能在某些场景下超越。这为下一代统一多模态模型提供了新的方向——离散 token + LLM 的 next-token prediction 框架,可能是比扩散模型更优雅的统一方案。
从方法论角度,"多流提特征,单索引做统一"这个设计哲学具有很强的可迁移性。它不仅适用于视觉 tokenizer,任何需要在异构表征之间建立桥接的场景,都可以考虑"共享索引"的思路。
更值得注意的是,双码本的维度非对称设计(语义 32 维 vs 像素 8 维)暗示了一个有趣的事实:在共享索引的前提下,两种信息的表征复杂度可以不同——语义需要更丰富的表征空间,而像素可以用更紧凑的编码承载。
参考来源
- #Qu et al., 2024 — TokenFlow: Unified Image Tokenizer for Multimodal Understanding and Generation
- ByteVisionLab/TokenFlow — GitHub
- #Team, 2024 — Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation
- #Tian et al., 2024 — VAR: Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction