VQGAN:保留感知细节的 tokenizer
交互教程
仅追求像素准确可能让重建平滑。VQGAN 将离散瓶颈与感知、对抗训练结合,再用 Transformer 建模编码。
之前已经能做什么
Section titled “之前已经能做什么”VQ-VAE 已学习字典与解码器,PixelCNN 类先验建模编码序列。GAN 已用于促进真实图像统计,预训练特征网络也已提供感知距离。VQGAN 将这些工具组成紧凑 tokenizer 与自回归 Transformer 先验。
改变了什么,为什么
Section titled “改变了什么,为什么”第一阶段卷积编码器降低空间尺寸,最近码量化保留离散接口。解码器使用像素与 LPIPS 损失,patch 判别器区分真实与重建图像区域。自适应权重可依据解码器末层的重建与对抗梯度作平衡。
阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。
卷积 tokenizer
瓶颈沿用 VQ-VAE 的最近码结构。
z = encoder(x)
z_q, ids, vq_loss = quantizer(z)图像解码与损失
像素与感知项比较输入与重建。
x_hat = decoder(z_q)
rec = pixel_loss(x,x_hat) + lpips(x,x_hat)patch 判别器
生成器与判别器使用不同梯度路径。
g_adv = -mean(D(x_hat))
L_G = rec + adaptive_weight * g_adv + vq_loss自回归先验
先验建模编码出现规律,而非像素重建。
logits = transformer(ids[:, :-1])
L_AR = cross_entropy(logits, ids[:, 1:])逐步理解机制
Section titled “逐步理解机制”调整信号细节幅度。只有相位与强度匹配目标时,细节才降低配对误差。合理的新振荡不一定是原有细节。该例说明真实感与精确重建需要分开验证,并不模拟 GAN 或 LPIPS 网络。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
灰色为目标信号,绿色为教学解码信号;未使用训练后的图像模型。
| 量 | 值 |
|---|---|
| 教学信号 MSE | 0.045 |
| 信号采样点 | 48 |
训练与采样的区别
Section titled “训练与采样的区别”判别器与生成器分别更新。判别器步对假图 detach;生成器步冻结判别器参数,但保留其输入梯度。此处 LPIPS 特征固定。tokenizer 之后训练 Transformer 先验,用交叉熵预测移位码 ID。
所读 taming 实现保留 legacy 量化选项,会把 β 放在旧的损失项上;自适应权重 epsilon 也与论文不同。复制配方前要读固定版本,仓库默认值不自动等于论文设置。
这些结果不能证明什么
Section titled “这些结果不能证明什么”对抗训练增加 optimizer、日程和不稳定性。感知上合理的重建可能改变小文字或纹理。论文完整生成质量还包含第二阶段 Transformer 及采样设置,不能只归功于 tokenizer。
第一阶段重建由 Transformer 生成吗?
不是。tokenizer 使用卷积编解码,Transformer 在第二阶段建模离散码。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。