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

WonderJourney 学习笔记

目录

原理

所有场景的参数:


原理

  • Pytorch3D:用于高性能的3D渲染,确保生成的场景具有高度的真实感和细节。
  • GPT-4:通过生成场景描述,为每一帧提供丰富的背景故事和情感。
  • MiDaS:用于深度估计,确保场景的立体感和空间感。
  • Stable Diffusion:用于图像生成和修复,确保每一帧的图像质量。

所有场景的参数:

 WonderJourney-main/examples/examples.yaml

case 场景参数:

- name: real_buildingimage_filepath: examples/images/26_real_building.pngstyle_prompt: campus setting DSLR 35mm landscapecontent_prompt: Elegant building, dynamic fountain set, Mediterranean building, campus settingnegative_prompt: ""background: ""

室内场景:

14_french_manor.png

- name: french_manorimage_filepath: examples/images/14_french_manor.pngstyle_prompt: painting stylecontent_prompt: 18th Century French Manor House, chandelier, fireplace, pianonegative_prompt: ''background: A grand piano sits in a spacious room with a chandelier hanging aboveit. The room is decorated with paintings and vases, and there are chairs placedaround the piano. The room appears to be a formal living area or a concert hall

WonderJourney: 从任意地方输入(文本或图像)生成的奇妙旅程(渲染生成的3D场景序列)

图1. 我们提出了WonderJourney——从文本描述或任意图像(如照片或生成的艺术品)生成一系列多样且连贯的3D场景。对于固定的输入,WonderJourney可以生成各种旅程(我们称之为“奇妙旅程”),可能结束于任何地方(见图4)。我们展示了沿生成的3D场景序列渲染的图像。强烈建议读者观看视频示例:https://kovenyu.com/WonderJourney/。

摘要
我们介绍了WonderJourney,一个用于持续3D场景生成的模块化框架。与以往专注于单一类型场景视角生成的工作不同,我们从用户提供的任何位置开始(通过文本描述或图片),并生成穿过一系列多样化但连贯连接的3D场景的旅程。我们利用大型语言模型(LLM)生成这一旅程中场景的文字描述,使用文本驱动的点云生成管道来制作令人信服且连贯的3D场景序列,并利用大型视觉-语言模型(VLM)验证生成的场景。我们展示了跨各种场景类型和风格的引人注目的、多样的视觉结果,形成了想象中的“奇妙旅程”。项目网站:https://kovenyu.com/WonderJourney/。
“不,不!冒险先来,解释太耗时间了。”——《爱丽丝梦游仙境》

我们引入了持久3D场景生成的问题。持久3D场景生成的主要挑战集中在生成多样但可信的场景元素上。这些场景元素需要支持形成一条通过连贯连接的3D场景的路径。它们应当包含适合观察到的场景的各种物体、背景和布局,并且能够自然过渡到下一个未被观察到的场景。这个生成过程可以分解为确定给定场景要生成什么物体;在哪里生成这些物体;以及这些场景如何相互几何连接。确定要生成哪些元素需要对场景进行语义理解(例如,狮子可能不适合厨房);决定在哪里生成它们则需要关于视觉世界的常识(例如,狮子不应该漂浮在空中);此外,在新的连接场景中生成这些元素还需要几何理解(例如,遮挡和解除遮挡、视差和适当的布局)。值得注意的是,这些挑战在以前的持久视角生成工作中是不存在的,因为它们往往专注于单一领域[24]或单一场景[11]。

我们提出的解决方案WonderJourney,通过其各自的模块解决了上述所有挑战。WonderJourney利用LLM生成一系列场景描述,然后是一个文本驱动的视觉场景生成模块,以产生代表相连3D场景的一系列彩色点云。在这里,LLM提供了常识和语义推理;视觉模块提供了视觉和几何理解及适当的3D效果。此外,我们利用视觉-语言模型(VLM)来验证生成并启动重新生成,当它检测到不良视觉效果时。我们的框架是模块化的。每个模块都可以用最好的预训练模型来实现,使我们能够利用快速发展的视觉和语言研究领域的最新和未来进展。我们的主要贡献如下:
• 我们研究了持久3D场景生成,并提出了WonderJourney,这是一个将问题分解为核心组件的模块化框架:一个LLM用于生成场景描述,一个文本驱动的视觉模块用于生成连贯的3D场景,以及一个VLM用于验证生成的场景。
• 我们设计了一个视觉场景生成模块,该模块利用现成的文本到图像和深度估计模型来生成连贯的3D点云。我们的模块处理边界深度不准确、天空深度不准确和遮挡意识不足的问题。
• 我们展示了令人信服的视觉结果,并将WonderJourney与SceneScape[11]和InfiniteNature-Zero[21]进行了用户研究比较,显示WonderJourney产生了有趣且多样的旅程。

相关工作
持续视角生成。关于持续视角生成的开创性工作是Infinite Images[18],它通过根据摄像机运动缝合和渲染图像来合成导航3D世界的效果。后来的工作,如Infinite Nature[24]和InfiniteNature-Zero[21],学习根据当前视角自回归生成下一个视角。后续工作改进了全局3D一致性[5]和视觉质量[4]。最近的一项工作,SceneScape[11],探讨了通过逐步构建由长网格表示的单一洞穴类场景来进行文本驱动的持续视角生成。虽然这些方法研究了持续生成,但它们局限于单一领域,如自然照片[21, 24]或单一场景[11]。

3D场景生成。近年来,在文本到3D或图像到3D生成方面取得了显著进展,其中许多聚焦于没有背景的对象[9, 20, 22, 26, 27, 33, 34]。这些工作通常利用来自图像生成模型的2D图像先验,例如图像扩散模型[36],并通过提炼2D图像生成模型的监督[33]来建立3D表示,如NeRF[42]。其他关于3D对象生成的工作直接从2D图像学习3D生成模型[6, 7, 13, 14, 29, 30, 32, 37, 39]。

还有一些工作专注于生成带有背景的单个3D场景[2, 10]。例如,Text2Room[15]从单个文本提示生成房间规模的3D场景,使用纹理3D网格作为场景表示。

其他相关工作专注于从有限的观察中生成(有时称为“重建”)场景,例如单张图像。Long-Term Photometric Consistent NVS[43]通过条件扩散模型自回归生成源图像的单个场景。GeNVS[8]和Diffusion with Forward Models[40]使用中间3D表示,但分别对每个场景进行训练和评估。ZeroNVS[38]从单张图像合成场景的NeRF。他们的工作专注于生成单个场景,而我们的目标是生成连贯连接的多样性场景序列。

文本引导的视频生成。场景生成的想法也在视频生成中得到了探索。一些同期作品如TaleCrafter[12]和其他[16, 23, 25]也讨论了创建跟随LLM生成的故事或脚本的视频系列的任务。然而,所有这些作品都使用不同的场景作为视频中的不同片段,导致硬切换,而我们的持续3D场景生成旨在生成连贯连接的场景序列。

方法
我们的目标是生成一个潜在无限的多样化但连贯连接的3D场景序列,这既需要3D场景的几何理解,也需要视觉常识和场景结构的语义理解。为了解决这一具有挑战性的任务,我们提出了WonderJourney。主要思想是生成下一个场景视觉元素的文字描述,然后使用文本引导的视觉生成模块来制作那个3D场景。WonderJourney是一个模块化框架,将此任务分解为场景描述生成、视觉场景生成和视觉验证,如图2所示。给定输入图像或文本,我们首先通过文本到图像模型或使用视觉语言模型(VLM)生成描述来将其与另一种模态配对。然后,我们通过大型语言模型(LLM)生成下一个场景的描述。视觉场景生成模块接收下一个场景描述和当前场景图像,生成下一个3D场景,用彩色点云表示。然后,这个生成过程由VLM检查,确保没有不需要的效果,或者进行重新生成。我们注意到,我们的框架是模块化的,每个模块都可以用最新的(预训练的)模型实现,因此可以轻松利用大规模语言和视觉模型的快速发展。

3.1 场景描述生成
我们提出了一种自回归的场景描述生成过程,即场景描述生成接受一组过去和当前的场景描述作为输入,并预测随后的场景描述:
Si+1 = gdescription(J, Mi), (1)
其中Si表示第i个场景描述,gdescription表示场景描述生成器,它由一个LLM实现,该LLM接受两个输入:1)任务说明J=“你是一个智能场景生成器。请生成下一场景中最常见的三个实体,并附带简短的背景描述。”;2)场景描述记忆Mi={S0,S1, · · ·,Si},这是过去和当前场景的集合。最新的描述记忆是:
Mi+1 = Mi ∪ {Si+1}. (2)
我们将场景描述Si定义为{S, Oi, Bi},包括在整个场景中保持一致的风格S,场景中的物体Oi,以及描述场景背景的简洁标题Bi。我们允许LLM输出自然语言描述,然后使用词性类别过滤器处理Oi和Bi的原始文本,以便我们只保留名词作为实体,形容词作为属性。经验表明,这比要求LLM直接输出这种结构化描述能生成更加连贯的场景。

3.2 视觉场景生成
由于我们希望生成的下一个场景与过去的场景在几何和语义上保持连贯,我们将视觉场景生成形式化为一个条件生成问题,同时考虑下一个场景描述和当前场景的3D表示作为条件:
Pi+1 = gvisual(Ii, Si+1), (3)
其中Pi表示代表下一个3D场景的彩色点云,Ii表示当前场景的图像。
视觉场景生成器gvisual包括无需学习的操作,如透视反投影和渲染,以及使用参数化(预训练)视觉模型的组件,包括深度估计器、基于分割的深度细化器和文本条件下的图像扩展器。我们在图3中给出了一个示意图。

将图像提升至点云。给定由图像Ii表示的当前场景,我们通过估计深度并用针孔相机模型进行反投影来将其提升到3D。在实验中,我们使用了最先进的深度估计器之一MIDAS v3.1[35]。然而,我们发现现有的单目深度估计器存在两个常见问题。首先,深度不连续性建模不佳,表现为先前工作[1, 28, 41]中提到的跨物体边界的深度边缘过于平滑。其次,天空的深度总是被低估,这也被先前的工作[21, 24]所观察到。为了解决这两个问题,我们引入了一个利用像素分组段和天空分割的深度细化过程。

深度细化。为了增强物体边界之间的深度不连续性,当元素具有有限的视差范围时,我们采用正面平面模型来建模场景元素。我们使用SAM[19]生成像素分组段{segj}Ns j=1,其中segj∈{0, 1}H×W是一个段掩码,按段大小∥segj∥降序排列。我们迭代地细化估计的深度:
depth[segj]←
{ median(depth[segj]), if∆Dj<T, depth[segj], otherwise,
(4)
对于j= 1, · · ·, Ns,其中depth ∈ RH×W +初始化为估计的单目深度,median(·)是返回输入集的中位数值的函数,∆Dj=max(disparity[segj])−min(disparity[segj])表示段segj内的视差(深度的倒数)范围。我们保留高视差范围段的估计深度,因为它们不符合正面平面模型,如道路。请注意,正面平面建模的概念也在3D Ken-Burns[31]中有所探索,但针对选定的语义类别,如汽车和人物。相比之下,由于我们针对的是具有多种风格的通用场景,我们使用视差范围标准来保持估计的深度,而不是选择特定的语义类别。

为了处理总是被低估的天空深度,我们使用OneFormer[17]来分割天空区域,并为其分配较高的深度值。但是,这会导致天空边界处的深度估计不准确;如果我们简单地使用输出的分割,则这些错误会在后续场景中累积严重的伪影。为了解决这个问题,我们简单地移除了天空边界上的点。此外,我们还发现远处像素的深度通常不可靠。因此,我们也设置了一个远背景平面F,截断所有超出它的像素深度。

描述指导的场景生成。为了生成与当前场景相连的新场景,我们将新相机Ci+1放置在适当的距离处,相对于当前相机Ci。如图3所示,我们渲染部分图像Iˆi+1(有关相机和渲染器的更多信息,请参见附录E),并使用文本引导的扩展器对其进行扩展,以生成新的场景图像Ii+1:
Ii+1 = goutpaint(I ˆi+1, Si+1), (5)
其中我们使用Stable Diffusion模型[36]作为goutpaint。注意,我们有意将新相机放置在渲染图像中留有足够的空白空间的位置。我们经验证明,文本引导的扩展器倾向于避免生成部分对象,这可能是由于它们经过精心策划的训练图像数据集中通常不包括截断或部分对象。因此,留出过少的空白空间会导致只是简单地外推部分图像Iˆi+1,并且缺乏对文本提示Si+1的遵循,特别是在新对象方面。在生成新的场景图像后,我们通过估计和细化深度来将其提升到3D,并获得新的点云Pˆi+1 = Pi ∪ P′ i+1,其中P′ i+1表示从外扩像素中得到的额外点。

通过深度一致性进行新场景注册。然而,由于深度估计器不了解几何约束,P′中的点的深度通常与Pi不一致。因此,我们通过深度对齐损失调整深度估计器:
Ldepth = max(0, Db∗g − Db′g) + ∥Df∗g − Df′g∥, (6)
其中Db∗g表示从Ii分析计算出的背景像素的深度,Db′g表示对应于Db∗g的估计深度,Df∗g表示从Ii计算出的所有其他可见像素的深度,Df′g表示对应于Df∗g的估计深度。

通过重渲染一致性处理遮挡。另一个几何不一致性是,由于深度估计器不知道这种3D几何约束,遮挡区域的深度值可能会低于遮挡物的深度值。我们在图3的细化深度中突出了错误估计的遮挡深度。为了解决这个问题,我们重新渲染新场景Pˆi+1在相机Ci,并检测所有不一致的像素。在每个不一致的像素处,我们将P′ i+1中深度值较低的所有栅格化附加点向后移动。这样就消除了遮挡不一致性,并保证遮挡发生在遮挡物之后。

场景完成。我们通过向Pˆi+1添加更多的点来获得最终点云Pi+1。我们通过重复以下“边走边补”的过程来添加点:我们在连接新场景和当前场景的相机轨迹上放置一个额外的相机,在该相机处渲染一个部分图像,扩展图像,并将附加点添加到点云中。请注意,在公式3中的视觉场景生成公式中,可以将图像输入Ii替换为当前场景的点云Pi,从而形成持久的场景表示。这允许在3D持久性和实际需求之间进行权衡。实际上,维护大量点云会导致生成高分辨率场景长轨迹时所需的GPU内存过多。因此,在实验中我们采用了图像公式。

3.3 视觉验证
经验上,在大部分生成的照片和绘画中,会出现画框或照片边框,破坏了几何一致性。此外,生成的图像边缘附近经常出现模糊的失焦物体。因此,我们提出了一种验证步骤来识别并拒绝这些不想要的生成场景。

我们将此问题形式化为基于文本的检测问题,其中我们的目标是在生成的场景图像中检测一组预定义的不希望出现的效果。如果检测到任何不希望出现的效果,我们会拒绝并重新生成场景图像。

具体来说,在我们生成一个新的场景图像Ii+1后,我们立即将其输入到VLM,并提示查询J dtetect=“这张图片中有Xt吗?”其中Xt∈{X1, · · ·, XT}是通过文本指定的不希望出现的效果,如“照片边框”、“画框”或“失焦物体”。如果检测到任何不希望出现的效果,我们会使用新的描述Si+1或新的随机种子重新生成Ii+1。

实验
数据集和基线。由于持续3D场景生成是一项没有现有数据集的新任务,我们在实验中使用了自己拍摄的照片、在线版权免费的照片和生成的例子来进行评估。我们通过DALL-E 3[3]进行文本到图像的配对。我们考虑了两种最先进的持续视角生成方法作为基线:基于图像的InfiniteNature-Zero和基于文本的SceneScape。

定性演示。我们在图1和图5中展示了不同场景和不同风格下生成旅程的定性示例。这些结果表明,WonderJourney能够从各种类型的输入图像生成多样化且连贯连接的场景,即它可以去往任何地方。我们在附录中展示了更多示例。

我们进一步在图4中展示了从同一输入生成的不同样式的样本示例。这些多样化的生成旅程表明,每次运行WonderJourney都能支持前往不同的目的地。

附加评估。我们在附录B中展示了附加的定性结果,在附录C中展示了更长的“奇妙旅程”(最多30个场景),在附录D中展示了受控的“奇妙旅程”(即使用用户提供的完整文本,如诗歌和俳句,而不是LLM生成的文本指导),以及在附录F中展示了消融研究。

人类偏好评估。由于WonderJourney的主要应用是创意和娱乐目的,我们重点进行了人类偏好评估作为定量指标,使用以下四个轴:单次旅程中生成场景的多样性、视觉质量、场景复杂度以及整体趣味性。我们按照每种方法自己的摄像机轨迹设置生成视频。由于InfiniteNature-Zero是针对自然照片训练的,所以我们仅使用逼真的自然图像与其进行比较。对于SceneScape,因为它基于文本,我们可以使用三种不同风格的例子进行比较。我们展示了WonderJourney和一个随机位置基线生成的视频的并排比较。然后我们一次提出一个二元选择问题,例如“比较下面两段视频。哪个视频的多样性更高?也就是说,哪个视频展示了更多种类不同的地方?”我们招募了400名参与者,200名用于与InfiniteNature-Zero的比较,200名用于SceneScape。每位参与者回答12个问题。我们在附录H中提供了更多细节。

如表1所示,WonderJourney在这四个轴上都被强烈偏好于两种基线。InfiniteNature-Zero仅合成自然场景,如图6所示,而WonderJourney生成了更多多样化的场景和物体,如登山者和房屋,这些都自然地连接到了起始的自然场景。SceneScape由于使用了纹理网格,往往会生成类似洞穴的场景,因此所有例子都趋向于洞穴。而且,正如第3.2节所述,由于白色空间有限,SceneScape往往不会生成新的物体。所有这些因素可能都促成了用户对WonderJourney的更大偏好。

结论
我们介绍了WonderJourney,以生成从任何用户提供位置开始的长序列多样化且连贯连接的3D场景。WonderJourney实现了跨越各种场景类型和不同风格的引人注目、多样化的视觉效果,使用户能够在生成的“奇妙旅程”中经历自己的冒险。

致谢。这项工作得到了NSF RI #2211258、ONR N00014-23-1-2355和ONR YIP N00014-24-1-2117的支持。这项工作的一部分是在Hong-Xing Yu在Google担任学生研究员期间完成的,并得到了Google提供的礼品资金和GCP信用的支持。

参考文献
...

附件
A. 概述
我们在项目网站上整理了一组视频结果。我们强烈建议读者查看这些视频结果。
请使用诸如Chrome之类的现代浏览器,因为我们使用了先进的JavaScript库来控制轮播图和视频自动播放。
在接下来的内容中,我们总结了本补充文档中的内容:
• [第B节] 附加的定性结果。
• [第C节] 更长的“奇妙旅程”。每个“奇妙旅程”由30个生成的场景组成。
• [第D节] 使用用户提供的描述(而非LLM生成的描述)控制的“奇妙旅程”,例如诗歌、故事摘要和俳句。
• [第E节] 关于我们的渲染器、摄像机路径和深度处理的附加细节。
• [第F节] 对空白空间比率、视觉验证和深度处理的消融研究。
• [第G节] 我们使用的LLM和VLM的附加细节。
• [第H节] 人类偏好评估设置的详细信息。

B. 附加结果
我们在图7(从任何地方出发)和图8(到达任何地方)中展示了附加的结果。

C. 更长的“奇妙旅程”
我们在图9中展示了更长的“奇妙旅程”的示例。我们观察到,更长的“奇妙旅程”允许包含更多多样化的场景,具有高质量的视觉效果。

D. 受控的“奇妙旅程”
我们可以用用户提供的描述替换LLM生成的场景描述,以控制生成的“奇妙旅程”。例如,可以使用诗歌、俳句或故事摘要。我们在图10中展示了古典中文诗、俳句、《爱丽丝梦游仙境》中的无意义诗“Jabberwocky”、亨利·戴维·梭罗的《瓦尔登湖》摘要、罗伯特·弗罗斯特的《雪夜林边驻足》和威廉·华兹华斯的《早春写景》等示例。

E. 视觉场景生成的细节
深度处理。正如论文中提到的,我们发现天空和远处像素的深度估计不正确。这是单目深度估计器的一个普遍问题,尽管我们选择了使用MiDaS v3.1[35]。对于分割出的天空像素,我们将深度设置为0.025。对于远处像素,我们将背景远平面F设为0.0015。由于MiDaS是平移不变的,我们手动添加了0.0001的深度偏移,以确保近处的物体不会因极小的深度值而塌陷到光学中心。请注意,所有这些值(以及所有与深度估计器相关的值)都是特定于MiDaS v3.1的,对于其他深度估计器


http://www.mrgr.cn/news/78287.html

相关文章:

  • RabbitMQ 篇-深入了解延迟消息、MQ 可靠性(生产者可靠性、MQ 可靠性、消费者可靠性)
  • 【Python · PyTorch】循环神经网络 RNN(基础概念)
  • 【H2O2|全栈】JS进阶知识(十一)axios入门
  • 大语言模型---RewardBench 介绍;RewardBench 的主要功能;适用场景
  • php常用伪协议整理
  • 志愿者小程序源码社区网格志愿者服务小程序php
  • Qt获取文件夹下的文件个数(过滤和不过滤的区别)
  • 第 4 章 Java 并发包中原子操作类原理剖析
  • 【Jenkins】docker 部署 Jenkins 踩坑笔记
  • 类和对象--中--初始化列表(重要)、隐式类型转化(理解)、最后两个默认成员函数
  • Android 布局菜单或按钮图标或Menu/Item设置可见和不可见
  • 《Vue 初印象:快速上手 Vue 基础语法》
  • PostgreSQL详细安装教程
  • 基于SpringBoot共享汽车管理系统【附源码】
  • Docker容器运行CentOS镜像,执行yum命令提示“Failed to set locale, defaulting to C.UTF-8”
  • linuxCNC(三)ini配置文件说明
  • 利用编程思维做题之最小堆选出最大的前10个整数
  • 网络基础二
  • 数据结构代码合集
  • 【cocos creator】下拉框
  • 16_嵌入式开发编译不同Linux平台的依赖库
  • 数据结构_图的应用
  • Qt中2D绘制系统
  • 达梦数据库V8报错insert语句内容超长,解决
  • 哈希C++
  • vue2 中使用 Ag-grid-enterprise 企业版