跳转到内容
English

TiTok:用短序列描述图像

交互教程

展开网格仍然每个位置对应一个 token;TiTok 改为学习少量全局 latent slots。

前置阅读:ViT · VQGAN · 评估

VQGAN 将图像压缩为较小空间网格并逐位置量化。网格提供局部结构,但长度绑定分辨率与下采样倍数。TiTok 追问:瓶颈必须保留这种一一对应的空间布局吗?

编码器同时读取图像 patch 与 K 个学习 slots。自注意力让每个 slot 收集全图信息,只有 slot 输出经过向量量化。解码器将量化 slots 与带位置的 mask queries 结合,恢复稠密输出。slots 有身份,但没有固定像素邻域。

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

读取 patch 与 slots

仅保留学习 slot 的输出。

tokens = encoder(concat(patches + patch_pos, slots + slot_pos))
z = tokens[:, -K:]

量化

每个 slot 选择一个码本向量。

ids, zq = vector_quantizer(z)

通过 queries 解码

原始主要方案先预测 proxy codes 再解码像素。

dense = decoder(concat(zq, mask_queries + output_pos))
proxy_logits = proxy_head(dense)
image = pixel_decoder(proxy_lookup(proxy_logits))

查看固定版本来源

zq=Q(E([xpatch,s1:K])slots)z_q=Q(E([x_{\mathrm{patch}},s_{1:K}])_{\mathrm{slots}})

跟踪一张 256² 图像:patch 特征进入编码器,32 个 latent 向量离开瓶颈,多组输出 queries 恢复空间网格。更多输出 query 不意味着编码信息更多,而是向同一紧凑表征提出不同空间问题。

演示保留信号的全局基函数系数。减少系数数量并观察丢失频率,可理解全局瓶颈,但它不复现学习到的注意力或 TiTok 质量。论文比较的是不同 K 的训练模型,并非这里的解析阈值。

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

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

灰色为目标信号,绿色为教学解码信号;未使用训练后的图像模型。

当前例子的计算值
量值
教学信号 MSE0.000
信号采样点48

原论文主要方案先预测现有 MaskGIT-VQGAN 的 proxy codes,并用它的像素解码器生成图像。第二阶段冻结编码器与量化器,微调解码路径。另一个 MaskGIT 生成 TiTok codes。因此 tokenizer 重建与 code 生成具有不同目标和成本。

条件指标数值解释
ImageNet 256²,L-32,K=32rFID ↓2.21解码器微调后的验证集重建
同一 L-32 tokenizer,MaskGIT-ViT,8 步gFID ↓2.77生成图像,属于另一模型阶段

Transformer tokenizer 并不保证部署解码器完全没有 CNN;原方案使用 proxy 模型与像素解码器。不能将 32-token 配置与 128-token 模型的最佳生成结果拼接。采样序列更短,也不能证明 tokenizer 训练更便宜。

能给每个 slot 指定图像中的固定方块吗?

不能。slot 的信息通过全局学习得到;提供重建网格的是稠密输出 queries。

返回学习地图

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