一、AIGC基础
全称叫做AI generated content,AlGC (Al-Generated Content,人工智能生产内容),是利用AlI自动生产内容的生产方式。
在内容创作领域中,有PGC(Professionally-generated Content,专业生成内容)和UGC(User-generated Content,用户内容生产)作为两大主流模式,共同构成了内容生产的核心来源
二、AIGC的发展
从这张图我们也可以看到,随着技术的发展,AIGC生成的图片的质量越来越高。
下面开始介绍 文生图-----生成模型:文生图模型
根据文生图的发展路线,我们把文生图的发展历程发展成如下四个阶段:
- 基于生成对抗网络的(GAN)模型
- 基于自回归(Autoregressive)模型
- 基于扩散(diffusion )模型
- 基于Transformers的扩散(diffusion)模型
基于生成对抗网络的(GAN)模型
GAN的特点总结如下:
- 构成:由一个生成器(Generator, G)和一个判别器(Discriminator, D)组成。
- 功能:生成器产生“假”数据,判别器负责进行真伪鉴别。
- 对抗性训练:两个网络在训练过程中不断对抗,进化,直至判别器无法区分真假数据。
- 使用:推理时只需保留生成器,输入随机噪声向量,可以生成图像。
- AttnGAN:AttnGAN是一个改进的GAN结构,引入了attention机制,从而使得图片生成在局部更匹配文本描述,并且采用了从粗粒度到细粒度的生成策略。
优势:
- 对于某些窄分布数据集(如人脸)效果很好。
- 采样速度快适合实时应用。
缺点:
- 训练过程比较难且不稳定。
- 存在Mode Collapse(模式崩塌)等问题。
基于自回归方式的模型
VQGAN模型的工作流程可以总结如下:
-
图像编码(离散化):
- 首先,原始的RGB图像通过VQVAE(Vector Quantized Variational AutoEncoder)或VQGAN进行编码。在这个过程中,连续的图像数据被压缩并转换成一系列离散的视觉代码(visual codes)。
- 这些视觉代码是从一个预先训练好的码本(Codebook)中选取的,码本中的每个码字代表了图像中的一部分信息。
- 这一步骤虽然可能会导致一些图像细节的损失,但是可以保留足够的信息来重建图像。
-
图像重建(解码):
- 通过训练好的CNN解码器(Decoder),可以从视觉代码中恢复出原始图像的大致内容。这个解码过程可以通过加入GAN损失(GAN loss)来增强,以提升恢复图像的质量和真实感。
-
视觉代码的预测:
- 使用一个Transformer或类似GPT的模型,按照一定顺序逐一预测每个视觉代码。
- Transformer会考虑到已经预测的视觉代码,以此来预测下一个代码,从而生成图像的下一部分。
-
图像生成:
- 预测完所有视觉代码后,再使用第一步中训练好的Decoder根据这些代码生成对应的图像。
- 由于预测每个视觉代码的过程涉及随机采样,因此这种方法能够生成多样性较高的不同图像。
特点:
- 视觉代码的离散化是一个关键步骤,它允许模型将图像编码成可管理的代码序列。
- Transformers的使用使得模型能够有效地预测视觉代码之间的复杂关系,并按顺序生成图像。
- 生成质量的提升是通过在解码过程中加入GAN损失来实现的,这有助于生成更真实和具有高保真度的图像。
这种方法在生成图像时能够实现良好的细节恢复,同时还能保持生成过程中的多样性。VQGAN和DALL·E(由OpenAI提出)是应用这种方法的两个著名实例。
基于扩散(diffusion)方式的模型
扩散模型(如DDPM)的基本工作流程如下:
前向过程(加噪声):
从原始数据开始,逐步添加高斯噪声。这是一个可控的过程,通常按照一定的步骤进行,每一步都增加一定量的噪声。
随着噪声的增加,数据的原始信息逐渐丧失,最终接近于纯噪声分布。
反向过程(去噪声):
使用一个深度网络,通常是一个UNet架构,来学习如何逆转前向过程,即去除加入的噪声,恢复数据。
网络训练的目标是最小化重建数据和原始数据之间的差异。
数据生成(采样):
训练完成后,通过向去噪网络输入随机噪声,网络将逐步去除噪声,最终生成新的数据。
由于输入是随机噪声,所以每次生成的数据都有可能是独一无二的。
扩散模型的总结:
- 基于逐步去噪的过程来生成数据,与传统的生成模型(如GAN)不同。
- 可以有效地避免一些GAN所面临的问题,如模式崩塌。
- 能够生成高质量的样本,并具有一定的多样性。
对于DALL·E 2的工作流程,它是一种结合了多模态学习和扩散模型的复杂系统:
文本输入:
用户输入一段文本描述。
文本编码:
通过CLIP模型的文本编码器处理文本,学习图像和文本之间的关联。
Prior网络:
利用学到的文本编码生成对应的CLIP图像编码。
初步图像生成:
使用解码器根据CLIP图像编码生成低分辨率的图像(例如64x64像素)。
超分辨率处理:
经过一或多个超分辨率网络,逐步提高图像的分辨率,从256x256到最终的1024x1024像素。
DALL·E 2的特点:
- 结合了多模态(文本和图像)学习,可以根据文本描述生成相应的图像。
- 利用扩散模型生成高质量的图像,并通过超分辨率网络提高分辨率。
- 整个pipeline相比纯扩散模型更为复杂,但能生成更加细致和丰富的图像内容。
缺点:
处理速度较慢、
LDM
在这张LDM(Latent Diffusion Model)原理图中,我们可以看到一个结合了压缩、去噪和conditioning的生成模型的过程。这个模型的目的是能够从文本或其他条件信息生成图像。
-
压缩: 输入的图像(x)首先通过一个encoder模块(ε)被压缩到一个潜在空间(latent space)。这一步的目的是降低数据的维度,提取出能够代表原始数据的高级特征。
-
扩散过程: 在潜在空间中,输入数据会经历一个扩散过程,这通常是通过向数据添加噪声来实现的。
-
去噪U-Net: 然后,数据被送入一个去噪U-Net结构。U-Net是一种特殊的卷积神经网络,用于图像分割,这里被用来逐步去除噪声并恢复图像。U-Net的结构支持数据在不同层间的跳跃连接,这有助于保持信息不丢失。
-
Conditioning: 为了生成特定的图像,模型还需要条件信息。这些信息可以是文本描述、语义地图或其他图像表示。在生成图像时,模型会使用这些条件信息来确保输出与所需的结果相符。
-
跨注意力: 在U-Net的每个去噪步骤中,都会通过跨注意力(cross-attention)机制将条件信息整合进来。注意力机制可以让模型专注于与当前任务最相关的信息部分。
-
解码: 最终,处理过的潜在空间数据通过一个解码器(D)被转换回像素空间,得到最终的图像输出x。
-
文本到图像: 当任务是从文本生成图像时,文本描述会被编码并转换成token格式,通过上述的跨注意力机制在每一步引导图像的生成。
基于Transformers的架构的Diffusion模型
推理链路可以按照以下步骤进行梳理:
第一步:图像编码和准备
- 输入一张256x256x3的图像,通过一个编码器(Encoder)处理,输出对应的潜在表示(latent representation),其中潜在空间的压缩比为8。
- 输入的潜在空间尺寸为32x32x4,这表示通过编码器压缩后的图像被切分成了32x32个patches,每个patch由4个特征值描述。
- 将潜在空间的输入进行token化,其中图像的patches使用“patchify”处理,而label(可能用于条件生成)和timestep(时间步,代表扩散过程中的特定阶段)使用embedding编码。
第二步:扩散变换
- 使用N个DiT(Diffusion Transformer)Block对潜在表示进行处理。每个DiT Block可能包含多头自注意力(Multi-Head Self-Attention)和前馈网络(Pointwise Feedforward),还包括了可学习的比例(Scale)和位移(Shift)参数,以及层归一化(Layer Norm)。
- 当前时间步t和标签y与潜在表示一起输入到DiT Block中,通过多层感知器(MLP)进行处理。
第三步:逆向扩散(降噪)
- 经过T个时间步的采样,最终得到去噪后的潜在表示,尺寸为32x32x4。
- 这个去噪过程的目的是移除噪声并恢复出干净的潜在表示,该表示应尽可能接近原始图像的潜在表示。
在训练过程中,网络的目标是最小化去噪后的潜在表示与原始编码潜在表示之间的差异。这通常通过优化一个损失函数(如均方误差)来实现,该函数衡量了预测的潜在表示与实际潜在表示之间的相似度。
Transformer结构在这里是为了利用其强大的序列建模能力来捕捉潜在表示中的长距离依赖关系,这对于高质量的图像重建是非常重要的。每个DiT Block通过处理和更新潜在表示,来逐步消除噪声,并在采样过程中重建出清晰的图像。