赞
踩
论文:
High-Resolution Image Synthesis with Latent Diffusion Models
https://arxiv.org/abs/2112.10752
https://github.com/CompVis/latent-diffusion
简单来说,就是先用一个编码器 E \mathcal{E} E 把图片压缩到隐空间( H × W × 3 → h × w × c H\times W\times3\to h\times w\times c H×W×3→h×w×c ),然后让 Diffusion 模型 ϵ θ \epsilon_\theta ϵθ 在压缩后的特征上工作,最后用解码器 D \mathcal{D} D 还原成一个图片。
训练分成两个阶段,先训练自编码器,再训练 Diffusion 。
训练自编码器的时候用 LPIPS 做约束。
自编码器实际上是 VQ-VAE ,只是 VQ 层放到了解码器里。也就是说, Diffusion 阶段操作的是 VQ 前的隐空间特征。
根据论文的描述,编码器和解码器应该是卷积结构,没有注意力层的,只有 UNet 里面有注意力层。
可以看到 diffusion 的这部分使用了 UNet 架构,并且结合了 cross-attention
他提到 ϵ θ \epsilon_\theta ϵθ 中的 cross-attention 层的 K 和 V 是由 τ θ \tau_\theta τθ 产生的,Q 是由 z T z_T zT 产生的
训练时 ϵ θ \epsilon_\theta ϵθ 和 τ θ \tau_\theta τθ 是联合学习的
压缩就是一个编码器一个解码器,编码器把图像映射到隐空间的特征,解码器把特征映射为图像
注意图像是 H × W × 3 H\times W\times3 H×W×3 的,特征是 h × w × c h\times w\times c h×w×c 的
我们的感知压缩模型是基于以前的工作,包括一个由感知损失和基于补丁的对抗性目标组合训练的自动编码器。
他的感知损失就是指 LPIPS
patch-based 应该是指 PatchGAN 对抗损失吧。
也就是说,自编码器用了两个损失,一个是LPIPS感知损失,一个是 patch-based 对抗损失。
两阶段应该指的就是,压缩性学习和生成性学习分开。
他们尝试了两种对隐空间的约束,一种是用 KL 散度约束到正态分布(就和 VAE 一样),一种是 VQ 方法(和VQ-GAN 一样,只是量化层放到了 decoder 里)
他们发现使用 VQ 方法更好
应该就是说,他们的编码器和解码器之间用了一个 VQ 层
他提到,自回归需要较大的运算量,由此会导致特征空间维数必须较少,由此会导致编码器和解码器需要更多的参数去拟合先验(数十亿参数)
为了减少运算量,同时减少特征对原图像的压缩率(也就是增加特征维数),他们的自编码器使用卷积作为backbone
自编码器的优化:
似乎就是用 LPIPS 用来衡量重建损失,以此训练一个带 VQ 层的自编码器。
Diffusion 模型的优化目标:
L L D M : = E E ( x ) , y , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) ) ∥ 2 2 ] L_{LDM} := \mathbb{E} _{\mathcal{E}(x),y,\epsilon∼\mathcal{N}(0,1),t} \left[\left \| \epsilon − \epsilon_\theta(z_t, t, \tau_\theta(y)) \right\|^2_2\right] LLDM:=EE(x),y,ϵ∼N(0,1),t[∥ϵ−ϵθ(zt,t,τθ(y))∥22]
看起来和原版的 Diffusion Model 挺像的,只是多了个 τ θ \tau_\theta τθ 函数。
注意 ϵ θ \epsilon_\theta ϵθ 是工作在隐空间中的,这意味着 z t z_t zt 是隐空间中的特征, ϵ θ \epsilon_\theta ϵθ 的输出也是隐空间中的特征,训练也是在隐空间中发生的。
其中 τ θ \tau_\theta τθ 是一个转换器,将(多模态的)监督信号 y y y 转换为隐空间中的监督信号,是一个需要学习的模型。根据不同模态的 y y y 可以设计不同的 τ θ \tau_\theta τθ
训练时 ϵ θ \epsilon_\theta ϵθ 和 τ θ \tau_\theta τθ 是联合学习的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。