跳转至

Idea to StableDiffusion

导言

理解当下最流行的开源text to image模型stable diffusion的基本思想。到Sora8

2014 对抗网络 GAN

  • generative adversarial network (GAN)是2014年提出的无监督训练方法1
  • 目的:给定一个训练集,学习生成与训练集具有相同统计数据的新数据。例如,在照片上训练的GAN可以生成新的照片,这些照片至少在人类观察者看来是真实的,具有许多真实的特征。
  • 网络结构:有两个网络,G(Generator)和D(Discriminator)功能分别是:3
    • G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
    • D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
  • 核心思想:生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。 这意味着generator 没有被训练来最小化到特定图像的距离,而是欺骗了机器人。最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5
    • 换句话来说discriminator保存了generator网络训练出来的复杂loss函数2
  • 数学推导:基于概率论的两个网络的零和博弈(TODO)
  • 训练过程:第一步训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。整个训练过程交替进行。
  • 推理过程:(猜测的)输入随机噪声,产生图片。
  • 原理图例:
  • 拓展:DCGAN将CNN与GAN结合,把上述的G和D换成了两个卷积神经网络(CNN)
  • 缺点与局限性:Mode collapse(模式坍塌):generator 生成的图像都特别像。和训练的数据集太像了,导致几乎没有新亮点。

2015 简单图像分割 UNet

  • U-Net: Convolutional Networks for Biomedical Image Segmentation是最常用、最简单的一种分割模型了,它简单、高效、易懂、容易构建、可以从小数据集中训练。5
  • 目的:医疗影像语义分割任务
  • 网络结构:Unet网络非常的简单,前半部分就是特征提取,后半部分是上采样。在一些文献中把这种结构叫做编码器-解码器结构,由于网络的整体结构是一个大些的英文字母U,所以叫做U-net
    • Encoder:左半部分,由两个3x3的卷积层(RELU)再加上一个2x2的maxpooling层组成一个下采样的模块(后面代码可以看出);
    • Decoder:有半部分,由一个上采样的卷积层(去卷积层)+特征拼接concat+两个3x3的卷积层(ReLU)反复构成(代码中可以看出来);
  • 原理图例:
  • 特点:对于图像语义较为简单、结构固定,并且数据量小的医疗图像,效果好

2020 扩散基础 DDPM

  • DDPM: Denoising Diffusion Probabilistic Models 提出了扩散模型
  • 目的/核心思想:也是生成图,但是原理完全不同。GAN模型通过使得生成器拟合真实图片,DDPM是拟合整个从真实图片 到随机高斯噪声的过程,再通过反向过程生成新的图片。4
  • 训练过程:
  • 原理图例:
  • 拓展:使用ResNet效果差,一般换成U-Net
  • 特点:由于是一步步扩散出来的,可以看到演变的中间图过程。

2021 CLIP

2022 Stable Diffusion

  • High-Resolution Image Synthesis with Latent Diffusion Models 是Stable Diffusion开源出来的方法。
  • 目的:在Diffusion模型的基础上,使用类似CLIP的text encoder来实现 text to image
  • 改进点:
    • 如何引入多头Attention,来使得U-Net中文本与图像结合?
    • Diffusion的过程移动到被压缩后的图片上(latent space), 使得速度加快很多
  • 原理图例:6
  • 详细:

2023 SDXL

  • SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis , 人如其名是SD的改进版
  • 内容:

    • 在原本的扩散模型后加Refiner模型(也是扩散模型), 参数量达到2.6B(10GB左右) 在Latent特征进行小噪声去除和细节质量提升。7
  • SDXL Stable Diffusion XL是Stable Diffusion的最新优化版本, 如果Stable Diffusion是图像生成领域的“YOLO”,那Stable Diffusion XL就是“YOLOv3”。

    • You Only Look Once (YOLO) 最流行的目标检测算法。

SDXL & SD Turbo on Huggingface

SDXL and SD Turbo

参考文献

评论