[读论文] Compositional 3D-aware Video Generation with LLM Director

Abstract

近年来,通过强大的生成模型和大规模互联网数据,文本到视频生成领域取得了显著进展。然而,在生成视频中精确控制单个概念(如特定角色的动作和外观、视角的移动)方面,仍存在巨大挑战。为此,我们提出了一种新的范式,先分别生成每个概念的 3D 表示,然后利用大语言模型(LLM)和 2D 扩散模型的先验知识将它们组合起来。具体来说,对于输入的文本提示,我们的方法分为三个阶段:

  1. 利用 LLM 作为 “导演”,将复杂的查询分解为若干子提示,分别指示视频中的各个独立概念(例如场景、物体、动作等),然后调用预训练的专家模型,获取这些概念的对应 3D 表示

  2. 为了组合这些表示,我们提示多模态 LLM 生成关于物体轨迹的比例和坐标的粗略指导

  3. 为了使生成的帧符合自然图像的分布,我们进一步利用 2D 扩散模型的先验知识,并通过 “得分蒸馏采样”(Score Distillation Sampling)来优化组合

1. Introduction

paper: arxiv.org/pdf/2409.00558

2. Related Works

2.1 Video Generation with LLM

2.2 Compositional 3D Generation

3. Preliminaries

3.1 3D Gaussian Splatting

3DGS 近年来因其逼真的视觉质量和实时渲染能力,在新视角合成领域引起了广泛关注。3DGS 使用一组各向异性的椭球体(即3D高斯分布)来编码 3D 特性,其中每个高斯分布由以下参数表征:位置 μ ∈ R 3 \mu\in\R^3 μR3、协方差矩阵 Σ ∈ R 3 × 3 \Sigma\in\R^{3\times3} ΣR3×3(由尺度 s ∈ R 3 s\in\R^3 sR3 和旋转 r ∈ R 3 r\in\R^3 rR3 计算得到)、不透明度 α ∈ R \alpha\in\R αR,以及颜色 c ∈ R 3 c\in\R^3 cR3

在渲染新视角时,3DGS 采用基于网格的光栅化方法,将 3D 高斯分布投影到图像平面上成为 2D 高斯分布。像素 p p p 的最终颜色 c ( p ) c(p) c(p) 定义为:

c ( p ) = ∑ c ^ α ^ ∏ ( 1 − α ^ ) c(p)=\sum\hat c\hat\alpha\prod(1-\hat\alpha) c(p)=c^α^(1α^)

其中 c ^ \hat c c^ α ^ \hat\alpha α^ 分别表示一系列贡献于该像素的 2D 高斯分布的颜色值和不透明度。3DGS 通过逐视图优化的方式,利用 L 1 L_1 L1 损失和 SSIM 损失进行优化。由于对 3D 场景进行了显式建模,优化后的 3D 高斯分布可以轻松地进行控制和编辑。

3.2 Score Distillation Sampling

与文本到图像生成不同,文本到 3D 生成由于缺乏大量的文本-图像配对数据而面临严重的数据不足问题。为了解决这一问题,SDS 被提出,用于从预训练的基于扩散模型的文本到图像生成模型 ϕ \phi ϕ 中提取生成先验。具体来说,对于一个由参数 θ \theta θ 构成的 3D 表示,SDS 用于衡量渲染图像 x = g ( θ ) x=g(\theta) x=g(θ) 与给定文本提示 y y y 之间的相似性,其中 g g g 表示渲染操作。结果用于更新 θ \theta θ 的梯度计算公式如下:

∇ θ L S D S ( ϕ , x = g ( θ ) ) = E t , ϵ [ w ( t ) ( ( x t ; y , t ) − ϵ ) ] \nabla_\theta\mathcal L_{SDS}(\phi,x=g(\theta))=\mathbb E_{t,\epsilon}[w(t)((x_t;y,t)-\epsilon)] θLSDS(ϕ,x=g(θ))=Et,ϵ[w(t)((xt;y,t)ϵ)]

其中: t t t 表示噪声级别, ϵ \epsilon ϵ 表示真实噪声, w ( t ) w(t) w(t) 是一个加权函数, ϵ ^ ϕ \hat\epsilon_\phi ϵ^ϕ 是基于带有文本嵌入 y y y 的加噪图像 x t x_t xt 所估计的噪声

4. Method

4.1 Task Decomposition with LLM

Task Instructions. 给定一个文本提示,我们调用 LLM 将其分解为多个子提示。每个子提示描述了一个独立的概念,例如场景、物体和动作。具体而言,对于输入提示 y y y,我们向 LLM 发送如下指令:“Please decompose this prompt into several sub-prompts, each describing the scene, objects in the scene, and the objects’ motion.” 通过这样的指令,我们可以获得相应的子提示。

3D Representation. 在获取每个概念的子提示后,我们利用预训练的专家模型生成其对应的 3D 表示。在本研究中,我们基于3DGS 构建结构化表示,这是一种显式形式,因此足够灵活,能够进行组合或动画处理。针对如运动等概念,我们的框架能够泛化为任意基于 3D 高斯的可动画物体。为了简化,我们以人类运动作为实例,因为它适用于多种场景。为了获取多样化的人类运动,我们采用检索增强方法,根据与运动相关的子提示,从大型运动库中以 SMPL-X 参数的形式获取运动数据。

Instantiation. 为了正式说明该方案,考虑以下示例:我们有子提示 y 1 , y 2 , y 3 y_1,y_2,y_3 y1,y2,y3,分别描述场景、物体和动作。此外,LLM 选择了相应的预训练文本引导专家模型 ϕ 1 , ϕ 2 , ϕ 3 \phi_1,\phi_2,\phi_3 ϕ1,ϕ2,ϕ3,概念生成可以形式化为:

G 1 = ϕ 1 ( y 1 ) , G 1 = ϕ 2 ( y 2 , M ) , M = ϕ 3 ( y 3 ) G_1 = \phi_1(y_1),\quad G_1=\phi_2(y_2,M),\quad M=\phi_3(y_3) G1=ϕ1(y1),G1=ϕ2(y2,M),M=ϕ3(y3)

其中 G 1 G_1 G1 G 2 G_2 G2 表示 3D 高斯表示, M M M 表示用于驱动 G 2 G_2 G2 的运动。

4.2 Coarse-grained Trajectory Generation with LLM

在生成的概念基础上,我们的目标是将它们组合成一个动态的3D表示,从而渲染出与输入文本提示一致的视频。要实现这一点,需要确定物体的比例和轨迹,以表示它们在场景中的大小和位置。为此,我们提出利用多模态大语言模型中编码的知识提供先验信息。

对于物体的比例,我们发现直接通过输入提示和渲染的场景图像向 GPT-4V 进行查询,可以合理地估计其分辨率 H 2 D H_{2D} H2D W 2 D W_{2D} W2D。然而,对于轨迹估计,情况并非如此,直接使用 GPT-4V 查询轨迹会导致与常识明显偏离的结果。我们总结出以下两个问题:

  1. GPT-4V 难以在单次查询中生成合理的轨迹,因为它缺乏视觉动态的先验知识

  2. 由于 GPT-4V 主要用于生成文本,在想象视觉内容方面存在局限性

为了缓解这些问题,我们引入了两个简单但有效的技术:

  1. 尽管 GPT-4V 缺乏对物体的视觉知识,我们可以通过将物体表示为具有估计分辨率的边界框来缓解这一问题

  2. 我们遵循逐步推理的理念,首先让 GPT-4V 估计起点和终点的位置,然后再推导它们之间的路径

4.3 Fine-grained Composition with 2D Diffusion Priors

Lift Trajectory from 2D to 3D. 通过 LLM 可以获得估计轨迹的 2D 像素坐标 L p i = ( p x i , p y i ) L_p^i=(p_x^i,p_y^i) Lpi=(pxi,pyi)。然而,2D 轨迹不足以满足 3D 空间中的组合需求。因此,我们将其转换为对应的3D世界坐标 L 3 D i = ( x i , y i , z i ) L_{3D}^i=(x^i,y^i,z^i) L3Di=(xi,yi,zi) 具体步骤如下:

  1. 深度图预测:首先,使用单目深度估计器预测渲染场景图像的深度图 D D D

  2. 深度确定:取目标边界框下边界中心点的深度值作为轨迹的深度。

  3. 轨迹转换:将2D轨迹转换为3D轨迹,公式如下:

( x i , y i , z i , 1 ) T = R − 1 K − 1 [ ( p x i + H 2 D 2 , p y i , 1 ) T ⋅ D ( p x i + H 2 D 2 , p y i ) ] − ( H 3 D 2 , 0 , 0 , 0 ) T (x^i,y^i,z^i,1)^T=R^{-1}K^{-1}[(p^i_x+\frac{H_{2D}}2,p^i_y,1)^T\cdot D(p^i_x+ \frac{H_{2D}}2,p^i_y)]-(\frac{H_{3D}}2,0,0,0)^T (xi,yi,zi,1)T=R1K1[(pxi+2H2D,pyi,1)TD(pxi+2H2D,pyi)](2H3D,0,0,0)T

其中 R R R K K K 分别表示相机的外参和内参, H 2 D H_{2D} H2D W 2 D W_{2D} W2D 表示 2D 边界框, H 3 D H_{3D} H3D 表示场景中该物体的 3D 边界框实际高度。通过以上步骤,我们能够从 2D 像素轨迹生成符合场景需求的 3D 轨迹,实现更准确的 3D 空间组合。

Composition Refinement with 2D Diffusion Priors. 通过 3D 轨迹,我们将物体集成到场景中。然而,由 LLM 估计的轨迹仍然粗糙,可能不符合自然图像的分布。为了解决这一问题,我们提出通过将预训练图像扩散模型中的生成先验蒸馏到 3D 空间,进一步优化物体的比例、位置和旋转。具体来说,我们将这些属性的参数视为可优化变量,并使用SDS 来提升渲染图像的真实性:

∇ S ˉ L S D S S c a l e = E [ w ( t ) ( ϵ ^ ϕ ( L 3 D 1 , ( S + σ ( S ^ ) ⋅ τ S − τ S 2 ) ⋅ G 2 ; y , t ) − ϵ ) ] \nabla_{\bar S}\mathcal L^{Scale}_{SDS}=\mathbb E[w(t)(\hat\epsilon_\phi( L^1_{3D},( S+\sigma(\hat S)\cdot\tau_S-\frac{\tau_S}2 )\cdot G_2;y,t )-\epsilon)] SˉLSDSScale=E[w(t)(ϵ^ϕ(L3D1,(S+σ(S^)τS2τS)G2;y,t)ϵ)]

其中 S ^ \hat S S^ 表示可优化变量, S S S 表示由 GPT-4V 估计的比例, σ \sigma σ 是 Sigmoid 函数, τ S \tau_S τS 是一个阈值, G 2 G_2 G2 表示物体的 3D 高斯表示, x t x_t xt 是给定 L 3 D i L_{3D}^i L3Di 和缩放后的 G 2 G_2 G2 生成的带噪 2D 图像。通过优化上述公式,可以获得更精确的比例。

接着,我们类似地优化估计的 3D 轨迹位置,位置优化的公式为:

∇ L ^ i L S D S L o c a t i o n = E t , ϵ [ w ( t ) ( ϵ ^ ϕ ( x t ( L 3 D i + σ ( L ^ i ) ⋅ τ L − τ L 2 , ( S + σ ( S ^ ) ⋅ τ S − τ S 2 ) ⋅ G 2 ) ; y , t ) − ϵ ) ] \nabla_{\hat L^i}\mathcal L^{Location}_{SDS}=\mathbb E_{t,\epsilon}[w(t)( \hat\epsilon_\phi( x_t( L^i_{3D}+\sigma(\hat L^i)\cdot\tau_L-\frac{\tau_L}2,( S+\sigma(\hat S)\cdot\tau_S-\frac{\tau_S}2 )\cdot G_2 );y,t )-\epsilon )] L^iLSDSLocation=Et,ϵ[w(t)(ϵ^ϕ(xt(L3Di+σ(L^i)τL2τL,(S+σ(S^)τS2τS)G2);y,t)ϵ)]

其中 L ^ i \hat L^i L^i 是可优化变量。

对于不同时间步的物体旋转,我们基于假设:物体在当前时间步应面向下一时间步的位置,直接计算对应的旋转矩阵。旋转矩阵 R ^ i \hat R^i R^i 公式如下:

R ^ i = [ t x 2 + c t x y − z s t x z + y s t x y + z s t y 2 + c t y z − x s t x z − y s t y z + x s t z 2 + c ] t = 1 − c , c = cos ⁡ ( θ ) , s = sin ⁡ ( t h e t a ) , u ⃗ = ( x , y , z ) T \hat R^i=\begin{bmatrix} tx^2+c&txy-zs&txz+ys\\ txy+zs&ty^2+c&tyz-xs\\ txz-ys&tyz+xs&tz^2+c \end{bmatrix} \\ t=1-c,\quad c=\cos(\theta),\quad s=\sin(theta),\quad\vec u=(x,y,z)^T R^i= tx2+ctxy+zstxzystxyzsty2+ctyz+xstxz+ystyzxstz2+c t=1c,c=cos(θ),s=sin(theta),u =(x,y,z)T

θ \theta θ u ⃗ \vec u u 是通过叉乘得到的,分别基于 ( L 3 D i + 1 + σ ( L ^ i + 1 ) ⋅ τ L − L 3 D i − σ ( L ^ i ) ⋅ τ L (L^{i+1}_{3D}+\sigma(\hat L^{i+1})\cdot\tau_L-L^i_{3D}-\sigma(\hat L^i)\cdot\tau_L (L3Di+1+σ(L^i+1)τLL3Diσ(L^i)τL ( 0 , 0 , 1 ) T (0,0,1)^T (0,0,1)T

Inference. 在获得了各个概念的 3D 表示以及优化的参数,指示如何组合这些概念后,我们可以将 3D 表示渲染成 2D 视频,并在实时中灵活地控制相机

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

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

相关文章

【工具变量】上市公司企业违规数据(企业当年是否违规、企业当年违规的次数)2000-2022年

一、测算方式:参考C刊《当代财经》纪亚方(2023)老师的研究,通过对上市公司被处罚涉及的年份进行追溯,为了保证企业违规行为变量度量的准确性,将追溯到公司被处罚的年份定义为违规年份。 采用两个指标对企业…

视频孪生携手视联网 智汇云舟亮相中国电信2024数字科技生态大会

12月3日,由中国电信主办的“2024数字科技生态大会”在广州盛大开幕。活动现场,前沿科技与创新理念交相辉映,数字科技未来蓝图徐徐展开。智汇云舟作为中国电信的战略合作伙伴,受邀出席本次活动。 展会期间,以“天翼视联…

Unity 使用LineRenderer制作模拟2d绳子

效果展示: 实现如下: 首先,直接上代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineFourRender : MonoBehaviour {public Transform StartNode;public Transform MidNod…

力扣-图论-4【算法学习day.54】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

【射频IC进阶实践教程】2.6 LNA版图设计及DRC/LVS验证

射频集成电路的版图设计非常关键,他对寄生参数非常敏感,需要使其最小化。还需要注意相互耦合的方式本次课程主要介绍射频IC的一些相关布局和连线方面的考虑。 一、版图设计 1. 版图的元件布局 首先打开对应的原理图 点击进行版图设计 由于已经有做好的…

uviewplus中的时间单选框up-datetime-picker的在uni-app+vue3的使用方法

uviewplus中的时间单选框up-datetime-picker的使用方法 前言 在实际开发中,我们经常需要使用时间选择器来让用户选择特定的时间。本文将详细介绍uviewplus中up-datetime-picker组件的使用方法,特别是在处理年月选择时的一些关键实现,因为官方有很多相关的功能和方法…

Spring Bean 的生命周期和获取方式

优质博文:IT-BLOG-CN 一、Spring Bean 的生命周期,如何被管理的 对于普通的 Java对象,当 new的时候创建对象,当它没有任何引用的时候被垃圾回收机制回收。而由 Spring IoC容器托管的对象,它们的生命周期完全由容器控…

【Spring MVC篇】返回响应

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得,欢迎大家在评论区交流讨论💌 目录 一、返回静态页面…

使用Python创建API服务器并打包成exe文件

本文来记录下使用Python创建API服务器并打包成exe文件 文章目录 概述简述API服务器创建打包API服务器为exe文件本文小结 概述 在软件开发中,API服务器是连接前端和后端服务的桥梁,而Python因其丰富的库和框架,如Flask、Django等,成…

MHA切换过程

MHA(Master High Availability)是一套用于MySQL数据库的高可用性解决方案,它能够在主服务器发生故障时自动将一个从服务器提升为新的主服务器,从而实现数据库服务的持续可用。MHA的切换过程主要包括以下几个步骤: 1. …

NextUI 教程:打造美观高效的React UI

NextUI 教程:打造美观高效的React UI 项目地址:https://gitcode.com/gh_mirrors/ne/nextui 1. 项目介绍 NextUI 是一个轻量级、快速且现代化的React UI库,提供了一系列优雅的组件以帮助开发者构建令人印象深刻的Web应用。它注重性能和用户体验&#x…

Python和Java后端开发技术对比

在当今互联网技术飞速发展的时代,后端开发扮演着至关重要的角色。Python和Java作为两大主流的后端开发语言,各自具备独特的优势和应用场景。让我们深入了解这两种技术的特点和选择建议。 Java后端开发一直是企业级应用的首选方案。它以强大的类型系统、…

Java HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。 HashMap 是无序的&#x…

模型案例:| 帐篷检测模型!

导读 2023年以ChatGPT为代表的大语言模型横空出世,它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力,为人工智能技术的发展开辟了新的可能性。同时,人工智能技术正在进入各种应用领…

实验日志——DETR

DETR训练日志 1. 代码来源 代码源自作者的Github: https://github.com/facebookresearch/detr?tabreadme-ov-file 2. 数据来源 在DETR中只使用了COCO2017数据集,其中训练集有118288张图像,验证集有5001张数据,测试集有40671张数据&#…

18、IO流:

18、IO流: 这一章很枯燥无聊~ 文件: 什么是文件: 文件,对我们并不陌生,文件时保存数据的地方,比如我们经常使用的word文档,txt文档,excel文档…都是文件。它既可以保存一张图片&…

24.两两交换链表中的节点 python

两两交换链表中的节点 题目题目描述示例 1:示例 2:示例 3:提示:题目链接 题解解题思路python实现代码解读提交结果 题目 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须…

解决 git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese

目录 前言 方法一:取消代理设置 方法二:设置系统代理(推荐) 方法三 方法四:不挂梯子时 前言 在使用 Git/Git小乌龟 进行代码管理的过程中,经常会遇到各种各样的问题,其中之一就是在执行 g…

推荐8款自动化软件测试必备工具

在现代软件测试开发领域,自动化测试工具的使用已经变得至关重要。 这些工具不仅提高了测试效率,还确保了软件质量和稳定性。 本文将向您介绍8款自动化软件测试必备工具,它们涵盖了各个层面的测试需求,从而助力测试团队更好地应对…

MySQL聚合函数查询

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…