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

CameraCtrl: Enabling Camera Control forText-to-Video Generation 论文解读

目录

一、概述

二、相关工作 

1、文生视频的生成模型        

2、可控视频生成

三、CameraCtrl

1、视频生成模型

2、视频条件引入

3、可控相机姿态引入视频生成 

4、数据驱动下的相机分布

四、训练

1、细节


一、概述

        该论文介绍了一个即插即用模块,可以在文本到视频生成模型中实现相机视角的精确控制,考虑到无缝集成到T2V模型中,我们研究了如何有效精确控制相机运动。并通过Plucker射线来表示相机姿态,提供对相机参数的全面几何描述。

        该论文在AnimateDiff上实现了CameraCtrl,并在各种个性化视频生成中实现精确的相机控制,证明了其在各种视频创作环境上的通用性和实用性。

二、相关工作 

1、文生视频的生成模型        

        近年来,文本到视频(T2V)生成领域取得了重大进展,主要利用扩散模型(diffusion model)进行训练,因为它们在训练过程中更加稳定,并且有成熟的开源社区支持。

        作为这一领域的先驱,Video Diffusion Model将2D图像扩散架构扩展到视频数据,并从头开始联合训练模型。后续的工作则利用预训练的2D图像生成器,通过在其中插入时间层来生成视频。

        为了提高时间连贯性,一些方法直接生成全帧率的视频,而不是使用常见的时间超分辨率模块。

        其他重要的尝试包括使用可扩展的transformer骨干网络、在压缩的时空潜在空间中操作,以及使用离散token和语言模型进行视频生成。

2、可控视频生成

        为了提高视频生成的可控性,一些工作利用精确的信号(如深度图/骨架序列)来精确控制场景/人物运动 。

        其他方法采用图像作为控制信号输入到视频生成器,有助于提高视频质量或准确建模时间关系 。

        本文关注在视频生成过程中对摄像机姿态的控制。AnimateDiff采用高效的LoRA微调来获得针对不同镜头类型的模型权重 。

        Direct-a-Video提出了一个摄像机嵌入器来控制视频生成过程中的摄像机姿态,但只能基于3个摄像机参数进行控制,限制了其控制能力 。

        MotionCtrl设计了一个运动控制器,可以输入更多摄像机参数并生成对应的复杂摄像机姿态视频。但需要对视频扩散模型的部分参数进行微调,可能会影响其泛化能力。

三、CameraCtrl

        提出可控视频生成上针对可控的三个问题:

(1)如何有效表示相机状态以反映三维空间中的几何运动?

(2)如何无缝将相机状态注入到现有视频生成模型,而不影响帧质量和时间一致性?

(3)应该使用何种类型的训练数据来确保模型训练得当?

1、视频生成模型

文生视频模型

        文生视频模型,最近可以看做两个方向,一是从头开始训练视频生成器,二是基于已有的扩散模型来生成视频生成器。

        一般来说目标函数可以看做:c_t是文本嵌入

可控文生视频模型

        一般来说,可控文生视频模型都是通过加入额外的结构控制信号,比如深度图,来提高图像和视频生成的可控性。

        一般来说目标函数可以看做:\phi_s(s_t)是引入编码器的其他条件控制信号。

2、视频条件引入

        论文提到,相机姿态受到内参和外参矩阵影响,内参矩阵包含旋转矩阵R和平移矩阵t,而旋转矩阵受到正交性约束,平移矩阵不会,这可能导致学习过程存在不一致性。另外直接使用原始参数会导致模型将这些值与图像像素关联,从而限制视觉细节的精确控制。

        所以,提出使用Plucker射线来表示相机姿态,对于图像上每一个像素(u,v),他的plucker射线嵌入就是p_{u,v}=(o \times d_{u,v}, \times d_{u,v}),其中o是世界坐标系下的相机中心,d_{u,v}是世界坐标系下从相机中心到像素(u,v)的方向向量,计算如下:

        上述等式也表示了相机投影的逆过程,点从三维世界坐标空间映射到相机坐标系 。

        这里可以看下Plucker embedding的输入,也就是plucker embedding序列的格式P \in\boldsymbol{\mathbb{R}} ^{n \times 6\times h\times w},其中n表示视频总帧数。

3、可控相机姿态引入视频生成 

        先看Camera Encoder部分\Phi_c,类似于T2I-Adaptor,这个部分的每一次下采样都是由一个卷积层+Temporal Attention构成,目的是捕捉每一帧相机的时间关系。

        其中\Phi_c的输入就只有Plucker射线,并通过encoder来提取多尺度特征,看了代码就是输出了一个列表,包含每一层的特征。

        另外对于融合部分,论文中,将Camera Encoder的每一层输出特征图列表c_t,完美的concat在预训练的T2V model的下采样层和中间层输出特征z_t上,并经过linear layer,之后经过Temporal attention层,得到新的z_t,目的是保证不干扰原有模型整体结构的情况下,引入plucker对相机姿态的控制。

        而代码中,c_t则通过交叉注意力引入到预训练U-Net的每一层的输出上,并做了残差处理。

4、数据驱动下的相机分布

        作者首先探讨了选择合适的训练数据集的重要性。理想的训练数据应该具有以下特点:1)外观特征应该与基础的文本到视频(T2V)模型的训练数据相匹配,以避免外观分布差异;2)摄像机姿态分布应该尽可能广泛,以确保模型能够学习到复杂的摄像机轨迹。

        作者选择了三个候选数据集:Objaverse、MVImageNet和RealEstate10K。Objaverse数据集由渲染引擎生成,摄像机姿态分布广泛,但外观与真实世界数据存在差异;MVImageNet数据集的摄像机轨迹主要局限于水平旋转,缺乏多样性;而RealEstate10K数据集在外观和摄像机轨迹方面都较为合适,因此最终被选为训练数据。

        为了监控摄像机编码器的训练过程,作者提出了一种"摄像机对齐度量"来量化生成视频的摄像机轨迹与输入摄像机条件之间的误差。具体来说,他们使用COLMAP从生成的视频中提取摄像机姿态序列,并与输入的摄像机条件进行比较。

        下面两个式子为量化指标,计算生成姿态和真实姿态的旋转矩阵err和平移矩阵err。

四、训练

1、细节

        采用AnimateDiff V3作为基础T2V模型,并且引入CameraCtrl作为改进,另外得益于AnimateDiff的训练策略,他的motion模块,可以与各种T2I lora或基础模型结合,来适应跨不同领域和类型的视频生成。

        另外评估时客观指标使用FID。

         后面提到一个问题,SparseCtrl模型因为使用图像特征与Pose embedding直接concat作为输入,这种方式会造成泄露,而限制模型泛化能力,所以为了增强帧间相机相干性,引入了一个时间注意力层。

        另外上述b图,也展示了如果插入到空间注意力层,或者空间交叉注意力层的效果。

        text-to-video的生成效果。

        另外appendix中介绍了,pose embedding注入encoder以及encoder+decoder的效果,结果姿态控制更好的是都加入。但是代码写的额  

 项目地址:CameraCtrl


http://www.kler.cn/a/465777.html

相关文章:

  • 【FlutterDart】 拖动边界线改变列宽并且有边界高亮和鼠标效果(12 /100)
  • gaussdb怎么查询一个表所在的表空间的总大小和可用大小,用GB为单位表示?
  • 从0到机器视觉工程师(二):封装调用静态库和动态库
  • 代码段中使用数据、栈
  • 约瑟夫问题
  • 「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
  • Qemu配置QXL显卡支持分辨率
  • 构建一个简单的Promise
  • LQ24fresh
  • Java项目实战II基于微信小程序的家庭大厨(开发文档+数据库+源码)
  • 经典文献阅读之--Senna(桥接大型视觉语言模型和端到端自动驾驶)
  • el-table动态行和列及多级表头
  • 【每日学点鸿蒙知识】Video播放失败、toggle拖拽、图片裁剪旋转等
  • C语言----函数
  • postgres docker安装
  • 【数据仓库】hadoop3.3.6 安装配置
  • [CTF/网络安全] 攻防世界 command_execution 解题详析
  • df.groupby与apply一起使用,举例项目中实际经常使用的场景
  • 基于SpringBoot的网上订餐系统(源码+数据库+文档)
  • C# _ 数字分隔符的使用
  • 2024年中国航天发射列表(68次发射,失败2次,部分失败1次)
  • python 给钉钉发消息简易demo
  • 带虚继承的类对象模型
  • 关于计算机中上下文概念的理解
  • Mac iTerm2集成DeepSeek AI
  • 一文读懂插值法