MotionCtrl: A Unified and Flexible Motion Controller for Video Generation 论文解读

news2025/1/7 13:58:41

目录

一、概述

二、相关工作

三、前置知识

1、LVDM Introduction

2、LVDM Method

3、LVDM for Short Video Generation

4、Hierarchical LVDM for Long Video Generation

5、训练细节

6、推理过程

四、MotionCtrl

1、CMCM 

2、OMCM

3、训练策略

五、实验


一、概述

        MotionCtrl是一个统一和灵活的视频生成运动控制器可以独立控制相机运动和物体运动,解决了以往方法中要么只关注一种类型的运动,要么无法区分两者之间的差异性。

        以往的视频中的运动控制,如AnimateDiff、Gen-2、PikaLab主要通过独立的LoRA,或者引入额外的相机参数来触发相机运动控制。VideoComposer和DragNUWA补充了相机运动和物体运动两部分,但是缺乏明确的区别,无法实现精细多样化的运动控制。

        而MotionCtrl提供了三个优势:

(1)它可以有效且独立地控制相机和物体运动,实现细粒度调整和多样化的运动组合

(2)它使用相机姿态和轨迹作为运动条件,这不会影响物体的视觉外观

(3)它是一个相对通用的模型,可以适应各种相机姿态和轨迹,无需进一步微调

        精确的相机运动和物体运动控制存在两个问题:一考虑相机运动和物体运动的明显差异,由于相机运动和物体运动存在明显区别,相机运动是指整个场景在时间维度均进行全局变换,而物体运动涉及场景中特定对象在时间维度的移动,通常表示为物体相关的一组像素的轨迹。二由于现有数据集没有完整注释的视频片段,caption,相机姿态,物体运动轨迹。所以需要创建一个全面的数据集。

        是否可以先segment每一个物体,并对这一部分像素进行物体运动计算,在叠加到全局的运动轨迹上。

二、相关工作

        早期视频生成主要依赖GANs和VAEs,近期基本转变为扩散模型,或者依赖于已训练好的扩散模型。

        近期的可控视频生成领域,有一些方法参考特定模版学习运动,但受模版限制,另外通过引入额外的运动矢量来进行运动控制,以及通过基于初始图像和文本提示来生成视频,但不能精确分离相机运动和物体运动控制。

三、前置知识

1、LVDM Introduction

        LVDM应该是继VDM扩散模型第一次引入视频生成领域后,再次将隐式扩散模型引入视频生成,在此之前都是GANs的天下。

        LVDM通过提出视频潜在空间中操作的分层框架,可以使得模型生成超出训练长度的更长的视频,并且在短视频和长视频生成中领先当时的VDM和一众GANs模型,后续也应用到VideoCrafter和MotionCtrl模型中。

2、LVDM Method

        首先这个模型中可以分别实现无条件视频生成和有条件视频生成。

训练AE过程:

        首先使用一个轻量级的3D AutoEncoder来压缩视频,包括encoder和decoder,他们都是有多层3D 卷积构成。输入一段视频x_0 \in \mathbb{R} ^{H \times W \times L \times 3},先经过视频encoder得到潜在空间z_0=\varepsilon (x_0),其中z_0 \in \mathbb{R}^{h \times w \times l \times c} ,h=H/f_s,w=W/f_s,l=L/f_tf_s,f_t是空间和时间下采样因子。解码器D用于解码样本,(技术细节,为了确保自编码器是时间上等变的,所以所有3D 卷积都保证重复填充)。

        在训练过程中,单独训练AE模块,利用重建损失(MSE+LPIPS)和对抗性损失(消除像素级重建损失模糊)计算。

3、LVDM for Short Video Generation

          对于短视频的生成,就是类似VDM的结构。经过encoder后,特征不断加噪,并引入3Dunet中,然后最后一层进decoder。

3D U-Net architecture in VDM

4、Hierarchical LVDM for Long Video Generation

        上述框架用来生成短视频,长度受到训练所指定的frame决定,所以提出了一个分层的条件LVDM,通过自回归方式,依赖前一个token来生成下一个token,通过输入短视频,得到插帧的长视频。

        首先在通道维度添加了一个二进制掩码,来指定他是条件帧还是预测帧,也就是输入的短视频帧,还是预测的高斯噪音帧,并通过随机将不同二进制掩码设置为1或0,此时就得到不同的,这样可以训练扩散模型为无条件视频生成和有条件的视频预测。

        在这里要解释什么是条件帧,在论文中使用任意时间s,s是扩散时间步t内的一小部分时间,在训练中作为条件,z_0经过s时间的加噪后得到z_s,并与z_t根据掩码m进行加权,之后得到的特征输入到3D U-Net来计算噪声。

        具体来说,将二进制掩码m全都设置为0,那么覆盖在条件上就是无条件的扩散模型训练,当输入条件帧k帧,预测后面n-k帧,那么就是通过条件帧预测后面的帧,防止提前知道后面的帧。

        最后计算输入的\epsilon _t与预测的\tilde\epsilon _t的MSE Loss。

        分层LVDM的结构图如下,上面的解释应该都是Prediction 3D U-Net的解释。

        对于Interpolation 3D U-Net来说,改变是mask sampling部分,插值模型在每两个稀疏帧之间的中间帧将二进制掩码设置为0。

5、训练细节

        我们分别使用8和4的空间和时间下采样因子。我们首先训练一个3D AE,然后固定其权重,然后开始在短视频片段上训练无条件LVDM。之后,从无条件模型中分别微调Prediction 3D U-Net和Interpolation 3D U-Net。

6、推理过程

        首先输入条件利用短视频模型部分,得到短视频片段,之后再利用分层长视频模型部分,经过短视频加噪多轮丢入Prediction 3D U-Net,之后再将潜在空间丢入 Interpolation 3D U-Net,得到连续的潜在空间信息,最后接VideoDecoder输出连续视频帧。

四、MotionCtrl

        MotionCtrl框架扩展了LVDM中的去噪U-Net结构,并加入了相机运动控制模块CMCM和物体运动控制模块OMCM。其中CMCM模块通过将RT连接到Temporal Transformer部分的第二个自注意力机制(Temporal Transformer部分由两个自注意力模块构成),也就是Temporal Transformer部分的输入,并应用定制的轻量级全连接层来提取LVDM的相机姿态序列进行后续处理,OMCMC利用卷积层和降采样从Trajs中获得多尺度特征,并在空间通道上整合到LVDM的卷积层中,来指导物体的运动。

        另外直接给定一个文本提示,经过CLIP后转变为视频的5通道格式,引导LVDM从提示相对应的噪声中生成视频,这样相机姿态控制的RT引入时间层,控制相机移动,物体的运动由Trajs控制,引入卷积层。下图(a)中马沿着设定的轨迹移动,背景向着相机移动的反方向(向左)移动。

1、CMCM 

        CMCM(Camera Motion Control Module)相机运动控制模块。首先取一组相机姿态RT=\left \{ RT_0,RT_1,...RT_{L-1} \right \},其中由于旋转矩阵3*3,平移矩阵3*1,所以flatten后总维度就是3*3+3*1=12维,这也就是RT \in \boldsymbol{\mathbb{R}}^{L \times 12}

        另外U-Net每一个时间模块的第一个自注意力机制的输出就是y_t,之后看上面(b)图CMCM解释,经过rearrange+concat,然后接FC+Att2,得到输出。

2、OMCM

        OMCM(Object Motion Control Module)对象运动控制模块。

        轨迹解释:通过Trajs轨迹来控制生成的视频的物体运动,一般来说一个轨迹表示为一系列空间位置的序列\left \{ (x_0,y_0),(x_1,y_1),...,(x_{L-1},y_{L-1}) \right \},其中而x \in[0 ,\hat{W}],y \in[0 ,\hat{H}],表示x和y在轨迹图的尺寸范围内。另外为了表示速度,引入了u和v来表示两个方向的速度,因为帧与帧之间的时间固定,所以速度就表示为位移/帧时间,Trajs \in \mathbb{R}^{L \times \hat H \times \hat W \times 2}

        对于OMCM模块的解释:由多个卷积+降采样组成,并将这里面的特征输入到U-Net下采样层,以平衡生成视频的量化和物体运动控制能力。

3、训练策略

        为了通过文本提示生成视频时实现相机和物体运动的控制,训练数据集需要字幕、相机姿态、物体运动轨迹等。目前没有这么完整的数据集,所以引入了一种多步骤的训练策略。

        训练CMCM模块,只需要一个包含字幕和相机姿态标注的视频片段的训练数据集。采用了Realestate10K数据集,但存在场景多样性有限和缺乏字幕的问题。

        解决方法:

(1)采用了CMCM模块,冻结LVDM的大部分参数,但保留temporal transformer的第二个自注意力模块可训练,来保证原有LVDM的生成质量。由于temporal transformer主要集中于全局运动的学习,所以Realestate10K发散性小,不会影响LVDM的生成质量。

Ablation of Camera Motion Control

(2)对于字幕的问题,利用Blip2,为Realestate10K数据集生成字幕。

        训练OMCM模块,需要一个包含字幕和物体运动轨迹的视频剪辑数据集,但暂无有效的开源数据集。所以利用ParicleSfM来合成WebVid数据集中的物体运动轨迹,WebVid是一个配有字幕的大型视频数据集,用于T2V工作。ParicleSfM包含一个基于轨迹的运动分割模块,可以用于过滤出动态场景中影响相机轨迹产生的动态轨迹,利用这一模块合成了大约24.3w个视频运动物体轨迹。

        由于这个轨迹比较密集,所以做了后处理,随机采样(稀疏化)+高斯滤波(避免稀疏轨迹分散而无法有效训练)

         在OMCM训练过程中,LVDM和CMCM都提前进行了训练,并且冻结,之后训练OMCM。

五、实验

        该模块训练在16帧的序列,分辨率为256*256,模型建立在LVDM或者VideoCrafter1框架上。

        在模型评估过程中,对简单的轨迹(放大、缩小、平移、顺时针、逆时针)和复杂轨迹都进行了评估。

        另外对于相机运动轨迹部分,在复杂动作下(上图b),如果采用VideoComposer提取运动矢量模拟参考视频的相机运动,密集的运动矢量将无意间捕捉到物体的形状,比如训练数据集中Frame12中门的轮廓(b图一行第五个)会导致VideoComposer的埃菲尔铁塔生成出现几何错误(b图二行第五个),而MotionCtrl通过旋转平移矩阵引导,运动轨迹更加接近参考视频。 

        评估指标:FID(视觉质量)、FVD(时间一致性)、CLIPsim (与文本的语义相似度),CamMC(预测相机轨迹与GT之间的欧氏距离),ObjMC(预测目标轨迹与GT之间的欧氏距离)

        AnimateDiff、VideoCompose、MotionCtrl的量化比较。

       

        给定轨迹下的比较,VideoComposer还是存在偏差。(第四帧)

        在OMCM下对于是否采用密集轨迹、还是直接采用稀疏轨迹,或者密集轨迹下采样稀疏轨迹的比较。 

        对于目标如果出现多个的情况,也可以通过多个目标轨迹处理。

 

参考项目:MotionCtrl

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

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

相关文章

vue2实现excel文件预览

一、插件 通过xlsx插件解析excel数据&#xff0c;对解析后的html组件进行渲染展示。 npm install xlsx 二、完整代码 <template><!-- excel文件预览 --><divelement-loading-text"拼命加载中"element-loading-spinner"el-icon-loading"…

uniapp:跳转第三方地图

1.跳转第三方高德地图 //跳转地图 toMap(item){uni.navigateTo({url: (window.location.href https://uri.amap.com/navigation?to${item.lng},${item.lat},${item.shopName}&modecar&policy1&srchttps://gawl.gazhcs.com/wap/index.html&callnative0)}) },…

纯前端实现将pdf转为图片(插件pdfjs)

需求来源 预览简历功能在移动端&#xff0c;由于用了一层iframe把这个功能嵌套在了app端&#xff0c;再用一个iframe来预览&#xff0c;只有ios能看到&#xff0c;安卓就不支持&#xff0c;查了很多资料和插件&#xff0c;原理基本上都是用iframe实现的。最终转换思路&#xf…

【亚马逊云科技】基于Amazon EKS部署高可用的OceanBase的最佳实践

一、前言 随着企业业务的快速发展和数据量的不断增长&#xff0c;高性能、高可用的数据库解决方案成为了关键需求。OceanBase作为一款分布式关系型数据库&#xff0c;以其高扩展性、高可用性和高性能的特点&#xff0c;逐渐受到企业的广泛关注。然而&#xff0c;在复杂的分布式…

Linux postgresql-15部署文档

一、PostgreSQL的安装 1、下载地址 postgresql安装包下载地址&#xff1a;https://www.postgresql.org/download/linux/redhat/ 2、安装脚本 复制下面的安装脚本即可&#xff1a; sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64…

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

旧服务改造及微服务架构演进

旧服务改造及微服务架构演进 微服务架构演进1.微服务架构2.微服务架构的特点3.单体架构与微服务架构之间的对比4.微服务架构演进历程 旧服务改造1. 微服务拆分的一些通用原则2.微服务拆分策略&#xff08;1&#xff09;功能维度拆分策略&#xff08;2&#xff09;非功能维度拆分…

Science Robotics让软机器人“活”得更久的3D打印!

软机器人硬件在医疗、探索无结构环境等领域有广泛应用&#xff0c;但其生命周期有限&#xff0c;导致资源浪费和可持续性差。软机器人结合软硬组件&#xff0c;复杂组装和拆卸流程使其难以维修和升级。因此&#xff0c;如何延长软机器人的生命周期并提高其可持续性成为亟待解决…

MyBatis执行一条sql语句的流程(源码解析)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MyBatis执行一条sql语句的流程&#xff08;源码解析&#xff09; MyBatis执行sql语句的流程加载配置文件加载配置文件的流程 创建sqlsessionFactory对象解析Mapper创建sqlses…

Git命令行的使用

目录 一、什么是Git 1、本地仓库 vs 远端仓库 本地仓库 远端仓库 2、.git vs .gitignore .git .gitignore 二、使用Git命令 1、安装git 2、git首次使用需要配置用户邮箱和用户名 3、上传目录/文件到远端仓库步骤 1&#xff09;创建放置文件的目录 2&#xff09;cd…

法律专业legal case的留学论文写作技巧分析(1)

对于法律专业的留学生而言&#xff0c;案例的分析是写作的重要方面。无论留学的国家是英、美、澳洲还是加拿大&#xff0c;它们都属于case law 的法律体系。一个非常显著的特点便是通过对案例进行分析和提炼&#xff0c;从中总结提炼出principle和rules。case analysis的留学论…

一文理解区块链

一文搞懂区块链 区块链的诞生&#xff0c;源于对 电子货币&#xff08;e-money&#xff09; 的探索需求&#xff0c;即Bitcoin的产生。因此&#xff0c;了解的小伙伴应该知道区块链的常见定义是&#xff1a;不可篡改的分布式账本。 为什么发明“账本”&#xff0c;而不是直接发…

C 实现植物大战僵尸(四)

C 实现植物大战僵尸&#xff08;四&#xff09; 音频稍卡顿问题&#xff0c;用了 SFML 三方库已优化解决 安装 SFML 资源下载 https://www.sfml-dev.org/download/sfml/2.6.2/ C 实现植物大战僵尸&#xff0c;完结撒花&#xff08;还有个音频稍卡顿的性能问题&#xff0c;待…

编程入门(2)-2024年 RAD Studio version 12发布综述

随着2024年即将画上句号&#xff0c;我想借此机会回顾一下我们在这一年中发布的一些Embarcadero产品、行业趋势&#xff0c;并感谢我们尊贵的客户们对我们的产品一如既往的支持。这一年对我们来说充满了激动人心的变化和发展&#xff0c;我们非常高兴能与您一起踏上这段旅程。 …

[Day 12]904.水果成篮

今天给带来的题目是滑动窗口的另一种题目&#xff0c;之前我们讲了滑动窗口题目中长度最小的子数组&#xff0c;今天这个题目实际上是求长度最长的子数组 题目描述&#xff1a;力扣链接 904.水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整…

SpringBoot 2.6 集成es 7.17

引言 在现代应用开发中&#xff0c;Elasticsearch作为一个强大的搜索引擎和分析引擎&#xff0c;已经成为许多项目不可或缺的一部分。Spring Boot作为Java生态中最受欢迎的微服务框架之一&#xff0c;其对Elasticsearch的支持自然也是开发者关注的焦点。本文将详细介绍如何在S…

【数据仓库】hive on Tez配置

hive on Tez 搭建 前提是hive4.0hadoop3.2.2数仓已搭建完成&#xff0c;现在只是更换其执行引擎 为Tez。搭建可参考【数据仓库】hive hadoop数仓搭建实践文章。 Tez 下载 下载地址 https://archive.apache.org/dist/tez/ 官网地址 https://tez.apache.org/releases/apac…

云备份项目--客户端编写

文章目录 10. 客户端工具类10.1 整体的类10.2 测试 11 客户端数据管理类11.1 整体的类11.2 测试 12. 客户端业务处理12.1 整体的类 完整的代码–gitee链接 10. 客户端工具类 10.1 整体的类 在windows平台下进行开发&#xff0c;Util.hpp实际上是客户端FileUtil.hpp和JsonUtil…

MySQL 的事务与多版本并发控制(MVCC)的那些事

什么是事务原子性:一致性隔离性 问题1: 为什么MySQL要使用mvcc实现隔离性而不使用 锁 解决并发问题?持久性 问题2: MySQL 不是磁盘数据库吗,持久化为什么是 redo log 保证的?问题 3: redo log 储存了什么东西,持久化(崩溃恢复是怎么做的?)问题 4 : MySQL 的 bing log (二进制…

Eplan 项目结构(高层代号、安装地点、位置代号)

Eplan中的项目结构分为3个层次&#xff1a; &#xff08;1&#xff09;功能面结构。指明这个系统的功能&#xff0c;有什么用途。在EPlan中&#xff0c;指的就是"高层代号&#xff08;&#xff09;"。 一般指的是线体。 &#xff08;2&#xff09;位置面结构。指明该…