跳转到内容
English

VQ-VAE-2:分开全局结构与局部细节

交互教程

单个 latent 网格必须同时描述布局和纹理。VQ-VAE-2 学习层次表征,再为各层配置条件先验。

前置阅读:VQ-VAE · 注意力与自回归

VQ-VAE 已提供离散编码与学习先验。分辨率增大后,单个大先验模型代价高。VQ-VAE-2 保留前馈编解码,却把信息分布到多个空间尺度。

256×256 配置中,顶层码为 32×32,底层为 64×64。底层编码同时利用顶层信息与图像特征,最终解码器使用两者。顶层先验建模全局关系,底层先验条件化于已采样顶层。

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

顶层编码与量化

第二次下采样产生粗粒度 latent 网格。

h = bottom_encoder(x)
z_top = quantize_top(top_encoder(h))

条件化底层编码

将图像特征与顶层解码信息结合后进行底层量化。

top_features = top_decoder(z_top)
z_bottom = quantize_bottom(combine(h, top_features))

两个先验,一个图像解码器

图像解码依赖两层;先验在 tokenizer 之后训练。

top = sample(top_prior)
bottom = sample(bottom_prior, condition=top)
image = decode(top, bottom)

查看固定版本来源

p(ztop,zbottom)=p(ztop)p(zbottom∣ztop)p(z_{\mathrm{top}},z_{\mathrm{bottom}})=p(z_{\mathrm{top}})p(z_{\mathrm{bottom}}\mid z_{\mathrm{top}})

独立调整两个教学码:一个改变信号整体相位,另一个改变局部变化。这展示互补控制,并不保证真实 latent 严格分开形状和纹理。重建阶段共同学习两层编码。

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

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

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

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

生成先采样顶层,再据此采样底层,最后一次前馈解码成图像。每个网格内部的先验仍是自回归。因此层次网格不等于 VAR 式并行下一尺度预测。

论文还用分类器拒绝采样交换覆盖度与样本质量。这是额外采样机制,不是 tokenizer 的免费提升。更深的空间层次也不等于同一位置的残差量化。

底层能否先生成并保持论文的条件分解?

不能,底层先验需要顶层码作条件。逆转顺序需要重新建模条件分布。

返回学习地图

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