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)如何无缝将相机状态注入到现有视频生成模型,而不影响帧质量和时间一致性?
1、视频生成模型
文生视频模型
文生视频模型,最近可以看做两个方向,一是从头开始训练视频生成器,二是基于已有的扩散模型来生成视频生成器。
一般来说目标函数可以看做:是文本嵌入
可控文生视频模型
一般来说,可控文生视频模型都是通过加入额外的结构控制信号,比如深度图,来提高图像和视频生成的可控性。
一般来说目标函数可以看做:是引入编码器的其他条件控制信号。
2、视频条件引入
论文提到,相机姿态受到内参和外参矩阵影响,内参矩阵包含旋转矩阵R和平移矩阵t,而旋转矩阵受到正交性约束,平移矩阵不会,这可能导致学习过程存在不一致性。另外直接使用原始参数会导致模型将这些值与图像像素关联,从而限制视觉细节的精确控制。
所以,提出使用Plucker射线来表示相机姿态,对于图像上每一个像素,他的plucker射线嵌入就是,其中是世界坐标系下的相机中心,是世界坐标系下从相机中心到像素的方向向量,计算如下:
上述等式也表示了相机投影的逆过程,点从三维世界坐标空间映射到相机坐标系 。
这里可以看下Plucker embedding的输入,也就是plucker embedding序列的格式,其中n表示视频总帧数。
3、可控相机姿态引入视频生成
先看Camera Encoder部分,类似于T2I-Adaptor,这个部分的每一次下采样都是由一个卷积层+Temporal Attention构成,目的是捕捉每一帧相机的时间关系。
其中的输入就只有Plucker射线,并通过encoder来提取多尺度特征,看了代码就是输出了一个列表,包含每一层的特征。
另外对于融合部分,论文中,将Camera Encoder的每一层输出特征图列表,完美的concat在预训练的T2V model的下采样层和中间层输出特征上,并经过linear layer,之后经过Temporal attention层,得到新的,目的是保证不干扰原有模型整体结构的情况下,引入plucker对相机姿态的控制。
而代码中,则通过交叉注意力引入到预训练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