当前位置: 首页 > news >正文

AIGC视频生成模型:ByteDance的PixelDance模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance,论文于2023年11月发布,模型上线于2024年9月,同时期上线的模型还有Seaweed(论文未发布)。

在这里插入图片描述

🌺优质专栏回顾🌺:

  1. 机器学习笔记
  2. 深度学习笔记
  3. 多模态论文笔记
  4. AIGC—图像

文章目录

    • 论文
    • 摘要
    • 引言
      • 输入
      • 训练和推理时的数据处理
      • 总结
    • 相关工作
      • 视频生成
      • 长视频生成
    • 方法
      • 模型架构
        • 潜在扩散架构
        • 图像指令注入
      • 训练和推理
    • 实验
      • 两种生成模式
      • 更多应用
        • 草图指令
        • 零样本视频编辑
    • 结论

论文

论文:https://arxiv.org/pdf/2311.10982
项目:https://makepixelsdance.github.io/

摘要

目前的视频生成方法主要侧重于文本到视频的生成,这样生成的视频片段往往动作极少。作者认为,仅依赖文本指令进行视频生成是不够且并非最优的。

在本文中,作者介绍了PixelDance,这是一种基于扩散模型的新颖方法,它将视频生成的第一帧和最后一帧的图像指令与文本指令相结合。

这并不是首例提出依赖文本指令进行视频生成是不够的论文,在Meta的Emu Video中也提到了,但是两者的生成策略略有不同:

  • Emu Video根据输入文本提示生成图像;之后再基于图像和文本的强条件生成视频。
  • 输入的内容包括,文本,作为视频第一帧的图像,作为视频最后一帧的图像。

Emu Video模型的实现参考历史文章:AIGC视频生成明星——Emu Video模型

引言

输入

作者提出了一种新颖的视频生成输入,其输入包括三部分:

  1. 文本指令
  2. 视频片段的第一帧引入图像指令。第一帧的图像指令描绘了视频片段的主要场景。
  3. 视频片段的最后一帧引入图像指令。最后一帧的图像指令(在训练和推理中可选使用)描绘了片段的结尾,并为生成提供了额外的控制。

这种方法还可以创建更长的视频,在这种情况下,模型会被多次应用,前一个片段的最后一帧将作为后续片段的第一帧指令

训练和推理时的数据处理

相比于其他模型提出使用高度描述性的文本注释以更好地遵循文本指令。图像指令使用真实视频帧,更加直接和易于获取。

PixelDance是一种基于潜在扩散模型的视频生成方法,以 <文本,第一帧,最后帧>指令为条件。

文本指令由预训练的文本编码器编码,并通过交叉注意力机制集成到扩散模型中。
图像指令由预训练的VAE编码器编码,并与扰动后的视频潜在表示或高斯噪声连接,作为扩散模型的输入,如下所示:【在下节“方法”中会详细介绍】。

  • 第一帧

    • 在训练中,使用(真实)第一帧来强制模型严格遵循指令,保持连续视频片段之间的连续性。
    • 在推理中,这个指令可以来源:
      1. 从文本到图像(T2I)模型中获得
      2. 由用户提供
  • 最后一帧

    • 在训练中,我们有意避免鼓励模型完全复制最后一帧指令,因为在推理中很难提供完美的最后一帧,在最后一帧的处理上,作者开发了三种技术:
      • 第一,在训练中,最后一帧指令是从视频片段的最后三帧(真实帧)中随机选择的。
      • 第二,我们向指令中引入噪声,以减少对指令的依赖并提高模型的鲁棒性。
      • 第三,在训练中,我们以一定的概率(例如25%)随机丢弃最后一帧指令。
    • 在推理中,用户可以使用基本的图像编辑工具创建这种指令。模型能够适应用户提供的粗略草图作为指导,而不需要提供完美的最后一帧。简单而有效的推理采样策略如下(最后一帧指令的影响可以通过T来调整。):
      • 在前T步去噪步骤中,利用最后一帧指令引导视频生成朝着期望的结束状态发展。
      • 在剩余的步骤中,丢弃该指令,使模型能够生成更具时间连贯性的视频。

总结

作者在文中说明了其主要贡献可以总结如下:

  • 提出了一种基于扩散模型的新颖视频生成方法PixelDance,它将第一帧和最后一帧的图像指令与文本指令相结合(还可以生成长视频,这一点是最重要的)。
  • 为PixelDance开发了训练和推理技术,这不仅有效地提高了生成视频的质量,而且为用户提供了对视频生成过程更多的控制。
  • 在公开数据上训练的模型在生成具有复杂场景和动作的高动态视频方面表现出色,为视频生成设定了新的标准。

相关工作

视频生成

扩散模型在逼真的文本到图像生成方面取得了显著进展,其表现出比GAN更强的鲁棒性,并且与基于Transformer的模型相比需要更少的参数。潜在扩散模型被提出通过在压缩的低维潜在空间中训练扩散模型来减轻计算负担。

对于视频生成,以往的研究通常在预训练的文本到图像扩散模型的2D UNet添加时间卷积层和时间注意力层【如Gen-1和Emu Video等】。尽管这些进展通过集成超分辨率模块为高分辨率视频的生成铺平了道路,但生成的视频具有简单、动作极少的特点。

最近,视频编辑领域取得了显著进展,特别是在保持视频原始结构和运动的同时进行内容修改方面,但存在下面的问题:

  • 寻找合适的参考视频进行编辑非常耗时。
  • 限制了创作的范围,因为它排除了合成全新内容(例如,一只北极熊走在长城上)的可能性。

长视频生成

长视频生成是一项更具挑战性的任务,它要求连续的视频片段之间无缝过渡,并且场景和角色具有长期一致性。通常有两种方法:

  1. 自回归方法采用滑动窗口,以前一个片段为条件生成新的片段。自回归方法由于时间上的误差累积容易导致质量下降。
  2. 分层方法首先生成稀疏帧,然后插值中间帧。需要长视频进行训练,由于在线视频中频繁的镜头变化,这些长视频很难获得。

在本文中,PixelDance以自回归的方式生成连续的视频片段,并且在合成长期一致的帧方面比现有模型表现更优。同时,我们提倡用户积极参与生成过程,就像电影导演一样,以确保生成的内容与用户的期望紧密一致。

方法

本文试图让模型专注于学习视频内容的动态变化,以生成具有丰富动作的视频。将第一帧和最后一帧的图像指令与文本指令相结合用于视频生成,并且我们有效地利用公开视频数据进行训练。我们将在本节详细阐述模型架构量身定制的训练和推理技术

模型架构

潜在扩散架构

论文中使用变分自动编码器(VAE)在潜在空间中进行去噪训练,以减轻计算负担。同时采用广泛使用的2D UNet作为扩散模型,它由一系列空间下采样层和一系列带有跳跃连接空间上采样层构成。它由两个基本块组成:

  • 2D卷积块
  • 2D注意力块。

通过插入时间层将2D UNet扩展为3D变体,实现如下:

  • 在2D卷积层之后添加沿时间维度的1D卷积层
  • 在2D注意力层之后添加沿时间维度的1D注意力层(双向自注意力机制)

Runway的Gen-1和Meta的Emu Video也是如此实现的。

该模型进行图像和视频联合训练,以在空间维度上保持高保真的生成能力。对于图像输入,1D时间操作被禁用。

图像输入主要涉及两类:训练时的图像指令输入以及联合训练时的普通图像输入

我们使用预训练的CLIP文本编码器对文本指令进行编码,并通过UNet中的交叉注意力层将嵌入文本注入,其中隐藏状态作为查询文本作为键和值

图像指令注入

第一帧最后一帧图像指令与文本指令相结合。在训练中,使用真实视频帧作为指令,这很容易获得。图像指令首先使用VAE将它们编码到扩散模型的输入空间中,得到 f f i r s t f^{first} ffirst f l a s t f^{last} flast 。最终的图像条件构建为: c i m a g e = [ f f i r s t , P A D s , f l a s t ] ∈ R F × C × H × W c^{image }=\left[f^{first }, PADs, f^{last }\right] \in \mathbb{R}^{F × C × H × W} cimage=[ffirst,PADs,flast]RF×C×H×W
其中 P A D s ∈ R ( F − 2 ) × C × H × W PADs \in \mathbb{R}^{(F-2) ×C ×H ×W} PADsR(F2)×C×H×W 。然后,条件 c i m a g e c^{image} cimage与噪声潜在表示 z t z_t zt沿通道维度连接,作为扩散模型的输入。

训练和推理

在这里插入图片描述

图3:展示了PixelDance的训练过程。原始视频片段和图像指令(位于红色和绿色框中)被编码为 z z z c i m a g e c^{image} cimage ,然后在添加不同噪声进行扰动后,沿着通道维度进行拼接

训练过程如上图所示。

第一帧指令:训练中使用真实的第一帧,使模型在推理中严格遵循第一帧指令。

最后一帧指令:有意避免鼓励模型完全复制最后一帧指令。因为在推理时,预先无法获得真实的最后一帧,模型需要适应用户提供的粗略草图作为指导,以生成时间连贯的视频。为此,引入了三种技术来选择最后一帧指令:

  • 第一,我们从视频片段的最后三帧真实帧中随机选择一帧作为训练的最后一帧指令。
  • 第二,为了提高鲁棒性,我们用噪声扰动图像指令的编码潜在表示 c i m a g e c^{image} cimage
  • 第三,在训练中,我们以概率 η \eta η随机丢弃最后一帧指令,将相应的潜在表示替换为零。

在第三种技术中,作者还提出了一种简单而有效的推理技术。在推理过程中,在总共T步去噪步骤的前 τ \tau τ步中应用最后一帧指令来引导视频生成朝着期望的结束状态发展,在后续步骤中丢弃该指令,以生成更合理且时间连贯的视频:
x ~ θ = { x ^ θ ( z t , f f i r s t , f l a s t , c t e x t ) , i f t < τ x ^ θ ( z t , f f i r s t , c t e x t ) , i f τ ≤ t ≤ T \tilde{x}_{\theta}=\left\{\begin{array}{ll} \hat{x}_{\theta}\left(z_{t}, f^{first }, f^{last }, c^{text }\right), & if t<\tau \\ \hat{x}_{\theta}\left(z_{t}, f^{first }, c^{text }\right), & if \tau \leq t \leq T \end{array} \right. x~θ={x^θ(zt,ffirst,flast,ctext),x^θ(zt,ffirst,ctext),ift<τifτtT
τ \tau τ决定了模型对最后一帧指令的依赖程度,调整 τ \tau τ将实现各种应用。例如,我们的模型可以在没有最后一帧指令的情况下(即 τ = 0 \tau = 0 τ=0)生成高动态视频。此外,我们在推理中应用无分类器引导,它混合了模型在有文本提示和无文本提示条件下的分数估计

实验

参照论文原文

两种生成模式

第一种是基础模式(Basic Mode)【和Emu Video 一样】,用户只需要提供一张指导图片+文本描述,PixelDance 就可以生成有高度一致性且有丰富动态性的视频,其中指导图片可以是真实图片,也可以利用现有的文生图模型生成,如下所示:
在这里插入图片描述

第二种是高级魔法模式(Magic Mode),给了用户更多发挥想象力和创造力的空间。在这种模式下,用户需要提供两张指导图片+文本描述,可以更好地生成更有难度的各种炫酷特效镜头,如下所示:
在这里插入图片描述

更多应用

草图指令

我们提出的方法可以扩展到其他类型的图像指令,如语义图、图像草图、人体姿态和边界框。为了证明这一点,我们以图像草图为例,使用图像草图作为最后一帧指令对PixelDance进行微调。结果如图10的前两行所示,表明一个简单的草图图像能够指导视频生成过程。

零样本视频编辑

PixelDance无需任何训练即可执行视频编辑,这通过将视频编辑任务转化为图像编辑任务来实现。如图10的最后一个示例所示,通过编辑给定视频的第一帧和最后一帧,PixelDance生成了与用户视频编辑期望一致的时间连贯视频。

结论

在本文中,作者提出了一种基于扩散模型的新颖视频生成方法PixelDance,它将第一帧和最后一帧的图像指令与文本指令相结合。作者还为该方法开发了专门的训练和推理技术。主要在WebVid - 10M上训练的PixelDance在合成具有复杂场景和动作的视频方面表现出卓越的熟练度,为视频生成设定了新的标准。

尽管我们的方法取得了显著成果,但仍有进一步改进的空间:

  • 首先,模型可以从高质量的开放域视频数据训练中受益。
  • 其次,在特定领域对模型进行微调可以进一步增强其能力。
  • 第三,结合概述视频关键元素和动作的注释文本可以提高与用户指令的匹配度。
  • 最后,PixelDance目前仅包含15亿参数,为未来的扩展提供了机会。未来的工作将对这些方面进行进一步研究。

相关文章:

AIGC视频生成模型:ByteDance的PixelDance模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance&#xff0c;论文于2023年11月发布&#xff0c;模型上线于2024年9月&#xff0c;同时期上线的模型还有Seaweed&…...

python远程获取数据库中的相关数据并存储至json文件

1. conn中的5个变量的含义&#xff1a; ① Driver&#xff1a;数据库驱动程序&#xff0c;我使用的是SQL Server数据库。 ② Server&#xff1a;数据库所在的服务器地址。 ③ Database&#xff1a;要连接的数据库的名称。 ④ UID&#xff1a;登录 SQL Server 数据库的用户名…...

Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)

准备工作 Kubernetes v1.28.0搭建教程请参考&#xff1a;Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml &#xff0c;下载好之后&#xff0c;进入文件编辑 下载地址…...

详解三种常用标准化:Batch Norm、Layer Norm和RMSNorm

在深度学习中&#xff0c;标准化技术是提升模型训练速度、稳定性和性能的重要手段。本文将详细介绍三种常用的标准化方法&#xff1a;Batch Normalization&#xff08;批量标准化&#xff09;、Layer Normalization&#xff08;层标准化&#xff09;和 RMS Normalization&#…...

linux+docker+nacos+mysql部署

一、下载 docker pull mysql:5.7 docker pull nacos/nacos-server:v2.2.2 docker images 二、mysql部署 1、创建目录存储数据信息 mkdir ~/mysql cd ~/mysql 2、运行 MySQL 容器 docker run -id \ -p 3306:3306 \ --name mysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/…...

如何实现gitlab和jira连通

将 GitLab 和 Jira 集成起来可以实现开发任务与代码变更的联动&#xff0c;提高团队协作效率。以下是实现两者连通的详细步骤&#xff1a; 1. 确保必要条件 在进行集成之前&#xff0c;确保以下条件满足&#xff1a; 你有 GitLab 和 Jira 的管理员权限。Jira 是 Jira Cloud 或…...

利用ML.NET精准提取人名

在当今信息爆炸的时代&#xff0c;文本处理任务层出不穷&#xff0c;其中人名提取作为基础且重要的工作&#xff0c;广泛应用于信息检索、社交网络分析、客户关系管理等领域。随着人工智能不断进步&#xff0c;ML.NET作为微软推出的开源机器学习框架&#xff0c;为开发者提供了…...

Node.js的解释

1. Node.js 入门教程 1.1 什么是 Node.js&#xff1f; 1.1.1 Node.js 是什么&#xff1f; Node.js 是一个基于 JavaScript 的开源服务器端运行时环境&#xff0c;允许开发者用 JavaScript 编写服务器端代码。与传统的前端 JavaScript 主要运行在浏览器端不同&#xff0c;Nod…...

Macos下交叉编译安卓的paq8px压缩算法

官方没有android的编译方法&#xff0c;自己编写脚本在macos下交叉编译. 下载源码&#xff1a; git clone https://github.com/hxim/paq8px.git 稍旧的ndk并不能编译成功&#xff0c;需要下载最新的ndkr27c, 最后是使用clang来编译。 编译build.sh export ANDROID_NDK/Vol…...

如何在data.table中处理缺失值

&#x1f4ca;&#x1f4bb;【R语言进阶】轻松搞定缺失值&#xff0c;让数据清洗更高效&#xff01; &#x1f44b; 大家好呀&#xff01;今天我要和大家分享一个超实用的R语言技巧——如何在data.table中处理缺失值&#xff0c;并且提供了一个自定义函数calculate_missing_va…...

从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑

文章目录 从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑一 参考二 安装三 启动准备大模型文件 四 数据集&#xff08;关键&#xff09;&#xff01;4.1 Alapaca格式4.2 sharegpt4.3 在 dataset_info.json 中注册4.4 官方 alpaca_zh_demo 例子 999条数据, 本机微调 5分…...

SQL-leetcode—1164. 指定日期的产品价格

1164. 指定日期的产品价格 产品数据表: Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | new_price | int | | change_date | date | ---------------------- (product_id, change_date) 是此表的主键&#xff08;具…...

[Day 15]54.螺旋矩阵(简单易懂 有画图)

今天我们来看这道螺旋矩阵&#xff0c;和昨天发的题很类似。没有技巧&#xff0c;全是循环。小白也能懂~ 力扣54.螺旋矩阵 题目描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; …...

HTTP 配置与应用(不同网段)

想做一个自己学习的有关的csdn账号&#xff0c;努力奋斗......会更新我计算机网络实验课程的所有内容&#xff0c;还有其他的学习知识^_^&#xff0c;为自己巩固一下所学知识&#xff0c;下次更新校园网设计。 我是一个萌新小白&#xff0c;有误地方请大家指正&#xff0c;谢谢…...

Quartus:开发使用及 Tips 总结

Quartus是Altera&#xff08;现已被Intel收购&#xff09;推出的一款针对其FPGA产品的综合性开发环境&#xff0c;用于设计、仿真和调试数字电路。以下是使用Quartus的一些总结和技巧(Tips)&#xff0c;帮助更高效地进行FPGA项目开发&#xff1a; 这里写目录标题 使用总结TIPS…...

VSCode下EIDE插件开发STM32

VSCode下STM32开发环境搭建 本STM32教程使用vscode的EIDE插件的开发环境&#xff0c;完全免费&#xff0c;有管理代码文件的界面&#xff0c;不需要其它IDE。 视频教程见本人的 VSCodeEIDE开发STM32 安装EIDE插件 Embedded IDE 嵌入式IDE 这个插件可以帮我们管理代码文件&am…...

Golang并发机制及CSP并发模型

Golang 并发机制及 CSP 并发模型 Golang 是一门为并发而生的语言&#xff0c;其并发机制基于 CSP&#xff08;Communicating Sequential Processes&#xff0c;通信顺序过程&#xff09; 模型。CSP 是一种描述并发系统中交互模式的正式语言&#xff0c;强调通过通信来共享内存…...

HTML 文本格式化详解

在网页开发中&#xff0c;文本内容的呈现方式直接影响用户的阅读体验。HTML 提供了多种文本格式化元素&#xff0c;可以帮助我们更好地控制文本的显示效果。本文将详细介绍 HTML 中的文本格式化元素及其使用方法&#xff0c;帮助你轻松实现网页文本的美化。 什么是 HTML 文本格…...

我谈《概率论与数理统计》的知识体系

学习《概率论与数理统计》二十多年后&#xff0c;在廖老师的指导下&#xff0c;才厘清了各章之间的关系。首先&#xff0c;这是两个学科综合的一门课程&#xff0c;这一门课程中还有术语冲突的问题。这一门课程一条线两个分支&#xff0c;脉络很清晰。 概率论与统计学 概率论…...

五、华为 RSTP

RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;是 STP 的优化版本&#xff0c;能实现网络拓扑的快速收敛。 一、RSTP 原理 快速收敛机制&#xff1a;RSTP 通过引入边缘端口、P/A&#xff08;Proposal/Agreement&#xff09;机制等&…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...