概述

视觉领域的AIGC常用的几类技术:

  1. 其比照如下

GAN

这里简单阐述一下GAN做图画生成的优缺陷,不对技术细节做展开

长处是保真度高,缺陷是练习不行稳定,因为要同时练习生成器和判别器,存在一个平衡的问题,练习欠好简单造成练习崩塌;别的GAN的方针是生成图片的尽量真实性,可是它生成的图片多样性确比较差,也便是创造性不是很好

Diffusion Model

Framework

分散模型,Diffusion一词来源于热力学

分散现象是一个根据分子热运动的输运现象,是指物质分子从高浓度区域向低浓度区域转移直到均匀分布的现象

在分散模型中包括两个进程

  • Forward Diffusion(图片 -> 随机噪声)
  • Reverse Diffusion(随机噪声 -> 图片)

其演化为DDPM -> improved DDPM -> Diffusion beats GAN -> CLIDE -> DALL.E2 -> Imagen

Forward Diffusion

整个Forward的进程如下:

Given a data point sampled from a real data distribution x0∽q(x)x_0\backsim q(x), let us define a forward diffusion process in which we add small amount of Gaussian noise to the sample in T steps, producing a sequence of noisy samples x1,…,xTx_1,…,x_T. The step sizes are controlled by a variance schedule{βt∈(0,1)}t−1T\textstyle\{\beta_t\in(0,1)\}_{t-1}^T.

q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)q(x1:T∣x0)=∏t=1Tq(xt∣xt−1)q(x_t|x_{t-1})=\N(x_t;\sqrt{1-\beta_t}x_{t-1}, \beta_t\Iota)\\ q(x_{1:T}|x_0)=\displaystyle\prod_{t=1}^Tq(x_t|x_{t-1})

The data sample x0x_0 gradually loses its distinguishable features as the step t becomes larger. Eventually when T→∞, xTT\to\infty, x_T is equivalent to an isotropic Gaussian distribution.

Framework

整个Diffusion的Framework如下图所示

暂时无法在{app_display_name}文档外展现此内容

其间三个model分开练习,然后组合起来

我们别离看一下

  • Stable Diffusion
  • DALL.E2
  • Imagen

的framework:

Stable Diffusion

DALL.E2

Imagen

Text Encoder

文字的encoder对最终的效果影响也较大,常见手法是CLIP

CLIP

CLIP(Contrastive Language-Image Pre-training):Connecting text and images

CLIP是zero-shot的,搬迁才能很强,其预练习选用的是比照学习,从上图左面能够看出,有N个正样本,有N^2-N的负样本; 这里用来预练习的数据集包括4亿清洗过的文本-图画对;

上图右侧展现了CLIP如何做zero-shot的,即完结一个图画分类使命,右图举例的是image-net的1000分类问题,假如给一个三轮车的图片,image-net的Resnet-101是无法精准识别的,而CLIP是能够的,这便是大模型vs小模型的魅力;

其搬迁才能的图示如下所示:

而clip除了能应用于图画识别之外,在方针检测&语义切割上也能发挥作用

CLIP最大的一个立异是从自然语言中取得监督信号,比较传统使命的从图画中获取监督信号,其泛化才能很强

从自然语言中取得监督信号有两个好处:

  1. 不需求子使命的标注动作,同时现在标签是文本,而非之前的n选1的标签了,所以模型自在大就大了很多
  2. 因为现在把文字与图画绑定在一起,现在学到的不仅仅是一个视觉特征了,而是一个多模态特征;和语言发生联系后,就很简单做zero-shot这种搬迁学习了

数据集

OpenAI自己构建数据集:图画文本数据WIT,即WebImage Text,总量4亿

练习功率

作者认为把预测型的方针函数替换为比照型的方针函数,练习功率一下子就提升了4倍

Image Encoder

模型上视觉侧,尝试过ResNet,Efficient Net,到最大的ViT large,即ViT-L/14(作者发现搬迁学习的性能基本上和模型大小成正相关)

Text Encoder

作者尝试了CBOW ,到Text Transformer,其间的投射层是为了学习如何从单模态变成多模态

练习技巧

选用混精度练习(Mixed-precision)加快练习和节省内容(基本上涉及到Transformer的论文都会用到),超参查找选用最小的resnet-50,而且只做了一个epoch,关于ViT-l,就没有去做搜参了

Zero-Shot Transfer

之前那些自监督或许无监督的方法,首要聚集于学习representation learning,也便是特征学习的才能,它们的方针便是学一种泛化性比较好的特征,但即使学习到了很好的泛化特征,应用到下游使命时,仍是需求有标签的数据去做微调,这里就涉及到许多问题:下游使命欠好收集数据;存在distribution shit问题等等;

如何练习一个模型,接下来就不再微调呢?这便是Zero-Shot Transfer 的研讨动机,一旦凭借文本练习出一个又大又好的模型之后,能够用文本作为引导,去灵敏的做Zero-Shot Transfer; 要使用CLIP的Zero-Shot才能,需求凭借prompt engineering,如上图分类使命将方针转化为语句

Generation Model

生成模型首要是根据文本embedding生成中心产品,这里的中心产品有两种或许的形态:

  1. 紧缩图片(compressed image),比方Imagen

  2. 隐含表征(latent representation),比方DALL.E2,Stable Diffusion

而关于模型主体结构,以U-net形态为主

U-net

FCN是图画语义切割的开山之作,比较于普通的CNN是图画预测,而FCN则是像素预测

U-net则是对FCN全卷积的扩展,二者比较类似,都是编码和解码,即encoder-decoder的结构,可是和FCN比较,U-Net的第一个特点是彻底对称,也便是左面和右边是很类似的,而FCN的decoder相对简单,只用了一个deconvolution的操作,之后并没有跟上卷积结构。第二个区别便是skip connection,FCN用的是加操作summation,U-Net用的是叠操作concatenation

U-net的左侧是做下采样,即contracting path路劲紧缩,而右侧则是expansive path,即路劲扩展

compressed image

首先,经过以下方式练习Denoise

Noise Predicter练习进程如下(Forward Diffusion进程)

然后选用上述Denoise去构建Generation Model,完结生小图(Reverse Diffusion进程):

latent representation

同理,先练习面向latent representation的Denoise,其Noise Predicter练习如下图所示(Forward Diffusion进程):

然后选用上述Denoise去构建Generation Model,完结生latent representation(Reverse Diffusion进程):

Decoder

练习Decoder不需求文字与图画的pair,其只需求图画data,其练习同上分为两种情况:

  1. 紧缩图片(compressed image),比方Imagen
  2. 隐含表征(latent representation),比方DALL.E2,Stable Diffusion

compressed image

当中心产品是紧缩图时,把一切大图拿来,然后做downsampling变成小图,获取到成对的数据,然后就能够练习一个把小图变成大图的decoder

latent representation

当中心产品是隐含表征时,我们需求一个encoder做辅佐,中心是latent representation:

我们练习时希望输入图片与输出图片越挨近越好,练习完就把decoder拿出来用

评价

评价影像出产好坏的手法常见的是FID(Frechet Inception Distance) Score以及Clip Score