TiTok:用短序列描述图像
交互教程
展开网格仍然每个位置对应一个 token;TiTok 改为学习少量全局 latent slots。
之前已经能做什么
Section titled “之前已经能做什么”VQGAN 将图像压缩为较小空间网格并逐位置量化。网格提供局部结构,但长度绑定分辨率与下采样倍数。TiTok 追问:瓶颈必须保留这种一一对应的空间布局吗?
改变了什么,为什么
Section titled “改变了什么,为什么”编码器同时读取图像 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))逐步理解机制
Section titled “逐步理解机制”跟踪一张 256² 图像:patch 特征进入编码器,32 个 latent 向量离开瓶颈,多组输出 queries 恢复空间网格。更多输出 query 不意味着编码信息更多,而是向同一紧凑表征提出不同空间问题。
演示保留信号的全局基函数系数。减少系数数量并观察丢失频率,可理解全局瓶颈,但它不复现学习到的注意力或 TiTok 质量。论文比较的是不同 K 的训练模型,并非这里的解析阈值。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
灰色为目标信号,绿色为教学解码信号;未使用训练后的图像模型。
| 量 | 值 |
|---|---|
| 教学信号 MSE | 0.000 |
| 信号采样点 | 48 |
训练与采样的区别
Section titled “训练与采样的区别”原论文主要方案先预测现有 MaskGIT-VQGAN 的 proxy codes,并用它的像素解码器生成图像。第二阶段冻结编码器与量化器,微调解码路径。另一个 MaskGIT 生成 TiTok codes。因此 tokenizer 重建与 code 生成具有不同目标和成本。
论文证据(并非本地复现)
Section titled “论文证据(并非本地复现)”| 条件 | 指标 | 数值 | 解释 |
|---|---|---|---|
| ImageNet 256²,L-32,K=32 | rFID ↓ | 2.21 | 解码器微调后的验证集重建 |
| 同一 L-32 tokenizer,MaskGIT-ViT,8 步 | gFID ↓ | 2.77 | 生成图像,属于另一模型阶段 |
这些结果不能证明什么
Section titled “这些结果不能证明什么”Transformer tokenizer 并不保证部署解码器完全没有 CNN;原方案使用 proxy 模型与像素解码器。不能将 32-token 配置与 128-token 模型的最佳生成结果拼接。采样序列更短,也不能证明 tokenizer 训练更便宜。
能给每个 slot 指定图像中的固定方块吗?
不能。slot 的信息通过全局学习得到;提供重建网格的是稠密输出 queries。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。