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

news2025/1/24 14:23:40

大家好,这里是好评笔记,公主号: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亿参数,为未来的扩展提供了机会。未来的工作将对这些方面进行进一步研究。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看数据库,删除数据库,使用数据库;

SQL通用语法 SQL语句分类 DDL data definition language : 用来创建数据库&#xff0c;创建表&#xff0c;创建表中的字段&#xff0c;创建索引。因此成为 数据定义语言 DML data manipulation language 有了数据库和表以及字段后&#xff0c;那么我们就需要给这个表中 添加数…

Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用

QTableView 是QT的一个强大的表视图部件&#xff0c;可以与模型结合使用以显示和编辑数据。QSqlQueryModel、QSqlTableModel 都是用于与 SQL 数据库交互的模型,将二者与QTableView结合使用可以轻松地展示和编辑数据库的数据。 QSqlQueryModel的简单应用 import sys from PySid…

C语言文件操作:标准库与系统调用实践

目录 1、C语言标准库文件操作 1.1.题目要求&#xff1a; 1.2.函数讲解&#xff1a; fopen 函数原型 参数 常用的打开模式 返回值 fwrite函数 函数原型 参数 返回值 注意事项 fseek函数 函数原型 参数 返回值 fread函数 函数原型 参数 返回值 fclose 函数…

【2024年华为OD机试】 (C卷,100分)- 多段线数据压缩(JavaScriptJava PythonC/C++)

一、问题描述 问题描述 给定一个多线段的坐标列表&#xff0c;每个坐标由行号和列号表示。多线段的走向只能是水平、竖直或斜向45度。输入数据包含冗余的坐标点&#xff0c;要求输出最简化的坐标列表&#xff0c;仅保留起点、拐点和终点。 输入描述 输入数据为多线段的坐标…

状态模式——C++实现

目录 1. 状态模式简介 2. 代码示例 3. 单例状态对象 4. 状态模式与策略模式的辨析 1. 状态模式简介 状态模式是一种行为型模式。 状态模式的定义&#xff1a;状态模式允许对象在内部状态改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。 通俗的说就是一个对象…

数据库SQLite和SCADA DIAView应用教程

课程简介 此系列课程大纲主要包含七个课时。主要使用到的开发工具有&#xff1a;SQLite studio 和 SCADA DIAView。详细的可成内容大概如下&#xff1a; 1、SQLite 可视化管理工具SQLite Studio &#xff1a;打开数据库和查询数据&#xff1b;查看视频 2、创建6个变量&#x…

java开发,IDEA转战VSCODE配置(mac)

一、基本java开发环境配置 前提&#xff1a;已经安装了jdk、maven、vscode&#xff0c;且配置了环境变量 1、安装java相关的插件 2、安装spring相关的插件 3、vscode配置maven环境 打开 VsCode -> 首选项 -> 设置&#xff0c;也可以在setting.json文件中直接编辑&…

python爬虫的学习流程(1-前提准备)

这里主要记录一下我的python爬虫初级的学习的流程 1.python爬虫入门实战课 什么是爬虫&#xff1f;众说纷纭&#xff0c;我们引用维基百科上对网络爬虫的介绍&#xff1a; 网络爬虫&#xff08;英语&#xff1a;Web crawler&#xff09;&#xff0c;也叫网络蜘蛛&#xff08;…

数据结构初阶之双向链表的介绍与双向链表的实现

一、概念与结构 带头双向循环链表 next &#xff1a;指向下一个结点&#xff08;后继结点&#xff09; prev &#xff1a;指向前一个结点&#xff08;前驱结点&#xff09; 二、实现双向链表 项目创建的时候&#xff0c;要创建一个头文件&#xff08;.h&#xff09;List.h …

CICD集合(六):Jenkins配置Editable Email Notification

CICD集合(六):Jenkins配置Editable Email Notification 1、系统配置 1.1、Jenkins Location 1.2、邮件通知 1、SMTP服务器:imap.exmail.qq.com (因qq企业邮箱) 2、邮箱后缀:@xxx.com 3、勾选:使用SMTP认证 用户名:

Golang 中除了加锁还有哪些安全读写共享变量的方式?

Golang 中除了加锁还有哪些安全读写共享变量的方式&#xff1f; 在 Golang 中&#xff0c;除了使用 Mutex 锁来保护共享变量外&#xff0c;还可以通过 Channel 和 原子性操作 来实现安全读写共享变量。 1. 使用 Channel 原理 Channel 是 Golang 中用于 Goroutine 之间通信的…

应用层协议 HTTP 讲解实战:从0实现HTTP 服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; HTTP 协议 &#x1f98b; 认识 URL&#x1f98b; urlencode 和 urldecode 二&#xff1a;&#x1f525; HTTP 协议请求与响应格式 &#x1f98b; HTTP 请求…

F/V/F/I频率脉冲信号转换器

F/V/F/I频率脉冲信号转换器 概述&#xff1a;捷晟达科技的JSD TFA-1001系列是一进一出频率脉冲信号转换器(F/V转换器),该频率转换器是将频率脉冲信号(方波、正弦波、锯齿波)转换成国际标准的模拟量电压(电流)信号,并远距离无失真传送到控制室(如:PLC,DCS,AD,PC采集系统)产品的输…

Windows的docker中安装gitlab

一.Windows的docker中安装gitlab 1.通过阿里云拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh 2.在本地创建备份数据的目录 mkdir -p D:home/software/gitlab/etc mkdir -p D:home/software/gitlab/logs mkdir -p D:home/software/gitlab/dat…

【Linux】理解Linux中一切皆文件、缓冲区、ext2文件系统、软硬链接

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、如何理解在Linux中一切皆文件&#xff1f;1.1 概述1.2 文件类型1.3 优势 2、缓冲区2.1 为什么要引入缓冲区&#xff1f;2.2 缓…

在Docker 容器中安装 Oracle 19c

在 Docker 容器中安装 Oracle 19c 是可行的&#xff0c;但它相较于其他数据库&#xff08;如 MySQL、PostgreSQL 等&#xff09;会复杂一些&#xff0c;因为 Oracle 数据库有一些特定的要求&#xff0c;如操作系统和库的依赖&#xff0c;以及许可证问题。 不过&#xff0c;Ora…

【数据库】详解MySQL数据库中的事务与锁

目录 1.数据库事务 1.1.事务的四大特性 1.2.事务开启的方式 1.3.读一致性问题及其解决 2.MVCC解决读一致性问题原理 2.1.MVCC概念 2.2.准备环境 3.MySQL中的锁 3.1.行锁之共享锁 3.2.行锁之排它锁 1.数据库事务 数据库事务&#xff08;Transaction&#xff09;是一种…

springboot 配置redis

环境配置 springboot3.4 redis5.0.14 redis准备参考下面文章 window下安装redis以及启动 redis客户端安装 引入依赖 <!-- 集成redis依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-…

EEG代码实践:diffusion EEG——扩散模型生成EEG信号

2024/1/22&#xff1a; 原始EEG信号的生成说实话一直做不到让人满意的水平&#xff0c;之前做的MIEEG复现也迟迟没有调整到自己想要的程度&#xff0c;与论文中的效果还是有些差距。改换思路使用离散小波变换&#xff0c;用变换之后的信号做生成任务则好了许多。从大二开始一直…

Banana Pi BPI-RV2 开发板矽昌通信 RISC-V路由芯片SF21H8898优势亮点

Banana Pi BPI-RV3开源路由器 1. 8898芯片具备强大的网络加速硬件性能&#xff0c;能够在小字节报文条件下实现高效数据转发&#xff1a;  单WAN口性能&#xff1a;支持 64 字节报文单向转发速率达到 2.5 Gbps&#xff0c;双向转发速率为 5 Gbps。双WAN口性能&#xff1a;支…