文生图 & 文生视频

本文详细探讨了文生图和视频生成中的扩散模型(如StableDiffusion和DiT),介绍了它们如何利用CLIP模型、Transformer结构以及时空信息处理技术。特别提到Latte和Sora的技术细节,以及XTuner在优化大模型训练上的贡献。
摘要由CSDN通过智能技术生成

文生图

在这里插入图片描述

diffusion model

在这里插入图片描述

  • latent diffusion :先对图片降维,然后在降维空间做diffusion;stable diffusion即基于此方法实现的,因此计算量很小;
    在这里插入图片描述
  • 共用降噪网络U-Net:输入noisy image+step,告诉网络当前的噪声等级;预测出来噪声,noisy image-noise,得到降噪之后的图片;然后继续送进网络,再做一次这样的推理;

stable diffusion整体

在这里插入图片描述

stable diffusion拆解

在这里插入图片描述

  • stable diffusion的推理流程:CLIP模型对文本进行编码,得到文本-图片共享域的embedding;然后送给lattent diffusion,最后输出经过解码器重建为高清图片。

  • diffusion 正向流程是图片加白噪声,具体加的方法看schedule的设置,比如每次加一定量;或者先加的少,后加的多—图片特征损失的比较慢;高斯噪声可以累加,因此在设置step=100的时候,实际上每一步的结果都可以直接推出来了;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • stable diffusion的输入【step, noisy image,文本特征】,为了加强文本对生成内容的控制,引入classifier free guidance进行控制;有文本控制和没有文本控制的情况下,生成两种噪声,互减之后的部分既是文本引导改变的噪声部分,乘一定的系数对文本引导改变的结果进行加强,再加上没有文本引导部分的噪声,合并成本轮预测的噪声。

  • 进阶玩法:webUI上有正向提示词,和负向提示词;可以通过classifier free guidance进行加强or减弱的控制;

  • VAE和CLIP模型都是预先训练好的;stable diffusion 2用的是LAION数据集训练的CLIP模型;官网有模型公开,但有的模型没有训练使用的数据集公开;

文生视频

miniSoRa 开源社区

DiT

  • 知乎讲解
  • 扩散模型本来是基于UNet架构,基本包含CNN和self-attention模块;DiT将transformer结构引入diffusion,然后探索是否能够利用transformer的模型和数据的scaling law。
    在这里插入图片描述
  • DiT的设计如上图
  • 参考ViT的设计,采用一个patch embedding来将输入进行patch化,即得到一系列的tokens。【patch相当于将一张图片裁剪成多个小图,相比于直接压缩size的方法,信息损失更少】其中patch size属于一个超参数,它直接决定了tokens的数量,这会影响模型的计算量。DiT的patch size共选择了三种设置:【2,4,8】。注意token化之后,这里还要加上positional embeddings,这里采用非学习的sin-cosine位置编码。
  • 对于扩散模型来说,往往还需要在网络中嵌入额外的条件信息,包括timesteps以及类别标签(如果是文生图就是文本,但是DiT这里并没有涉及)。无论是timesteps还是类别标签,都可以采用embedding来进行编码。
  • DiT共设计了四种方案来实现两个额外embeddings的嵌入,先说结论adaLN-Zero的实验效果最好,记住就行。具体如下见讲解。虽然DiT证明,adaLN-Zero效果是最好的,但是这种方式只适合这种只有类别信息的简单条件嵌入【引申到语音领域,比如说话人信息可以用adaLN-Zero】,因为只需要引入一个class embedding;但是对于文生图来说,其条件往往是序列的text embeddings,采用cross-attention方案可能是更合适的。

latte

model arch

在这里插入图片描述

  • 视频生成涉及图片的时空信息,Latte设计了四种不同的高效Transformer变体,对时空信息进行fusion。实验发现,1【时空交错】的效果相对较优,但是在论文使用的train/val set上和2/3差别不大;4 的损失比较明显,及时gflops拉到一致;
    • 时空交错:不同的transformer block关注不同的角度,然后交替进行;
    • 先空间后时间
    • 在一个transformer block中,先空间再时间;
    • 在一个transformer block中,时空单独建模,再fusion。
  • 2+1D的方式进行视频生成

video token

在这里插入图片描述

  • 首先对图片进行压缩,然后在laten space进行token化;两种方式:(1)单帧图片时空tokenizer;(2)时间维度压缩的tokenizer。后者的视频生成质量是有损失的,因为token化的过程中信息损失比单帧时空token多,还原的时候需要更精细的设计。
  • time step class 使用adaLN的方式引入,相比于直接concat 效果更优;将time step 看成一种style;

sora

sora技术报告

XTuner

在这里插入图片描述

  • 这张图详细的解释见GPU 参数/梯度/优化器状态与对应的显存占用

  • deepspeed 的加速方式,zero1–优化器状态,zero2----优化器状态+梯度,zero3----优化器状态+梯度+参数,进行切片,使得更多的gpu 并行加速;

  • 图中展示的是混合精度计算,即一个参数占2字节(fp16),混合精度训练中,优化器参数是全精fp32,用adam的话其内部包括动量、方差和copy的模型参数,一个为4+4+4,所以图中K为12。因此显存占用主要的开销在优化器状态。

  • 对于LLM 任务,尤其是Text2Vedio 项目,序列的长度非常长,为了能够增加机器利用效率,使得更少的机器能够带动模型训练,XTuner 进行了数据并行的训练接口优化;
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值