MotionCtrl: A Unified and Flexible Motion Controller for Video Generation

MotionCtrl: A Unified and Flexible Motion Controller for Video Generation

  • 这篇论文是基于VideoCrafter的,而VideoCrafter是基于LVDM的

  • 关于LVDM可以看https://blog.csdn.net/Are_you_ready/article/details/136615853

  • 2023年12月6日发表在arxiv

  • 这篇论文讨论了一种先进的技术,用于控制视频生成中的相机和物体运动。主要内容包括:

    • 综合框架:论文提出了一个统一且灵活的运动控制框架,用于视频内容生成。
    • 控制功能:该框架能够控制相机和物体的运动,包括方向、速度和轨迹。
    • 技术应用:适用于各种视频制作场景,如电影制作、游戏开发等。

Abstract

  • 在视频中,运动主要包括由相机运动引起的相机运动和由物体运动引起的物体运动。对这两种运动的精确控制对于视频生成至关重要。然而,现有的工作要么主要关注一种类型的运动,要么没有明确地区分两者,从而限制了其控制能力和多样性。
  • 因此,本文提出了一种统一的、灵活的运动控制器MotionCtrl,用于视频生成,旨在有效且独立地控制相机和物体运动
    • 我们仔细设计了MotionCtrl的架构和训练策略,同时考虑了相机运动、物体运动和不完善训练数据的固有属性
    • 与以前的方法相比,MotionCtrl具有以下三个主要优点:
      1. 它可以有效且独立地控制相机运动和物体运动,从而实现更精细的运动控制,并促进两种类型运动的灵活和多样化组合
      2. 其运动条件由相机姿态和轨迹确定,这些姿态和轨迹与外观无关,并且对生成视频中物体的外观或形状的影响最小
      3. 它是一种相对通用的模型,一旦训练过,就可以适应各种相机姿态和轨迹,即MotionCtrl可以控制各种摄像机运动和轨迹,无需对每个摄像机或对象运动进行精细调整。

Introduction

  • 在视频中,主要有两种类型的运动:由相机运动引起的全局运动由物体运动引起的局部运动
  • 相机运动是指整个场景在时间维度上的全局变换,通常通过一段时间内的相机姿态序列来表示。
  • 相比之下,物体运动涉及场景中特定物体的时间运动,通常表示为与物体相关联的一组像素的轨迹

MotionCtrl的两个模块

  • 首先,我们根据相机运动和物体运动的属性,构建了MotionCtrl的两个模块:相机运动控制模块(CMCM–Camera Motion Control Module)和物体运动控制模块(OMCM–Object Motion Control Module)。这两个模块与现有的视频生成模型协同工作
  • 在这项工作中,我们采用了VideoCrafter1 [5],这是LVDM [9]的改进版本,作为视频生成模型,并在整篇论文中将其称为LVDM(VideoCrafter[5],该模型在结构上类似于LVDM[9]。为了清晰起见,我们将本文中使用的视频模型称为LVDM)
    • CMCM:通过其时间变换器将一系列相机姿态按时间顺序融合到LVDM中,使生成的视频的全球运动符合给定的相机姿态
    • OMCM:将物体运动的信息空间融合到LVDM的卷积层中,以指示每个生成帧中物体的空间位置

训练MotionCtrl

  • 训练MotionCtrl需要带有完整注释的视频片段,包括标题、相机姿态和物体运动轨迹,这些目前不可用且难以构建
  • 我们可以独立训练CMCM和OMCM这两个模块
    • 从而将数据集简化为一个具有标题和相机姿态注释的视频数据集。我们首先引入了一个增强版的Realestate10k数据集,该数据集利用Blip2 [13]为Realestate10k [33]中的每个样本生成标题。这个具有标题和相机姿态注释的视频数据集被用来训练CMCM模块
    • 以及另一个具有标题和物体运动轨迹注释的视频数据集。我们使用ParticleSfM [31]中提出的运动分割算法合成的物体运动轨迹来增强WebVid [3]中的视频。因此,我们可以获得一个增强版的WebVid数据集来训练OMCM模块
  • 由于独立的适配器式训练策略和冻结的预训练LVDM,我们可以使用相机和物体运动中的一种或结合两种运动来控制视频生成,从而实现精细和灵活的运动控制。

贡献

  • 本文的主要贡献可以总结如下:
    • 我们引入了MotionCtrl,这是一种统一且灵活的视频生成运动控制器,旨在独立且有效地控制生成视频中的相机运动和物体运动,实现更精细和多样化的运动控制。
    • 我们根据相机运动、物体运动的固有属性以及不完美的训练数据,精心设计了MotionCtrl的架构和训练策略,有效地实现了视频生成中的精细运动控制。
    • 我们进行了广泛的实验,从定性和定量两个方面证明了MotionCtrl优于之前的相关方法。

相关工作

  • 一些努力旨在实现更通用的运动控制。例如,VideoComposer [25]通过额外的运动向量引入了运动控制,DragNUWA [28]提出了在初始图像、提供的轨迹和文本提示的条件下的视频生成。然而,这些方法中的运动控制相对广泛,无法在视频中精细地分离相机和物体运动。

  • 与这些工作不同,我们提出了MotionCtrl,这是一个统一且灵活的运动控制器,可以使用相机姿态和物体轨迹或结合这两种指导来控制生成的视频的运动。它为视频生成提供了更精细和灵活的控制。

方法

  • 考虑到相机运动的全局属性和物体运动的局部属性,CMCM与LVDM中的时间变换器进行交互,而OMCM与LVDM中的卷积层进行空间合作
  • 此外,我们采用多个训练步骤使MotionCtrl适应缺乏高质量视频剪辑、标题、摄像机姿态和物体运动轨迹的训练数据的情况

CMCM

  • 将CMCM模块插入到Temporal Transformer中,只插入到它的后两个全连接层和注意力层,这应该是因为相机运动和时间密切相关

OMCM

  • 将OMCM模块插入到卷积层,这应该是因为它与物体密切相关

训练策略与数据集构建

  • 为了通过文本提示生成视频并实现相机和物体运动的控制,训练数据集中的视频剪辑必须包含标题、摄像机姿态和物体运动轨迹的注释,然而,目前没有这样的综合细节的数据集可用
  • 为了解决这一挑战,我们提出了多步骤训练策略,并使用针对其特定运动控制需求的独特增广数据集对所提出的相机运动控制模块(CMCM)和物体运动控制模块(OMCM)进行训练。
    • 多步骤训练也就是因为一步训练的数据集没有,就先训练CMCM,训练完后,将其冻结,然后训练OMCM
CMCM
  • 学习相机运动控制模块(CMCM)需要一个包含带有标题、摄像机姿态但不包含物体运动轨迹的视频剪辑的训练数据集
  • 我们选择使用Realestate10K数据集 [33],在移除了无效的视频链接后,提供了62,992个视频剪辑,并伴随着各种摄像机姿态
    • 使用 这个数据集存在的两个问题:
      • 数据集的场景多样性有限,主要来自房地产视频
      • 它缺乏T2V模型所需的标题
    • 第一个问题解决方案:
      • 我们专门设计了CMCM模块,仅训练LVDM中的时间变换器的几个额外的MLP层和第二个自注意力模块,同时冻结所有其他参数,CMCM的训练主要集中在学习全局运动上,很少影响生成视频的内容
      • 我们使用Blip2 [13],一个图像描述算法,为Realestate10K中的每个视频剪辑生成标题
OMCM
  • 学习物体运动控制模块(OMCM)需要一个包含相应标题和物体运动轨迹的视频剪辑的数据集
  • 目前,还没有大规模的数据集将视频文本对与物体轨迹结合起来。为了解决这个问题,我们使用ParticleSfM [31]来生成物体运动轨迹,使用WebVid数据集 [3],该数据集广泛用于T2V生成
    • 尽管ParticleSfM很有效,但它并不高效,需要大约2分钟来处理一个32帧的视频
    • 为了解决密集轨迹的问题,我们使用从密集轨迹中采样的稀疏轨迹来训练OMCM。这些稀疏轨迹过于分散,不利于有效学习,因此我们使用高斯滤波器对其进行细化。
      • 在训练过程中,我们从合成的轨迹中随机选择n∈[1, N]轨迹(其中N是每个视频的最大轨迹数)
    • 在训练过程中,我们首先使用密集轨迹对OMCM进行训练,然后使用稀疏轨迹对其进行微调。
  • 在这个训练阶段,我们采用了已经与CMCM进行微调的LVDM模型。我们只训练OMCM层,而整个基础模型和CMCM保持冻结
  • 这种策略保证了OMCM在有限的数据集上增加了物体运动控制能力,同时最小化了对LVDM和CMCM的影响

实验

  • 我们的MotionCtrl基于LVDM [9]和训练权重由VideoCraft1 [5]提供

    • 它在分辨率为256 × 256的16帧序列上进行训练
    • 我们将最大轨迹数N设置为8
    • CMCM和OMCM都使用Adam优化器 [12]进行优化,批量大小为128,学习率为1×10 −4,在8个NVIDIA Tesla V100 GPU上进行训练
    • CMCM需要大约50,000次迭代才能收敛。OMCM首先在密集轨迹上进行20,000次迭代训练,然后使用稀疏轨迹进行额外的20,000次微调。
  • 我们将它与两种领先的方法进行了比较:AnimateDiff [8]和VideoComposer [25]

    • AnimateDiff使用8个独立的LoRA [11]模型来控制视频中的8个基本相机运动,例如平移和缩放
    • VideoComposer使用运动向量来操纵视频运动,没有区分摄像机和物体的运动
    • 虽然DragNUWA [28]与我们的研究相关,但其代码未公开,因此无法进行直接比较
      • 此外,DragNUWA仅通过从光学流中提取的轨迹来学习运动控制,无法精细地区分前景物体和背景的运动,限制了其精确控制摄像机和物体运动的能力
  • 摄像机和物体运动的结合。MotionCtrl不仅可以在单个视频中独立控制摄像机和物体的运动,还可以对两者进行集成控制

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

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

相关文章

【深度学习】线性回归

Linear Regression 一个例子线性回归机器学习中的表达评价函数好坏的度量:损失(Loss)损失函数(Loss function)哪个数据集的均方误差 (MSE) 高 如何找出最优b和w?寻找最优b和w如何降低损失 (Reducing Loss)梯度下降法梯…

绪论——算法设计原则【数据科学与工程算法基础】

一、题记 最近情绪不太稳定,些许烦躁,也就一直没践行前边说的“学习记录”的想法。现在开始做了,春华易逝,正当时,有想法就去做,踌躇懊悔是这个年纪最不该做的事。 二、前言 之前说了分块做这个系列&#x…

101. Go单测系列1---使用monkey打桩

本文将介绍如何在单元测试中使用monkey进行打桩。 monkey支持为任意函数及方法进行打桩。 monkey介绍 monkey是一个Go单元测试中十分常用的打桩工具,它在运行时通过汇编语言重写可执行文件,将目标函数或方法的实现跳转到桩实现,其原理类似…

我用 Python 做了个小仙女代码蹦迪视频

前言 最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿遍又亿遍,久久不能离开! 看着仙紫小姐姐的蹦迪视频,除了一键三连还能做什么?突发奇想,能不能把小仙女的蹦迪视频转成代码舞呢? 说…

uniapp引入jQuery

安装 npm install jquery --saveoryarn add jquery引入 import Vue from vue import jquery from "jquery"; Vue.prototype.$ jquery;<template><view>abc</view> </template><script>export default {data() {return {}}} </scr…

Vue3全家桶 - VueRouter - 【1】快速使用(创建路由模块 + 规定路由模式 + 使用路由规则 + RouterView-RouterLink)

VueRouter Vue-Router官网&#xff1b;vue-router 是 vue.js 官方给出的路由解决方案&#xff0c;能够轻松的管理 SPA 项目中组件的切换&#xff1b;安装&#xff1a;yarn add vue-router4&#xff1b; 快速使用 1.1 创建路由模块 在项目中的 src 文件夹中创建一个 router …

【智慧公寓】东胜物联嵌入式硬件解决方案,为智慧公寓解决方案商降本增效,更快实现产品规模化生产

方案背景 东胜物联本次服务的客户是一家专注于提供智慧公寓解决方案的欧洲企业&#xff0c;该公司旨在为用户提供智能&#xff0c;便捷&#xff0c;安全的生活体验。其解决方案涵盖智慧公寓控制、自动化、能源管理和智能建筑&#xff0c;它的使命是通过复杂的控制系统使用户能…

【OpenGL实现 03】纹理贴图原理和实现

目录 一、说明二、纹理贴图原理2.1 纹理融合原理2.2 UV坐标原理 三、生成纹理对象3.1 需要在VAO上绑定纹理坐标3.2 纹理传递3.3 纹理buffer生成 四、代码实现&#xff1a;五、着色器4.1 片段4.2 顶点 五、后记 一、说明 本篇叙述在画出图元的时候&#xff0c;如何贴图纹理图片…

局域网管理工具

每个组织的业务运营方法都是独一无二的&#xff0c;其网络基础设施也是如此&#xff0c;由于随着超融合基础设施等新计算技术的发展&#xff0c;局域网变得越来越复杂&#xff0c;因此局域网管理也应该如此&#xff0c;组织需要量身定制的局域网管理解决方案&#xff0c;这些解…

probiller怎么订阅

很多小伙伴想订阅probiller&#xff0c;但是不知道怎么订阅&#xff0c;这里我使用的是556150的卡订阅的&#xff0c;亲测~~ 所以有想订阅的小伙伴可以点击获取5561卡片&#xff0c;此卡0年费、0月费 下面请看订阅记录 开卡步骤请看图 卡信息在卡中心&#xff0c;cvc安全码 …

(五)关系数据库标准语言SQL

注&#xff1a;课堂讲义使用的数据库 5.1利用SQL语言建立数据库 5.1.1 create Database 5.1.2 create schema...authorization... 创建数据库和创建模式的区别&#xff1a; 数据库是架构的集合&#xff0c;架构是表的集合。但在MySQL中&#xff0c;他们使用的方式是相同的。 …

深入探索HAProxy:高性能负载均衡器的奥秘

目录 引言 一、HAProxy基础知识 &#xff08;一&#xff09;HAProxy概述 &#xff08;二&#xff09;核心特性 &#xff08;三&#xff09;支持调度算法 二、安装haproxy &#xff08;一&#xff09;下载源码包 &#xff08;二&#xff09;解决依赖环境 &#xff08;三…

Linux系统安装APITable智能表格并结合内网穿透实现公网访问本地服务

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c;是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

力扣:118. 杨辉三角

力扣&#xff1a;118. 杨辉三角 描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输…

第三百九十五回

文章目录 1. 概念介绍2. 生命周期状态与方法2.1 生命周期状态2.2 生命周期方法2.3 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何监听组件的生命周期"相关的内容&#xff0c;本章回中将介绍生命周期库:Lifecycle.闲话休提&#xff0c;让我们一起Talk…

Python-Pong-Game

我还加了音效&#xff0c;类似于小时候游戏机上的弹球游戏 import os import turtle import pygame#初始化pygame pygame.init()#加载声音文件 bounce_sound pygame.mixer.Sound("bounce.mp3")wn turtle.Screen() wn.title("Pong by ") wn.bgcolor(&qu…

力扣题目训练(18)

2024年2月11日力扣题目训练 2024年2月11日力扣题目训练561. 数组拆分566. 重塑矩阵572. 另一棵树的子树264. 丑数 II274. H 指数127. 单词接龙 2024年2月11日力扣题目训练 2024年2月11日第十八天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简单题3道、中等…

光栅化处理(Rasterization)

1.垂直可视角度 ​ 通常使用不同镜头的相机拍摄同一物品的时候&#xff0c;其可以看到的物体的范围是不同的&#xff0c;那么如何表示这一镜头下摄像机所能看到的范围呢&#xff1f;我们定义了一个概念——可视角。如下图所示(两条红线所框出来的角)&#xff1a; 实际上当我们…

LoadBalancer 客户端的负载均衡器+openFeign 请求转发

LoadBalancer Spring Cloud LoadBalancer是Spring Cloud中负责客户端负载均衡的模块&#xff0c;其主要原理是从nacos中获取服务列表通过选择合适的服务实例来实现负载均衡。 源码跟踪 可以看到这里的intercept()方法&#xff0c;拦截了用户的HttpRequest请求&#xff0c;然…

【鸿蒙 HarmonyOS 4.0】通知

一、介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景&#xff1a; 显示接…