1. 概述
图像生成任务:给定一段文字,模型根据文字描述产生图片
1.1 图像生成方式
-
一次生成一个pixel
像Transformer接龙那样,一次生成一个pixel,然后作为下一个pixel的输入,这样依次生成一张图像的所有pixel
-
一次生成整张图片的所有pixel
每一个pixel独立绘制,但存在
四不像
的问题,每个pixel(或者每个局部的一组pixel)都有自己的想法左上角的一片pixel想要生成哈士奇
右上角的一片pixel想要生成柯基
左下角的一片pixel想要生成边牧
右下角的一片pixel想要生成金毛
最后生成的图片就是
四不像
1.2 解决四不像问题
对于图像生成模型,添加一个输入,保证一次生成全部的pixel目标统一,劲往一处使
添加的这个输入就是从一个分布(正太分布)中,采样出来的一个多维向量,模型要学会将分布中的采样出来的每一个向量对应到一个具体的图像
常用的图像生成模型有
- VAE,Variational Auto-encoder
- Flow-based Generative Model
- Diffusion Model
- GAN,Generative Adversarial Network
2. Diffusion Model
arxiv:2006.11239
2.1 预测过程
对于Diffusion Model,给定文字输入,从某一分布(高斯分布)中采样一个高维向量作为输入,经过多次降噪操作,生成可识别的图片
2.2 训练过程
Denoise模块内部结构如下
-
input
当前步数、当前步待降噪的图片(后面会将text也作为输入)
-
noise predictor
预测当前步的噪音,输入图片除去预测噪音产生输出降噪后的图片
-
output
降噪后的图片
如何训练noise predictor
在给图片加噪音的过程中,就已经产生noise predictor的训练数据了
以第2步加噪音的操作为例,步数2
和加完噪音的图片
作为输入,我们想要noise predictor的输出是第2步加的噪音是什么
,而这个噪音图我们是知道的,作为ground truth
对模型加上文字输入后的的表示如下
3. Stable Diffusion
整体结构
预测过程,如上图所示
训练过程
3.1 Text Encoder
将输入的文字转换成向量,可以理解为让通过Encoder将文字转化为语义信息,参考Transformer中Encoder的理解,Text Encoder生成向量的质量直接影响了生成图片的质量。对于图像生成模型有2个衡量标准FID
和CLIP
FID
-
将图片送入CNN进行特征的提取,最后得到一个代表图像特征的向量(或特征图)
-
对生成图片和真实图片求特征图
-
求两个高斯分布之间的距离FID,越小代表生成的图片和真实图片越相近
CLIP
- 输入文字送入Text Encoder产生一个向量
- 将生成的图像送入Image Encoder产生一个向量
- CLIP代表输入文字和生成图片的对应关系,值越大越好
3.2 Generation Model
Generation Model的任务是根据输入的语义向量产生中间产物,可以使用Diffusion Model变化版
Diffusion Model输出是图片,而Generation Model输出是中间产物,因此只是处理的对象发生了变化,基本原理是不变的,下图上半部分是Diffusion Model加噪音的处理过程,下半部分是Generation Model加噪音的处理过程
加噪音的过程产生了训练noise predictor的训练数据,可以对其进行训练,下图表示了noise predictor的训练数据
Generation Model生成中间产物的过程如下
3.3 Decoder
Decoder的任务是将Generation Model生成的中间产物(人眼不可识别)转化为可识别的图片。
要训练Decoder就需要(中间产物,可识别图片)这样的数据集,采用的做法是引入一个Encoder,输入的真实图片,输出中间产物,这样就产生了训练Decoder的数据集,进而可以对Decoder进行训练
参考:李宏毅2023机器学习课程
标签:Diffusion,生成,Model,pixel,输入,图片 From: https://www.cnblogs.com/dctwan/p/17430640.html