文生视频算法

文生视频

  • Sora
    • 解决问题:
    • 解决思路:
  • CogVideoX
    • 解决问题:
    • 解决思路:
  • Stable Video Diffusion(SVD)
    • 解决问题:
    • 解决思路:

主流AI视频技术框架:
在这里插入图片描述

Sora

Sora: A Review on Background, Technology, Limitations, and Opportunities of Large Vision Models
参考文章

解决问题:

模拟物理现实世界,生成逼真视频

解决思路:

Sora模型的核心架构图示
在这里插入图片描述
Sora主要包括三个部分:

3D VAE模型:3D VAE Encoder能在时间和空间维度上将输入的原始视频映射到Latent空间中。同时3D VAE Decoder能将扩散模型生成的视频Latent特征进行重建,获得像素级视频内容。
基于DiT的扩散模型架构:使用类似于ViT(视觉转换器)的处理方式将视频的Latent特征进行Patch化,并进行扩散过程输出去噪后的视频Latent特征。
一个类似CLIP模型架构的条件接收机制:接收经过大型语言模型(LLM)增强的用户输入Prompt和视觉信息的Prompt,用以引导扩散模型生成具有特定风格或者主题的视频内容。

3D VAE架构:
在这里插入图片描述
其中先使用一个Visual Encoder模型将视频数据(空间和时间维度)压缩编码到Latent特征空间,获得一个3D visual patch array,接着将整个Latent特征分解成spacetime patches,最后再排列组合成为一个visual patches向量。

CogVideoX

CogVideoX
参考文章

解决问题:

模拟物理现实世界,生成逼真视频

解决思路:

CogVideoX-2B模型的完整架构:

在这里插入图片描述
CogVideoX主要包括三个部分:

3D Causal VAE模型: 3D Causal VAE Encoder能在时间和空间维度上将输入的原始视频映射到Latent空间中。同时3D Causal VAE Decoder能将扩散模型生成的视频Latent特征进行重建,获得像素级视频内容。
DiT Expert模型: 将视频信息的Latent特征和文本信息的Embeddings特征进行Concat后,再Patch化,并进行扩散过程输出去噪后的视频Latent特征。
Text Encoder模型: Text Encoder模型将输入的文本Prompt编码成Text Embeddings,作为条件注入DiT Expert模型中。CogVideoX中选用T5-XXL作为Text Encoder,Text Encoder具备较强的文本信息提取能力。

3D VAE架构
在这里插入图片描述
在这里插入图片描述
主要包括一个Encoder(编码器)、一个Decoder(解码器)以及一个Latent Space Regularizer(潜在空间正则器):

编码器: 用于将输入视频数据转换为Latent Feature。这一过程中,编码器会通过四个下采样阶段逐步减少视频数据的空间和时间分辨率。
解码器: 将视频数据的Latent Feature转换成原始的像素级视频。解码器也包含四个对称的上采样阶段,用于恢复视频数据的空间和时间分辨率。
潜在空间正则化器: 通过KL散度来约束高斯Latent空间,对编码器生成的Latent Feature进行正则化。这对于AI视频大模型的生成效果和稳定性至关重要。

3D Expert Transformer的完整结构图
在这里插入图片描述
Text Encoder部分(T5-xxl):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GELU、ReLU、Sigmoid三大激活函数之间的数值对比:在这里插入图片描述

从上图可以看出:

  1. ReLU激活函数在输入为正数时,输出与输入相同;在输入为负数时,输出为0。它非常简单但会完全忽略负值的输入
  2. Sigmoid激活函数输出在 0 到 1 之间平滑过渡,适合在某些分类任务中使用,但可能会导致梯度消失问题。
  3. GELU激活函数比ReLU 更平滑,并且在负值附近不会直接剪切到 0。它让负值小幅保留,避免了完全忽略负输入,同时保留了 ReLU 在正值区间的主要优点。

总的来说,GELU是一种更平滑的激活函数,能更好地保留输入的细微信息,尤其是在处理负值时。通过结合多种非线性运算(如 tanh 和多项式),GELU 提供了比 ReLU 更平滑和复杂的输出,有助于AI模型在训练过程中更好地捕捉数据中的复杂特征与模式。

Stable Video Diffusion(SVD)

SVD
参考文章

解决问题:

模拟物理现实世界,生成逼真视频

解决思路:

目前开源的Stable Video Diffusion模型是两个图生视频的版本,都是基于Stable Diffusion V2.1进行训练的,一个生成14帧(SVD),一个生成25帧(SVD-XT),从人工评测结果看,效果超过runaway的GEN2和Pika Labs的免费模型。

超大训练集
StabilityAI使用了一个包含5.8亿个视频剪辑的巨大数据集,来训练SVD模型。为了筛选高质量数据,我们首先检测每个视频中的不同镜头和转场,并且评估每个镜头中的运动信息,然后为每个镜头自动生成描述文字和每个镜头的美学效果等。

SVD的数据筛选具体方法如下:

级联切换检测: 采用级联的切换检测方法识别视频中的场景转场。

运动信息提取: 基于稠密光流估计每个视频片段的运动信息。

文本描述生成: 为每个视频片段自动生成三种形式的文字描述。

质量评估: 使用CLIP等方法评估每个片段的视觉质量、文本匹配度等。

过滤去噪: 根据上述评估指标过滤掉质量较差的视频片段。

经过层层筛选,最后保留了一个约1.5亿视频片段的超高质量数据集,为后续的SVD模型训练奠定重要基础。
多阶段训练
SVD模型在模型训练方面也与传统方法不同,其采用了一个三层训练架构。

第一阶段 是进行图像预训练,初始化一个图像生成模型。第二阶段 是在已经构建的大规模视频数据集上进行视频预训练,学习运动表征。第三阶段是在一个小规模的高质量视频数据集上进行微调。

这种分阶段的训练策略可以让模型更好地生成高保真视频。

同时SVD在模型框架上也进行了大量创新。例如,设计了专门的时间卷积和注意力结构,明显提高了视频时序信息的捕捉和学习能力。

多任务微调
在训练好后,我们需要对SVD模型进一步微调,可用于多模式的视频生成任务。

文本描述生成视频: 文本提示可以直接作为条件生成视频。

图像生成视频: 可以使用一张图像作为条件,生成这张图像的后续运动镜头。

多视角渲染: 可以生成同一个物体的多个前后左右观察角度的视频镜头,这样可以生成3D 效果视频。

插入视频帧: 可以将两张图像作为条件,生成插入在它们中间的额外镜头,实现视频帧率的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/423340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 响应式工具函数isRef()、unref()、isReactive()、isReadonly()、isProxy()

isRef() isRef():检查某个值是否为 ref。 isRef函数接收一个参数,即要判断的值。如果该参数是由ref创建的响应式对象,则返回true;否则,返回false。 import { ref, isRef } from vue const normalValue 这是一个普通…

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘:异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…

STM32——看门狗通俗解析

笔者在学习看门狗的视频后,对看门狗仍然是一知半解,后面在实际应用中发现它是一个很好用的检测或者调试工具。所以总结一下笔者作为初学小白对看门狗的理解。 主函数初始化阶段、循环阶段和复位 众所周知,程序的运行一般是这样的&#xff1…

【面试八股总结】Redis持久化

Redis 实现了数据持久化的机制,这个机制会把数据存储到磁盘,这样在 Redis 重启就能够从磁盘中恢复原有的数据。 Redis 共有三种数据持久化的⽅式: AOF 日志:每执行一条写操作命令,就把该命令以追加的方式写入到⼀个文…

【计算机网络】HTTP相关问题与解答

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录 目录 一、HTTP请求和响应报文是怎样的? 1、请求报文 2、响应报文 二、HTTP请求方法有哪些? GET HEAD POST PUT DELETE PATCH OPTIONS TRACE CONNECT 三、GET请求与POST请…

菜单、工具栏 的基本使用

效果 代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QToolBar> #include<QDebug> #include<QPushButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupU…

将一个字符串以三个字符为间隔分别放在三个字符串数组里

要求 请编写函数fun&#xff0c;其功能是:编写函数char *fun(char*s0,char *s1,char *s2,char*s3)&#xff0c; 要求实现: 将s0所指字符串分解成三个字符串&#xff0c;分别存入s1、s2、s3所指内存中。分解的方法是&#xff0c;s1、s2、53从s0中依次顺序每隔3个字符取1例如:s0…

OpenCV 4.10 windows 上编译并上传conan

目录 一. 上传opencv 预编译包 二. 自己手动写一个测试包并上传 三. 自己写一个app, 引用包 一. 上传opencv 预编译包 1. 下载Opencv, 并用cmake 打开 打开工程之后&#xff0c;编译&#xff0c;install&#xff0c; 目录如下 2. 准备conan 包 把Debug 和 Release 分开放 3…

CleanClip for Mac 剪切板 粘贴工具 历史记录 安装(保姆级教程,新手小白轻松上手)

CleanClip&#xff1a;革新macOS剪贴板管理体验 目录 功能概览 多格式历史记录保存智能搜索功能快速复制操作拖拽功能 安装指南 前期准备安装步骤 配置与使用 功能概览 多格式历史记录保存 CleanClip支持保存文本、图片、文件等多种格式的复制历史记录&#xff0c;为用户提…

【应用笔记】Cot Menu 轻量级多级菜单控制框架程序(C语言)

【应用笔记】Cot Menu 轻量级多级菜单控制框架程序&#xff08;C语言&#xff09; 前言: 工作需要, 实现一个串口打印的类shell菜单. 如果按照以往的习惯我会自己重新"构思"(狗屎)一个菜单框架.之前用oled和lcd时,我都从零重复造轮子. 作为一个成熟的程序员, 应该要学…

【机器学习(二)】分类和回归任务-决策树算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;树的构造&#xff08;二&#xff09;划分选择1、信息增益2、基尼指数3、卡方检验 &#xff08;三&#xff09;停止标准&#xff08;四&#xff09;剪枝处理1、预剪枝2、后剪枝 三、决策树的优缺点四、决策树分类任…

ai扩图使用什么软件?无损扩图用这5个

你们知道ai扩图是什么吗&#xff1f;其实就是利用人工智能技术对图片进行无损放大处理&#xff0c;让低分辨率的图片变得清晰。通常在图像处理、设计和摄影领域尤为实用。 那么&#xff0c;你们知道ai扩图在线工具怎么选吗&#xff1f;别急&#xff0c;下面这篇文章分享5个超好…

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能&#xff0c;但它与其他Python库&#xff08;如Matplotlib和Seaborn&#xff09;无缝集成&#xff0c;允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法&#xff1a; 1. 使用Matplotlib Pandas中的plot()方法…

品读 Java 经典巨著《Effective Java》90条编程法则,第4条:通过私有构造器强化不可实例化的能力

文章目录 【前言】欢迎订阅【品读《Effective Java》】系列专栏java.lang.Math 类的设计经验总结 【前言】欢迎订阅【品读《Effective Java》】系列专栏 《Effective Java》是 Java 开发领域的经典著作&#xff0c;作者 Joshua Bloch 以丰富的经验和深入的知识&#xff0c;全面…

【软件文档】软件系统应急处理方案(word原件)

1 总则   1.1 目的 1.2 工作原则   2 应急工作小组机构及职责 3 预警和预防机制 3.1 系统监测及报告   3.2 预警 3.3 预警支持系统 3.4 预防机制 4 应急处理程序 4.1 系统突发事件分类分级的说明 4.2 系统应急预案启动 4.3 现场应急处理 5 保障措施   5.1 应急演练 5.2…

时间复杂度计算 递归

我们先拿出 2021 csp-s 程序题中一道看着就头大的程序题&#xff0c;要求分析 solve1 的复杂度。 设 T(n) ⁡ \operatorname{T(n)} T(n) 表示数组长度为 n n n 时的复杂度&#xff08;即 m − h 1 n m-h1n m−h1n&#xff09;。 T ( 1 ) 1 T(1)1 T(1)1&#xff0c;根据…

R语言机器学习算法实战系列(一):XGBoost算法(eXtreme Gradient Boosting)

介绍 XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升决策树(GBDT)的优化算法,它在处理大规模数据集和复杂模型时表现出色,同时在防止过拟合和提高泛化能力方面也有很好的表现。以下是XGBoost算法的原理和应用方向的详细介绍: 算法原理 目标函数:XGBoost的目标…

华为ensp中vlan与静态路由技术的实现

vlan 同一网段的设备&#xff0c;可以互通&#xff1b; 虚拟局域网&#xff1a;将局域网从逻辑上划分为多个局域网&#xff0c;不同通过vlan编号区分&#xff1b; 实现网络隔离。提高了网络安全性&#xff1b; vlan编号为12位&#xff1b; 范围1-4094可以用来配置 默认处于…

pytorch-AutoEncoders实战

目录 1. AutoEncoders回顾2. 实现网络结构3. 实现main函数 1. AutoEncoders回顾 如下图&#xff1a;AutoEncoders实际上就是重建自己的过程 2. 实现网络结构 创建类继承自nn.Model&#xff0c;并实现init和forward函数&#xff0c;init中实现encoder、decoder 直接上代码&a…

代码随想录算法训练营第13天|二叉树基础知识、递归遍历、迭代遍历、层序遍历、116. 填充每个节点的下一个右侧节点指针

目录 二叉树基础深度和高度满二叉树和完全二叉树二叉搜索树和平衡二叉搜索树二叉树节点定义前中后序遍历 递归遍历前序递归遍历—144. 二叉树的前序遍历 迭代遍历层序遍历116. 填充每个节点的下一个右侧节点指针1、题目描述2、思路3、code 二叉树基础 深度和高度 满二叉树和完…