超燃!纯AI生成《泰坦尼克号》大片!浙大阿里发布MovieDreamer:超长电影生成“梦工厂“

news2024/11/15 6:55:38

论文链接:https://arxiv.org/pdf/2407.16655
项目主页:https://aim-uofa.github.io/MovieDreamer/
github链接:https://github.com/aim-uofa/MovieDreamer

亮点直击

  • MovieDreamer,一个新颖的分层框架,将自回归模型与扩散渲染结合起来,平衡长时间叙事连贯性与短时间视觉保真度。该方法大幅延长了生成视频内容的时长,达到数千个关键帧。

  • 使用多模态自回归模型生成视觉token序列。自回归模型支持zero-shotfew-shot的个性化生成场景,并支持可变长度的关键帧预测。

  • 使用了一种新颖的多模态脚本,对场景和角色身份进行分层结构化丰富描述。这种方法不仅促进了视频不同片段之间的叙事连贯性,还增强了角色控制和身份保持能力。

  • 方法展示了卓越的生成质量,具有详细的视觉连续性、高保真度的视觉细节以及角色身份保持能力。

最近的视频生成技术进展主要利用扩散模型来生成短时内容。然而,这些方法在处理复杂叙事和保持角色一致性方面常常不足,而这些对于电影等长篇视频制作至关重要。本文提出了MovieDreamer,一个新颖的分层框架,将自回归模型的优势与基于扩散的渲染相结合,开创了具有复杂情节进展和高视觉保真度的长时视频生成。本文的方法利用自回归模型来保持整体叙事连贯性,预测视觉token序列,然后通过扩散渲染将其转换为高质量的视频帧。这种方法类似于传统的电影制作过程,将复杂的故事分解为可管理的场景拍摄。

此外,本文采用多模态脚本,丰富了场景描述,提供详细的角色信息和视觉风格,增强了场景间的连续性和角色身份一致性。本文在各种电影类型中进行了广泛的实验,证明本文的方法不仅在视觉和叙事质量上取得了优异的成绩,而且有效地将生成内容的时长显著延长,超越了当前的能力。

方法

概览

本文提出了一种新颖的框架,用于生成扩展的视频序列,该框架利用自回归模型在长期时间一致性方面的优势和扩散模型在高质量图像渲染方面的优势。本文的方法以多模态脚本作为条件,以自回归方式预测关键帧tokens,并使用这些帧作为anchor生成完整的视频。本文的方法提供了灵活性,支持zero-shot生成以及需要遵循给定风格的few-shot场景。本文特别注意在多模态脚本设计、自回归训练和扩散渲染过程中保持角色身份的一致性。下图2中展示了整体框架。

通过扩散自编码器进行关键帧tokens

为了创建简洁且忠实于图像的表示,本文采用扩散自编码器。本文的编码器 包含一个预训练的 CLIP 视觉模型和一个基于transformer的tokens压缩器,它将图像 编码为数量减少的压缩tokens,记为。解码器使用这些tokens重建图像,采用预训练的 SDXL 扩散模型,生成 的重建图像。提取的潜在图像tokens通过交叉注意力被输入到扩散解码器中。本文在训练压缩器和解码器的同时,保持CLIP视觉模型冻结。训练这个扩散自编码器的损失函数如下:

其中, 是输入图像, 是其在时间步 对应的噪声潜在表示,即 其中 , 和 定义了一个噪声调度。在本文的实验中,作者经验性地发现,仅仅两个tokens就能充分描述关键帧的主要语义,这一发现与之前的工作[42]一致。

自回归关键帧tokens生成

本文使用预训练的大型语言模型 LLaMA2-7B初始化本文的自回归模型。与大型语言模型(LLMs)不同,本文的模型 根据输入的多模态脚本 和历史信息 预测压缩的视觉tokens,其公式如下:

本文的方法首先利用预训练的大型语言模型,特别是 LLaMA2-7B,来构建本文的自回归模型 G。与传统的 LLM 不同,G 旨在从多模态脚本 和历史数据 中预测压缩的视觉tokens。模型函数定义为

传统的 LLM 通常使用交叉熵损失进行训练,这适用于离散输出。然而,本文的模型处理的是连续实值图像tokens,使得交叉熵不适用。

受 GIVT的启发,本文采用 k-混合高斯混合模型(GMM)来有效地建模这些实值tokens的分布。这涉及用 2kd 个均值、2kd 个方差和 k 个混合系数来参数化 GMM。

这些参数是通过自回归模型的一个修改后的线性输出层获得的,从而能够从 GMM 中采样连续tokens。模型通过最小化负对数似然进行训练:

其中 代表总帧数, 表示当前帧, 是每帧的压缩tokens数量。为了简化这些连续tokens的学习,本文还结合了预测tokens和真实tokens之间的 和 损失,并优化以下目标:

为了解决自回归模型在长视频关键帧生成中的过拟合问题,本文实施了几种关键策略:

  • 数据增强:为了最大限度地利用本文的训练数据,本文应用了随机水平翻转和随机反转视频帧的时间顺序。这种训练数据增强大大增加了训练数据的多样性。

  • 面部embedding随机化:为了防止身份泄露,本文随机检索同一角色在不同帧中的面部embedding。否则,模型会简单地通过面部embedding输入记住训练帧。

  • 激进的Dropout:本文使用了异常高的50%的Dropout率,这对于从有限的训练数据中进行广泛学习至关重要。

  • tokens mask:本文以0.15的概率随机mask输入tokens,这适用于因果注意力mask。这迫使模型根据可用的上下文(如面部ID)推断缺失的信息,进一步增强了其从部分数据中进行泛化的能力。

自回归条件下的多模态脚本。本文开发了一种结构良好的多模态脚本格式,作为自回归模型的输入,如下图14所示。本文的脚本整合了多个维度:角色、场景元素和叙述弧线。仅使用文本来准确表示角色外貌是具有挑战性的;因此,本文将文本描述与面部embedding结合起来,以提供每个角色的更详细表示。为了便于自回归模型的处理,本文将脚本格式结构化,以明确区分这些元素。

对于非文本模态(如面部embedding和压缩tokens),本文使用多层感知器将其投射到LLaMA的embedding空间中。主要的挑战在于文本数据,它往往会产生长序列,从而消耗过多的tokens空间并限制模型的上下文广度。为了解决这个问题,本文将文本视为一种单独的模态,将其分为“标识符”和“描述”(见上图2)。标识符是简洁的陈述,用于建立脚本的结构。相比之下,描述则详细说明了生成的属性,每个描述都使用CLIP编码为一个单独的[CLS]tokens,然后投射到统一的输入空间中。

这种方法通过将整个句子压缩成单个tokens,显著延长了训练期间可用的上下文长度。本文使用LongCLIP作为描述的文本编码器,支持最多248个tokens的输入,这增强了本文处理详细叙述内容的能力。因此,时间步的多模态脚本及其之前的历史数据表示为:

其中,、 和 分别表示描述、标识符和角色面部embedding的embedding。 表示之前预测的压缩帧tokens。负对数似然损失公式如下:

个性化生成的few-shot训练。 为了促进个性化电影内容生成,本文提出了一种利用上下文学习的few-shot学习方法。在训练过程中,本文从一集中随机选择10个帧,将它们编码为视觉tokens,并随机将这些tokens添加到该集的视觉tokens之前。这一策略不仅促进了上下文学习,使模型能够根据参考帧定制内容,还作为一种数据增强技术,有效减轻了过拟合问题。

本文的模型具有多功能性,支持zero-shot和few-shot生成模式。在zero-shot模式下,模型仅根据文本提示生成内容。在few-shot模式下,模型利用一小组用户提供的参考图像,使生成的内容更符合用户的偏好,而无需进一步训练。这一功能确保用户能够高效地生成高质量、定制化的视觉内容,符合他们期望的主题和风格。

保留 ID 的扩散渲染

在本文的方法中,虽然主要的扩散解码器能够熟练地重建目标图像,但有时在捕捉细节方面,特别是面部特征上,会有所欠缺。这是由于压缩后的token中细节的衰减。为了解决这个问题,本文增强了中的交叉注意力模块。这种增强涉及到整合来自多模态脚本的描述性文本embedding 和面部embedding 。

为了进一步提升模型对关键细节的关注能力,本文引入了一种随机mask策略,该策略会遮蔽一部分输入token。这种技术鼓励解码器更有效地利用现有的面部和文本线索,以更高的保真度重建图像,特别是在保持身份特征方面。这种身份保留渲染也弥补了在自回归建模过程中身份丢失的问题,如下图3所示,显著提高了身份感知质量。

基于关键帧的视频生成

在获得电影中的关键帧后,本文可以基于这些关键帧生成电影片段。一种直接的方法是利用现有的图像到视频模型,例如Stable Video Diffusion (SVD),来生成这些片段。具体来说,SVD将输入图像转化为用于条件的潜在特征,并通过交叉注意力引入与输入图像的CLIP特征的交互。虽然SVD能够生成高质量的短视频,例如25帧,但在生成更长的电影片段时会遇到困难。

为了生成更长的电影片段,一种直接的方法是利用前一个视频的最后一帧作为生成后续视频的初始帧。这个过程可以迭代进行,以获得较长的视频序列。然而,本文通过实验证明,这会导致严重的错误积累:随着时间的推移,视频帧的质量会逐渐恶化。

为了解决这个问题,本文提出了一种简单而有效的解决方案。本文的动机是始终使用第一帧的特征作为视频扩展过程中的“锚”,以增强模型对原始图像分布的感知。在实际操作中,本文在生成后续视频时,使用原始输入图像的CLIP特征,而不是前一个视频的最后一帧进行交叉注意力交互。

实验

与最先进的模型比较

故事生成。 许多现有的故事生成方法专注于使用小数据集进行微调,表现出较差的泛化能力。因此,本文仅与那些展示出高泛化能力的方法进行比较,即StoryDiffusion和 StoryGen。如下图4所示,StoryDiffusion无法保持长期一致性。例如,角色的头发不一致,关键帧77中的角色与关键帧968中的角色不一致。类似地,StoryGen也未能保持一致性并生成了异常结果。相比之下,本文的方法在生成极长内容的同时,能够在多个角色之间保持短期和长期的一致性。这个观察也通过下表1中的定量结果得到了证实,本文的方法在LT和ST指标上均取得了高分。此外,更高的CLIP得分反映了本文生成的结果与故事情节很好地契合。更好的IS、AS和FID得分表明本文的方法生成了高质量的图像。

视频结果。 本文对生成长视频的方法进行了详细比较。对于文本到视频的方法,本文使用测试集中准备的详细描述作为输入。对于图像到视频的方法,本文采用由本文的方法生成的关键帧作为输入。如下表2所示,本文的方法在质量方面显著优于现有的开源模型,展示了强大的泛化能力。最重要的是,本文的方法能够生成持续数小时的视频,且质量几乎没有妥协,达到了最先进的水平。

分析

反过拟合策略。 大型自回归模型是强大的学习器,这使得它们很容易对数据集过拟合。如下图6的第一行所示,生成的内容主要由输入字符主导。即使给出不同的文本提示,模型也会生成相似的视觉内容。本文的反过拟合策略旨在削弱字符ID与目标帧之间的对应关系,从而避免简单的记忆。如第二行所示,这有助于生成与文本描述高度一致的多样化高质量结果。

多模态电影脚本。 多模态脚本引入了面部embedding,以更好地保持一致性。下图5有力地展示了这种设计的有效性。具体来说,移除面部embedding会导致模型保持角色一致性的能力下降。面部embedding携带了比单纯文本更细致和精确的信息。使用面部embedding后,短期和长期的一致性都得到了很好的保持。

ID保持渲染。 在启用ID保持渲染之前,本文的解码器已经显示出重建目标图像的能力。然而,对于训练集外的图像,由于压缩token中细微面部特征的丢失,重建的角色外观可能与预期目标略有不同。应用ID保持渲染后,本文的解码器在保持角色身份方面表现出显著增强的能力。实验结果如上图3所示,清楚地展示了后处理步骤的有效性。

few-shot个性化生成。 本文的方法作为一个强大的上下文学习者,能够根据用户提供的少量参考生成与风格或角色一致的结果。结果展示在下图7中。本文的模型在few-shot场景下能够生成与参考风格和角色更一致的结果。

结论

本文提出了MovieDreamer,以应对生成具有复杂叙事的长时间视觉内容的挑战。该方法巧妙地结合了自回归和扩散的优势,能够生成长视频。此外,本文设计了多模态脚本,旨在保持生成序列中角色的一致性。本文进一步引入了身份保持渲染,以更好地保持角色身份,并通过上下文建模支持few-shot电影创作。这项工作有望为自动化长时间视频制作的未来发展开辟令人兴奋的可能性。

参考文献

[1] MovieDreamer: Hierarchical Generation for Coherent Long Visual Sequences

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

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

相关文章

人工智能算法工程师(中级)课程19-模型的量化与部署之模型部署和存储方式与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程19-模型的量化与部署之模型部署和存储方式与代码详解本文全面介绍了神经网络模型在实际应用中的部署与存储策略,重点覆盖了两大主流框架:LibTorch和TensorRT。L…

JavaScript模拟滑动手势

双击回到顶部 左滑动 右滑动 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Gesture…

linux命令更新-文本处理awk

awk命令简介 awk是一种强大的文本处理工具&#xff0c;可以对文本文件进行格式化、统计、计算等操作。它逐行读取文本文件&#xff0c;并对每一行进行处理。awk的语法相对简单&#xff0c;但功能非常强大&#xff0c;是Linux系统中常用的文本处理工具之一。 awk命令基本语法 …

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

60个常见的 Linux 指令

1.ssh 登录到计算机主机 ssh -p port usernamehostnameusername&#xff1a; 远程计算机上的用户账户名。 hostname&#xff1a; 远程计算机的 IP 地址或主机名。 -p 选项指定端口号。 2.ls 列出目录内容 ls ls -l # 显示详细列表 ls -a # 显示包括隐藏文件在内的所有内…

关于深度学习中的cuda编程,cuda相关介绍

深度学习中会涉及大量的、重复的矩阵运算、图形运算&#xff0c;而CPU对这种简单的加减法加速不够显著&#xff0c;可以使用GPU进行加速运算 CUDA是英伟达旗下的专门为深度学习加速运算的显卡&#xff0c;其对于简单的浮点运算、矩形运算相较于CPU加速了数倍不止 本文介绍CUD…

结合GB/T28181规范探讨Android平台设备接入模块心跳实现

技术背景 好多开发者在用我们Android平台GB28181设备接入模块的时候&#xff0c;更希望跟我们探讨一些协议规范方面&#xff0c;以便在现场对接时&#xff0c;可以知其然知其所以然。比如&#xff0c;有开发者提到&#xff0c;GB28181的状态消息报送这块到底要怎么实现&#x…

搭建Vue开发环境

一、下载Vue.js 进入官网教程安装 — Vue.js (vuejs.org) 下载开发版本到本地 二、安装 Vue Devtools 安装完成后

Spring Boot 与 MongoDB 整合指南

MongoDB MongoDB 是一种基于文档的NoSQL数据库&#xff0c;以其高性能、高可用性和易扩展性而著称。它使用 BSON&#xff08;类似 JSON 的二进制格式&#xff09;来存储数据&#xff0c;提供了灵活的数据模型&#xff0c;使得开发者可以更轻松地存储和查询复杂的数据结构。将M…

Navicat premium最新【16/17 版本】安装下载教程,图文步骤详解(超简单,一步到位,免费下载领取)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Navicat是一款快速、可靠且功能全面的数据库管理工具&#xff0c;专为简化数据库的管理及降低系统管理成本而设计。以下是对Navicat的详细介绍&#xff1a; 一、产品概述 开发目的&#xff1a;Navicat旨在通过其直观和设计…

Linux:core文件无法生成排查步骤

1、进程的RLIMIT_CORE或RLIMIT_SIZE被设置为0。使用getrlimit和ulimit检查修改。 使用ulimit -a 命令检查是否开启core文件生成限制 如果发现-c后面的结果是0&#xff0c;就临时添加环境变量ulimit -c unlimited&#xff0c;之后在启动程序观察是否有core生成&#xff0c;如果…

Qt 学习第二天:创建第一个Qt程序

【最新QT从入门到实战完整版|传智教育】04 创建第一个Qt程序 一、命名规范&#xff08;驼峰命名法&#xff09; 类名&#xff1a; 首字母大写&#xff0c;单词和单词之间首字母大写 函数名和变量名&#xff1a; 首字母小写&#xff0c;单词和单词之间首字母大写 二、快捷…

零食商城管理系统

目录 一、项目背景与目标 1.1 项目背景 1.2 项目意义 1.3 国内外研究现状 1.4 开发工具介绍 二、项目内容与分工 三、 时间表与进度 1. 需求分析阶段&#xff1a; 2. 系统设计阶段&#xff1a; 3. 系统开发阶段&#xff1a; 4. 系统测试阶段&#xff1a; 5. 部署与上…

Selenium 的使用

selenium 是一个自动化测试工具&#xff0c;利用它可以驱动浏览器完成特定的操作&#xff0c;例如点击&#xff0c;下拉等&#xff0c;还可以获取浏览器当前呈现的页面的源代码&#xff0c;做到所见即所爬&#xff0c;对于一些 JavaScript 动态渲染的界面来说&#xff0c;这种爬…

WEB攻防-通用漏洞-SQL 读写注入-MYSQLMSSQLPostgreSQL

什么是高权限注入 高权限注入指的是攻击者通过SQL注入漏洞&#xff0c;利用具有高级权限的数据库账户&#xff08;如MYSQL的root用户、MSSQL的sa用户、PostgreSQL的dba用户&#xff09;执行恶意SQL语句。这些高级权限账户能够访问和修改数据库中的所有数据&#xff0c;甚至执行…

WEB集群-Tomact集群

linux云计算中小企业规模集群架构设计图----总结 在写今天内容前&#xff0c;小编绘制一个图&#xff1a;我设计了linux云计算中小企业规模集群架构设计图&#xff08;也可根据业务需求&#xff0c;增加业务变成大型企业架构设计图&#xff09; 知识补充–故障案例-https no s…

【Golang 面试基础题】每日 5 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

Python爬虫(6) --深层爬取

深层爬取 在前面几篇的内容中&#xff0c;我们都是爬取网页表面的信息&#xff0c;这次我们通过表层内容&#xff0c;深度爬取内部数据。 接着按照之前的步骤&#xff0c;我们先访问表层页面&#xff1a; 指定url发送请求获取你想要的数据数据解析 我们试着将以下豆瓣读书页…

WPF代办事项应用

目录 一 设计原型 二 后台源码 一 设计原型 添加代办事项页面&#xff1a; 二 后台源码 Model&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 待办事项应用.DataModel {pub…

数据结构(Java):Map集合Set集合哈希表

目录 1、介绍 1.1 Map和Set 1.2 模型 2、Map集合 2.1 Map集合说明 2.2 Map.Entry<K&#xff0c;V> 2.3 Map常用方法 2.4 Map注意事项及实现类 3、Set集合 3.1 Set集合说明 3.2 Set常用方法 3.3 Set注意事项及其实现类 4、TreeMap&TreeSet 4.1 集合类TreeM…