跳转到内容
English

VQGAN:保留感知细节的 tokenizer

交互教程

仅追求像素准确可能让重建平滑。VQGAN 将离散瓶颈与感知、对抗训练结合,再用 Transformer 建模编码。

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

VQ-VAE 已学习字典与解码器,PixelCNN 类先验建模编码序列。GAN 已用于促进真实图像统计,预训练特征网络也已提供感知距离。VQGAN 将这些工具组成紧凑 tokenizer 与自回归 Transformer 先验。

第一阶段卷积编码器降低空间尺寸,最近码量化保留离散接口。解码器使用像素与 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:])

查看固定版本来源

LG=Lpixel+Lperceptual+λLadv+LVQL_G=L_{\mathrm{pixel}}+L_{\mathrm{perceptual}}+\lambda L_{\mathrm{adv}}+L_{\mathrm{VQ}}

调整信号细节幅度。只有相位与强度匹配目标时,细节才降低配对误差。合理的新振荡不一定是原有细节。该例说明真实感与精确重建需要分开验证,并不模拟 GAN 或 LPIPS 网络。

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

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

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

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

判别器与生成器分别更新。判别器步对假图 detach;生成器步冻结判别器参数,但保留其输入梯度。此处 LPIPS 特征固定。tokenizer 之后训练 Transformer 先验,用交叉熵预测移位码 ID。

所读 taming 实现保留 legacy 量化选项,会把 β 放在旧的损失项上;自适应权重 epsilon 也与论文不同。复制配方前要读固定版本,仓库默认值不自动等于论文设置。

对抗训练增加 optimizer、日程和不稳定性。感知上合理的重建可能改变小文字或纹理。论文完整生成质量还包含第二阶段 Transformer 及采样设置,不能只归功于 tokenizer。

第一阶段重建由 Transformer 生成吗?

不是。tokenizer 使用卷积编解码,Transformer 在第二阶段建模离散码。

返回学习地图

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