Stable Diffusion详解

文章目录


前言

Stable Diffusion在图像生成方面取得了很大的成功,其核心原理是LDM(Latent Diffusion Models),在论文《High-Resolution Image Synthesis with Latent Diffusion Models》中被提出,使用潜在扩散模型进行高分辨率图像生成,发表在CVPR2022上。LDM作者和VQGAN的作者相同。接下来对LDM这篇论文进行详细介绍。

一、LDM原理

Diffusion Model(DM)的训练和推理速度太慢,需要占用大量的计算资源。因此LDM想解决的就是在不降低DM的图像生成能力的基础上降低计算量。

论文中总结到,对于基于最大似然的模型,训练可以分为两部分,先是进行感知压缩(perceptual compression),然后进行语义压缩(semantic compression)。(图像感知指的是图像的细节,图像语义指的是图像的主体是什么)。对于DM来说,在进行图像生成的时候,在前面的步骤中先是进行图像的语义生成,也就是确定图像的内容大概是什么东西,接下来的很多步骤都是进行图像的感知生成,也就是负责图像的细节生成。由于DM是在像素层面进行生成,所以计算量很大,并且DM的很多计算量都集中在图像的感知(细节)生成方面。

基于此LDM的目标就是想让DM只负责图像语义方面,而图像的感知(细节)方面交给其他的模型去负责。也就是让DM在潜在空间上去训练和推理。

二、模型结构

LDM的模型结构如上图所示。其主体是由自编码器部分(粉色)、DM部分(绿色)以及条件机制(灰色)三部分组成。在进行图像生成时,首先使用DM进行扩散获得具有语义信息的特征图,然后使用自编码器的解码器进行图像的感知生成获得最终的图片。

这样做有三个好处:1.DM在低维潜在空间进行扩散,计算量减少。2.利用了DM中的UNet模型的归纳偏置,这使得模型可以获得图像的空间结构,不用像之前VQVAE,VQGAN对于输入图像的极致压缩而失去了图像原有的空间结构。3.获得了一个通用的压缩模型,其潜在空间可以用于训练多个生成模型。接下里对LDM的三个部分分别进行介绍。
图像感知压缩

图像感知压缩模型(粉色部分)是基于之前的VQGAN工作,由自编码器组成,在训练时结合了感知损失和对抗损失,避免了只使用L1或L2损失引入的模糊现象。

对于输入的图像,编码器将其进行编码变换到潜在空间,然后解码器在潜在空间重构图像。为了避免高方差分布的潜在空间,LDM引入了两种正则化。一种是KL正则化,一种是VQ正则化。(在VQGAN中通过将潜在空间进行离散化避免高方差,而LDM的潜在空间是连续的。)

VQGAN在潜在空间进行自回归建模生成采样的时候,是使用的Transformer模型,相当于采样的是一维的序列,没有图片的空间结构。而LDM在潜在空间进行采样时,是由DM生成的具有归纳偏置的二维分布,具有空间特征结构。因此,LDM生成的图像更好的保留了细节部分。

同时,VQGAN由于使用的是Transformer进行建模采样,受Transformer自身特性影响,其序列长度是一维的且不会很长,这就导致最后将一维序列Reshape成二维特征图的时候特征图尺寸不会很大,所以其采样是高度压缩的,自然生成的图像失去了很多细节。而LDM使用DM生成的本身就是具有归纳偏置的二维特征采样,所以具有生成效果好。
DM

DM模型就是使用经典的DDPM模型,只不过扩散和采样从图像的像素空间转移到了潜在空间。对于DDPM的详细介绍可以看一下这篇博文:
DDPM详解

通过在潜在空间训练DM,可以使DM集中于图片中重要的语义信息减少计算量。

条件机制

在进行条件生成时是在DM的UNet中使用cross-attention机制实现。为了对不同的模态进行处理,使用不同利用的专业编码器 τ θ \tau_\theta τθ(上图灰色部分)对条件进行编码获得 τ θ ( y ) \tau_\theta(y) τθ(y),然后将其输入到UNet中的cross-attention作交叉注意力计算。在进行条件生成的时候,LDM中的DM训练可以表示为下述公式:

三、模型训练与推理

LDM的训练与VQGAN一样是分为两部分。首先是先训练感知自编码器(粉色部分),接着在潜在空间上训练DM。

在进行推理的时候,先使用DM在潜在空间进行采样获得特征图,然后将其给解码器进行最终的图片生成。

总结

LDM通过在潜在空间进行DM训练采样,在没有降低图像生成质量的情况下大大提高了训练和推理速度,同时基于cross-attention条件机制,LDM与当时的SOTA方法相比取得了很好的结果。

相关推荐
开开心心_Every4 分钟前
便捷的Office批量转PDF工具
开发语言·人工智能·r语言·pdf·c#·音视频·symfony
cooldream200915 分钟前
「源力觉醒 创作者计划」_基于 PaddlePaddle 部署 ERNIE-4.5-0.3B 轻量级大模型实战指南
人工智能·paddlepaddle·文心大模型
亚里随笔33 分钟前
L0:让大模型成为通用智能体的强化学习新范式
人工智能·llm·大语言模型·rlhf
白杆杆红伞伞40 分钟前
T01_神经网络
人工智能·深度学习·神经网络
Chef_Chen1 小时前
从0开始学习计算机视觉--Day08--卷积神经网络
学习·计算机视觉·cnn
槑槑紫1 小时前
深度学习pytorch整体流程
人工智能·pytorch·深度学习
盼小辉丶1 小时前
TensorFlow深度学习实战——去噪自编码器详解与实现
人工智能·深度学习·tensorflow
胖达不服输2 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
一禅(OneZen)2 小时前
「Windows/Mac OS」AIGC图片生成视频 ,webui + stable-diffusion环境部署教程
windows·stable diffusion
吴佳浩2 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm