searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OpenSora1.1视频生成模型原理

2024-12-12 09:11:00
24
0

1.1扩散模型生成

以DDPM为例,扩散模型的学习目标是学习训练数据的分布,生成符合训练数据分布的图片。

k1.jpg

opensora模型训练流程:具体代码处理逻辑(opensora/schedulers/iddpm/gaussian_diffusion.py)

  1. 模型训练冻结vae encoder和text encoder,只更新diffusion model:STDiT的参数。
  2. 模型训练不涉及decoder部分,loss根据STDiT预测的噪声计算的。
  3. 33.PNG

1.2 模型结构

扩散模块STDiT结构如下,参考PIXART-alpha中DiT的实现增加了Temporal-Attention。

PIXART-alpha每个block相比ViT增加了CrossAttetion处理文本信息交互,修改层归一化为自适应层归一化。

STDiT在PIXART-alpha基础上增加了temporal attention进行时间维度的attention。

44.jpg

1.3 层归一化

模型层归一化与pixel-alpha模型采用的一致,目的是使模型更好的适应不同数据分布。自适应层归一化的发展如下。

k2.jpg

1.4 分桶训练

  1. 当数据集中视频大小差别比较大时,过长的视频可能OOM,过短的视频显存利用率比较低。为了解决这一问题采用分桶训练的方式。
  2. 桶是(分辨率,帧数量,宽高比)的三元组。一种分辨率涵盖大多数常见的视频宽高比。进一步地,为每个(分辨率,帧数量)二元组引入保留概率和batch_size,以降低计算成本并实现多阶段训练,并且可以控制不同桶中的样本数量,平衡GPU负载。
  3. 代码实现逻辑:(opensora/datasets/sampler.py)
    1. 找到≤视频分辨率的最大分辨率的桶;
    2. 找到≤视频帧数的最大帧数的桶;
    3. 根据桶保留概率判断是否选择该桶;
    4. 选择该桶中宽高比与视频最接近的子桶;
    5. 将视频resize到桶的帧数和宽高比对应的宽和高;
    6. 每次从一个桶中选择batch输入模型。
  4. 具体实例讲解如下
  5. 55.png

1.5 图生视频/长视频生成任务

具体的任务类型如下

66.png

1.6 数据预处理

数据预处理包括视频剪辑、美学分数过滤、光流分数过滤、OCR检测过滤、文本匹配分数过滤,视频描述生成。可根据数据集的情况选择性进行某项预处理过程。

视频剪辑:原始视频通常包含多个场景并且对于训练来说太长。因此,根据场景将它们分割成更短的片段。需要安装视频剪辑工具如scenedetect。

美学分数过滤:评估视频的美学质量。需要安装clip,下载llava模型或者pllava模型。

光流分数过滤: 光流分数用于评估视频的运动。光流分数越高表示运动幅度越大。需要下载UniMatch模型。

OCR光学字符识别检测过滤: 一些视频是密集文本场景,如新闻广播和广告,这些不适合用于训练。需要下载 DBNet++模型

文本匹配分数过滤: 计算匹配分数来评估图像 / 视频与其描述之间的对齐情况。需要 CLIP 模型,使用余弦相似度作为匹配分数。

77.png

0条评论
作者已关闭评论
张****青
4文章数
0粉丝数
张****青
4 文章 | 0 粉丝
张****青
4文章数
0粉丝数
张****青
4 文章 | 0 粉丝
原创

OpenSora1.1视频生成模型原理

2024-12-12 09:11:00
24
0

1.1扩散模型生成

以DDPM为例,扩散模型的学习目标是学习训练数据的分布,生成符合训练数据分布的图片。

k1.jpg

opensora模型训练流程:具体代码处理逻辑(opensora/schedulers/iddpm/gaussian_diffusion.py)

  1. 模型训练冻结vae encoder和text encoder,只更新diffusion model:STDiT的参数。
  2. 模型训练不涉及decoder部分,loss根据STDiT预测的噪声计算的。
  3. 33.PNG

1.2 模型结构

扩散模块STDiT结构如下,参考PIXART-alpha中DiT的实现增加了Temporal-Attention。

PIXART-alpha每个block相比ViT增加了CrossAttetion处理文本信息交互,修改层归一化为自适应层归一化。

STDiT在PIXART-alpha基础上增加了temporal attention进行时间维度的attention。

44.jpg

1.3 层归一化

模型层归一化与pixel-alpha模型采用的一致,目的是使模型更好的适应不同数据分布。自适应层归一化的发展如下。

k2.jpg

1.4 分桶训练

  1. 当数据集中视频大小差别比较大时,过长的视频可能OOM,过短的视频显存利用率比较低。为了解决这一问题采用分桶训练的方式。
  2. 桶是(分辨率,帧数量,宽高比)的三元组。一种分辨率涵盖大多数常见的视频宽高比。进一步地,为每个(分辨率,帧数量)二元组引入保留概率和batch_size,以降低计算成本并实现多阶段训练,并且可以控制不同桶中的样本数量,平衡GPU负载。
  3. 代码实现逻辑:(opensora/datasets/sampler.py)
    1. 找到≤视频分辨率的最大分辨率的桶;
    2. 找到≤视频帧数的最大帧数的桶;
    3. 根据桶保留概率判断是否选择该桶;
    4. 选择该桶中宽高比与视频最接近的子桶;
    5. 将视频resize到桶的帧数和宽高比对应的宽和高;
    6. 每次从一个桶中选择batch输入模型。
  4. 具体实例讲解如下
  5. 55.png

1.5 图生视频/长视频生成任务

具体的任务类型如下

66.png

1.6 数据预处理

数据预处理包括视频剪辑、美学分数过滤、光流分数过滤、OCR检测过滤、文本匹配分数过滤,视频描述生成。可根据数据集的情况选择性进行某项预处理过程。

视频剪辑:原始视频通常包含多个场景并且对于训练来说太长。因此,根据场景将它们分割成更短的片段。需要安装视频剪辑工具如scenedetect。

美学分数过滤:评估视频的美学质量。需要安装clip,下载llava模型或者pllava模型。

光流分数过滤: 光流分数用于评估视频的运动。光流分数越高表示运动幅度越大。需要下载UniMatch模型。

OCR光学字符识别检测过滤: 一些视频是密集文本场景,如新闻广播和广告,这些不适合用于训练。需要下载 DBNet++模型

文本匹配分数过滤: 计算匹配分数来评估图像 / 视频与其描述之间的对齐情况。需要 CLIP 模型,使用余弦相似度作为匹配分数。

77.png

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0