Latte:一个类似Sora的开源视频生成项目

前段时间OpenAI发布的Sora引起了巨大的轰动,最长可达1分钟的高清连贯视频生成能力秒杀了一众视频生成玩家。因为Sora没有公开发布,网上对Sora的解读翻来覆去就那么多,我也不想像复读机一样再重复一遍了。

本文给大家介绍一个类似Sora的视频生成项目:Latte。为什么说它类似Sora呢?这个项目的全称是:Latent Diffusion Transformer for Video Generation(用于视频生成的潜在扩散转换器),对Sora生成技术有所了解的同学看到 Diffusion 和 Transformer 这两个单词应该就明白我在说什么了,Sora也同样使用了这两种技术。而且 Sora 和 Latte 都声称参考了DiT(Scalable Diffusion Models with Transformers)项目,它们的技术路线应该都是差不多的。最重要的是 Latte 是开源的,可以自己部署着玩,这篇文章就给大家介绍下 Latte 的原理和使用方法。

对 Diffusion 和 Transformer 这两种技术完全没概念的同学可以看我之前写的一篇科普文章:AI视频生成的重大突破:OpenAI的梦幻制造机Sora

效果演示

下图是官网的文生视频效果展示。注意实际生成时也需要抽卡,有时候效果也是一言难尽。

Latte介绍

Latte(Latent Diffusion Transformer)是一种用于视频生成的创新模型。它首先通过预训练的变分自编码器(VAE)将输入视频编码为潜在空间中的特征,并从中提取出时空令牌(Token)。然后应用一系列 Transformer 块对这些令牌进行建模,以捕捉视频数据分布。由于视频具有复杂的时空信息且高分辨率帧内包含大量细节,Latte设计了四种不同的高效Transformer变体,这四种变围绕如何有效地利用Transformer网络捕获视频数据中的时空分布信息展开,各自探索了不同的空间-时间分解方法、信息融合策略以及计算效率优化方案。

  • 变体1:该变体的Transformer主干结构包括空间Transformer块和时间Transformer块。空间Transformer块专注于在同一时间索引下的视频令牌之间捕捉纯空间信息,通过关注相同时间步内的像素或区域之间的关联性来提取空间特征。而时间Transformer块则采用“交错融合”的方式处理跨时间维度的信息,以捕捉不同时间帧间的变化和动态内容。
  • 变体2:不同于变体1中的即时融合策略,变体2可能采用了“晚期融合”机制,即先独立处理空间和时间维度上的信息,在后续阶段再将两者合并,以另一种方式整合时空上下文。
  • 变体3:此变体主要聚焦于对Transformer内部多头注意力模块进行分解。它首先仅在空间维度上计算自注意力,随后再在时间维度上执行自注意力计算。这样设计的目的是让每个Transformer块能够先后分别从空间和时间角度理解输入序列,并最终综合捕获并建模视频的时空信息。
  • 变体4:变体4将多头注意力(MHA)分解为两个组件,利用不同的组件分别处理空间和时间维度上的令牌。在Transformer主干结构之后,通过采用标准线性解码器以及重塑操作,对视频令牌序列进行解码,从而得出预测噪声和预测协方差。。

在实际应用时,Latte首先将视频帧序列转换为一系列令牌,并利用上述某种变体中对应的 Transformer 结构对这些令牌进行编码和解码。具体来说,在生成阶段,模型会依据学习到的反向扩散过程,在潜在空间中逐步还原出低噪声的视频帧表示,并最终重构为连续且逼真的视频内容。

实验结果显示,Latte在FaceForensics、SkyTimelapse、UCF101和Taichi-HD这四个标准视频生成数据集上,Latte能够生成逼真的、具有连贯时序内容的视频,并在Fréchet视频距离(FVD)、Fréchet Inception Distance (FID)和Inception Score等指标上达到了最先进的性能水平。

此外,Latte还被扩展到文本到视频生成任务(T2V),其表现与当前的T2V模型相当。不过可能模型训练的数据还不够,生成的视频效果还有很大提升空间。

使用Latte

这里主要介绍使用Latte进行推理的方法,有两种方式,一是直接使用我制作的AutoDL镜像,二是手动一步步安装。注意Latte预训练的模型只能生成2秒的视频,更长的视频需要自己训练模型,训练视频模型比较耗费资源,需要的直接看Github上的说明就行了:GitHub - Vchitect/Latte: Latte: Latent Diffusion Transformer for Video Generation.。

使用AutoDL镜像

AutoDL访问地址:https://www.autodl.com,AutoDL的注册和使用方法可以看这篇文章:

1、创建服务器实例时镜像选择:Vchitect/Latte/yinghuoai-latte 的最新版本。我已经在3090、4090、3080*2等显卡型号上测试通过,其它型号可能问题也不大。

2、打开服务器实例的 JupyterLab,进入操作环境。

操作环境如下图所示,左侧是文件及目录,我编写了一个生成器的页面,可以在其中直接执行相关视频生成命令,目前可以生成四种固定类型的视频,以及通过文本自由生成视频。

3、点击选中下方的代码单元格后,再点击菜单栏中的“箭头按钮”即可执行对应的生成任务。

注意需要先执行“初始化”命令,后边的视频生成任务随便执行。

任务执行进度如下,执行可能较慢,请耐心等待!

日志中显示了生成的视频位置。

可在左侧目录中找到,然后在对应的文件上右键下载。

手动安装

手动安装步骤比较多,请大家跟紧了。

安装conda

因为需要安装大量的python包,为了方便,我们这里使用conda包管理,没安装的同学先安装:Installing Miniconda — Anaconda documentation

如果已经安装过,可以通过命令升级到最新版本:

conda update -n base -c defaults conda

下载Latte

代码地址:GitHub - maxin-cn/Latte: The official implementation of Latte: Latent Diffusion Transformer for Video Generation.

通过git安装的方法:

git clone https://github.com/maxin-cn/Latte.git

修改依赖包的版本

Latte对python和相关包的版本依赖比较重,实测需要调整下官方提供的环境依赖文件。

在Latte根目录中找到 environment.yml 文件,完整修改如下:

name: latte
channels:
  - pytorch
  - nvidia
dependencies:
  - python = 3.10.8
  - pytorch = 2.0.0
  - torchvision
  - pytorch-cuda=11.7
  - pip
  - pip:
    - timm
    - diffusers[torch]==0.24.0
    - accelerate
    - tensorboard
    - einops
    - transformers
    - av
    - scikit-image
    - decord
    - pandas
    - imageio-ffmpeg

修改的就是下图中这三个:

创建Python虚拟环境

使用下边的命令,实测还需要再补充安装一些python包。

# 进入Latte目录
cd Latte
# 清理latte虚拟环境
conda remove --name latte --all
# 创建latte虚拟环境
conda env create -f environment.yml
# 激活latte虚拟环境
source activate latte

# 在latte虚拟环境中补充安装一些python包
pip install omegaconf
pip install SentencePiece
pip install beautifulsoup4
pip install ftfy
pip install codewithgpu

下载预训练模型

预训练模型是Latte官方提前训练好的模型,我们可以直接使用。

建议从huggingface下载:

https://huggingface.co/maxin-cn/Latte/tree/main

或者从这个国内镜像站:

maxin-cn/Latte · HF Mirror

生成视频

Latte项目中内置了几个脚本,可以帮我们快速生成视频。

sample 目录下这几个sh文件就是,可以在shell或者命令行程序中执行它们。

我们看一个 t2v.sh:

export CUDA_VISIBLE_DEVICES=5
python sample/sample_t2v.py --config configs/t2v/t2v_sample.yaml

这里首先通过export设置使用哪个显卡,如果只有1个,请设置为0。

然后就是运行python程序生成视频的命令,注意后边的配置文件,官方也提供了示例,就在config目录下,需要根据实际情况进行修改。

  • ckpt:使用的模型文件路径,请修改“/path/to”为上一步下载模型的本地保存目录。
  • save_img_path:视频保存路径。
  • pretrained_model_path:文本生成视频专用的一些模型,请修改“/path/to”为上一步下载模型的本地保存目录。

其它参数基本不需要调整了,当然可以改改试试。


以上就是本文的主要内容了,如有兴趣欢迎讨论交流。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++的类与对象(三)

目录 类的6个默认成员函数 构造函数 语法 特性 析构函数 特性 类的6个默认成员函数 问题:一个什么成员都没的类叫做空类,空类中真的什么都没有吗? 基本概念:任何类在什么都不写时,编译器会自动生成以下六个默认…

别再为微信登录烦恼!Xinstall的Universal Links让你秒速直达APP!

微信登录Universal Links校验不通过?无法直达APP场景页面?别担心,Xinstall来帮你解决这一难题! 随着移动互联网的迅猛发展,App已成为我们日常生活中不可或缺的一部分。而微信,作为拥有十亿用户的社交巨头…

STM32FreeRTOS信号量(STM32cube高效开发)

一、信号量 (一)信号量概括 信号量是操作系统中重要的一部分,信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 FreeRTOS 提供了多种信号量,按信号量的功能可分为二值信号量、计数型信号量、互斥信…

FreeRTOS操作系统学习——FreeRTOS工程介绍

FreeRTOS工程介绍 核心文件 FreeRTOS的最核心文件只有2个: FreeRTOS/Source/tasks.cFreeRTOS/Source/list.c 文件功能如下图: 头文件相关 内存管理文件 文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下,它也是放…

uniapp直接连接wifi(含有ios和安卓的注意事项)

前言 小程序中直接连接wifi-----微信小程序 代码 启动 //启动wifistartWifi() {return new Promise((resolve, reject) > {uni.startWifi({success: (res) > {console.log(启动wifi 成功, res)resolve(true)},fail: (err) > {console.error(启动wifi 失败, err)uni.s…

【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题

摘要 当在uni-app中进行iOS打包时,有时会遇到profile文件与私钥证书不匹配的问题。本文将介绍如何解决这一问题,以及相关的技术细节和操作步骤。 引言 在uni-app开发过程中,iOS打包是一个常见的操作。然而,有时会出现profile文…

SEMICON专题直播预告|一起聊聊半导体测试

2024年3月20日,全球最大规模半导体嘉年华——SEMICON China 2024将在上海新国际博览中心盛大启幕,作为半导体测试领域的领军企业,加速科技即将重装亮相此次盛会(N2馆N2327)。 在正式开展之前,加速科技将举…

2024年最受欢迎的15款缺陷管理工具

本文整理分享了15款再2024年受欢迎的bug(缺陷)跟踪管理工具:1.PingCode;2.Worktile;3.SpiraTeam;4. Jira Software;5. BugHerd;6. Zoho Projects;7.SmartSheet&#xff1…

腾讯云服务器5年优惠活动价格表(2核4G和4核8G)

腾讯云服务器网整理五年云服务器优惠活动 txyfwq.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,…

5G网络深度覆盖提升感知优化案例

随着5G业务的发展,用户感知尤为重要,随着人们的生活水平不断提高,对网络使用的要求也越来越高,用户感知更加重要,数据业务已超越语音业务成为流量和收入的主体,信号质量的决定作用更明显。5G TDD的频谱大带…

【CSP试题回顾】202203-2-出行计划

CSP-202203-2-出行计划 关键点:前缀和数组(高频考点) 详见:【CSP考点回顾】前缀和数组 解题思路 解法利用差分数组技巧,使得更新时间区间的操作和查询操作的时间复杂度都是 O(1),整体算法的时间复杂度主…

2024年最全洗地机选购攻略盘点丨希亦、小米、云鲸、海尔洗地机哪款值得入手?

在现代家居清洁中,洗地机是不可或缺的得力助手,它融合了吸尘、拖地等多种功能。面对市场上琳琅满目的洗地机品牌和型号,选择一个可靠的品牌至关重要。优质的品牌能够提供高品质的产品,使您的清洁工作更加轻松高效。本文将向您推荐…

基于多时间尺度的植被干旱响应特征与机制分析

随着全球气候变暖的趋势愈发明显,干旱事件不仅发生的频率增加,其持续时间和影响范围也在不断扩大。干旱对生态环境造成了严重破坏,导致生物多样性减少、土地退化和水资源短缺;对农业生产而言,干旱会导致作物减产甚至绝…

回溯算法04-组合总数(Java)

4.组合总数 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以…

一张图串起来springcloud alibaba以及其他组件的作用,欢迎各位巨佬指正

一般来说,用一个gateway或者一个nginx应该够用,但是加上去好像也无妨 针对秒杀场景,有几种常见的解决方案: 基于Redis的缓存方案: 预热缓存:在秒杀开始前,将商品库存等信息提前加载到Redis缓存…

OSI七层模型/TCP四层模型

协议: 协议是双方共同指定的一组规则,在网络通信中表示通信双方传递数据和解释数据的一组规则。 从A上传文件到服务器B,需要在A和B之间制定一个双方都认可的规则,这个规则就叫文件传输协议,该协议是ftp协议的一个初级版本&#…

PySide6+VSCode Python可视化环境搭建

pip install pyside6 下载本期源码 vscode装一个PYQT Integration插件,设置好两个路径(下面有个脚本用于获取路径) 用everything的童鞋注意了:工具/选项/索引/强制重建 重启vscode可以看到,右击.ui文件时出现可以操作…

01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)

环境搭建、SpringCloud微服务(注册发现、服务调用、网关) 1)课程对比 2)项目概述 2.1)能让你收获什么 2.2)项目课程大纲 2.3)项目概述 随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息&…

map和set(一)——关联式容器的常用接口使用及区别

一、关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面 、存储的是元素本身。 那什么…

django学习记录07——订单案例(复选框+ajax请求)

1.订单的数据表 1.1 数据表结构 1.2 数据表的创建 models.py class Order(models.Model):"""订单号"""oid models.CharField(max_length64, verbose_name"订单号")title models.CharField(max_length64, verbose_name"名称&…