跳转到内容
English

UniTok:拆分编码,共享表征

交互教程

UniTok 让重建与图文对齐共享同一量化表征。

前置阅读:语义表征 · VQ-VAE

单个小码本可能限制量化后保留的细节和语义;重建与对比目标对特征也有不同要求。UniTok 用更灵活量化测试联合训练配方,而非假定这些要求必然冲突。

多码本量化将通道向量拆成 M 个子向量,各自在独立码本中选择项,再拼接所选向量。这不同于反复量化剩余误差的残差量化。UniTok 用 CNN/Transformer 混合主干,将量化特征送到重建与图文两条分支。

阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。

混合视觉编码器

将特征投影到量化瓶颈。

z = projection(visual_encoder(image))

通道子码本

主配置独立量化八个 8 维切片。

parts = split_channels(z,8)
quantized = concat([vq_m(part) for m,part in enumerate(parts)])

共享读出

两分支都使用量化后的表征。

image_hat = decoder(quantized)
image_embedding = pool(project_back(quantized))
loss = reconstruction(image_hat,image)+contrastive(image_embedding,text)

查看固定版本来源

∣Ccombined∣=KM,Bposition=Mlog⁡2K|\mathcal{C}_{\mathrm{combined}}|=K^M,\qquad B_{\mathrm{position}}=M\log_2K

M 个 K 项码本存储 M×K 个向量,却可表示 K^M 种组合。演示分别计算两者,组合数不是显式存储的大词表。采用固定长度时,每位置需要 M log₂K 名义 bit。

主配置有 256 个空间位置、8 个 4096 项子码本,每子向量 8 维,即 2048 个 ID、64 个 latent 通道、每图 24576 名义 bit,在 256² 上为 0.375 bpp。称为 256 个视觉 token 描述的是空间接口,不是 256 个独立 code。

改变参数,查看计算值,再把它与上方的真实模型说明对照。

解析教学模型 · 控件改变的是例子,不是训练后的研究模型。

4 码4 码

独立子码拼接;这不是对同一向量反复量化残差。

当前例子的计算值
量值
存储项数8
组合数16
每位置名义 bits4.000

联合训练重建与图文对比目标。多模态模型在每空间位置合并子码嵌入,形成主序列 token;depth Transformer 在该位置内部预测子码。Tokenizer 训练与 LLM 适配仍是不同阶段。主要 tokenizer 数据是 DataComp-1B,并非 ImageNet-only 预算。

条件指标数值解释
UniTok,从头初始化,ImageNet-256 评估rFID ↓ / zero-shot top-1 ↑0.41 / 70.8%主表,联合训练 tokenizer
UniTok†,预训练初始化rFID ↓ / zero-shot top-1 ↑0.38 / 78.6%初始化不同,预训练成本不匹配

预训练初始化模型的零样本分类更好,却不领先所有下游 VQA 结果。每个成绩须绑定初始化、数据与任务协议。当前编码器包含卷积空间结构,缺少显式位置表不等于没有位置信息。

展开公式推导

M 个独立子空间各从 K 项选一个,乘法规则得到 K^M 种组合;固定长编码需要其 log₂ bit。存储项数只有 M×K。

log⁡2(KM)=Mlog⁡2K,256⋅8⋅log⁡24096=24576 bits\log_2(K^M)=M\log_2K,\qquad 256\cdot8\cdot\log_2 4096=24576\ \mathrm{bits}
八个子码本等价于八级残差量化吗?

不是。MCQ 量化不同通道切片;RQ 反复量化同一向量的残差。

返回学习地图

本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。