SIGGRAPH Asia 2022 | 一句话生成高清360度场景及光照,可直接渲染数字资产

本文主要是介绍SIGGRAPH Asia 2022 | 一句话生成高清360度场景及光照,可直接渲染数字资产,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

d5c6b1dd977963dbd571b09c26a90bce.png

来源:机器之心

本文约2000字,建议阅读9分钟

来自南洋理工大学 S-Lab 的研究者提出了一个基于零次学习文本驱动的 HDR 全景图合成框架。

作者:MMLab@NTU

伴随着元宇宙的浪潮和虚拟现实技术的不断进步,业内对于 3D 逼真写实渲染的需求愈发凸显。除去建模精细度,环境光照也是影响渲染质量的重要因素。在所有的图形学技术中,高动态范围全景贴图(HDRI)能够提供逼真的场景光照和沉浸式的环境纹理,是最通用且高效的方法。

然而,能够直接应用到渲染管线中的 HDRI 应具有足够多的场景细节、极高的分辨率和记录线性光照的高动态范围。这使得不论是采集还是编辑 HDRI 都变得十分困难和昂贵。这自然而然地引出一个问题,我们能否使用图像生成模型来合成 HDRI,同时给予用户足够简单的输入(例如文本),即文本驱动的高动态范围全景图生成。这样一来,在任何虚拟现实应用中,没有专业知识的用户也可以仅仅通过一句话合成出自己想要的逼真场景,同时获得与之匹配的写实光照。

举个直观的例子,当用户输入「brown wooden dock on lake surrounded by green trees during daytime」,我们期望模型能够输出与文本匹配的 4K 分辨率、高动态范围的 360 度全景图,且能够直接应用到任何图形学管线中用于渲染数字资产。

efa0addef93865893bdf7835a2dd51e6.gif

想要达成这样的目标,面临着如下四个挑战:

1)超高分辨率:已有图像生成模型难以在超高分辨率(大于 4K)下合成场景级别的内容,同时保证丰富的细节。

2)空间一致性与整体感:不同于以物体或人为中心的图像合成,场景级别的全景图常常包含很多物体和特定的空间结构。在图像合成过程中保持空间连续性及场景语义完整是一个很难的问题。

3)文本一致性:不同于 DALLE2 和 stable-diffusion 等文本驱动的生成模型,我们难以收集到足够的文本 - 全景图数据对于训练使用,因此在缺失成对训练数据的情况下,如何将场景语义与输入文本对齐通过自监督的方式对齐也是一项挑战。

4)高动态范围:不同于传统图像(动态范围在 0-255 之间),HDRI 记录了线性域下的光辐照度,常常具有较大的动态范围,会导致不稳定的学习。

为此,我们提出了一个基于零次学习(Zero-Shot Learning)文本驱动的 HDR 全景图合成框架——Text2Light,能够根据输入的场景描述合成分辨率超过 4K 的具有高动态范围的全景图。模型的输出可以直接在 Blender、UE、Maya 等现代图形学渲染管线中,作为场景纹理和光照使用。

54d8cb9671a9e69de45243416a2a7538.png

  • 项目主页:https://frozenburning.github.io/projects/text2light/

  • 代码:https://github.com/FrozenBurning/Text2Light

  • 论文:https://arxiv.org/abs/2209.09898

  • Colab demo:https://colab.research.google.com/github/FrozenBurning/Text2Light/blob/master/text2light.ipynb

181e54ba17831cadb3015af7283f1660.png

上图展示了 Text2Light 的工作流程,主要由两个阶段组成,并分别对应着离散和连续的两种不同表征。阶段一基于层级码本的离散表征实现文本驱动的低动态范围全景图合成;阶段二基于结构化球面场的连续表征实现超分辨率逆向色调映射,将阶段一的低动态范围全景图转化为高动态范围的高清全景图。

在阶段一中,我们采用了层级化的框架,将全局外观与局部细节解耦到各自独立的模块中进行建模。具体而言,阶段一由三个模块组成,如下图所示:

1)全局 - 局部层级码本:我们使用 VQVAE 的训练方法,将极低分辨率的全景图嵌入到全局 (global) 码本中,将高分辨率的图像块 (patch) 嵌入到局部 (local) 码本中。这样一来就可以从全局码本中采样具有空间一致性和整体感的全局特征,同时从局部码本中采样获得局部细节。

2)基本文本的全局采样器:我们使用 CLIP 预训练得到的图像编码器将训练数据中的全景图转化到文本 - 图像空间中,同时获得数据集中相应样本的 K 近邻特征向量,进而采样器通过自监督学习获得根据文本采样全局特征的能力。

3)具备结构感知的局部采样器:根据全局采样器输出的全局语义特征,我们进而训练一个局部采样器来合成全景图中的局部细节。为了保持全景图的特有球面空间结构,我们还引入了球面位置编码作为一种特殊的归纳偏置。

5b998aacaf5f7335308286d6894719d2.png

在阶段二中,作为阶段一中离散表征的补充,我们将全景图建模为连续球面场,即可以使用任意球面坐标来查询得到一个高动态范围像素值。这一建模同时满足了超分辨率(低分辨率到高分辨率)和逆向色调映射(低动态范围到高动态范围)两种需求。具体而言,如下图所示,我们首先使用卷积网络将图像块编码为与像素对齐的潜在特征向量。对于连续球面上的任意位置,我们利用区域插值从其四个近邻特征向量中获得其特征,并最终使用两个 MLP 得到输出的 HDR 像素值。

9b8f5bf105c349e1d73e64faff7e86b8.png

Text2Light 能够根据任意输入文本来合成高清 HDR 全景图,生成的结果能够提供逼真的环境光照,该方法可直接用于渲染三维资产或虚拟现实。

下面是一个交互式 UI,例如我们输入 brown wooden floor with white wall, text2light 可以生成出对应的 HDR 全景图,并且能够直接用来渲染,将物体逼真地放进场景中!

fb581c846b40b0b4613ca860c2a6dec2.gif

输入 (green grass field with trees and mountains in the distance), 我们能得到下面这样沉浸式的 VR 体验!

Text2light 更多的结果:

ad629c88015caa654f7121635353b617.png

15cb0cdad578cb7507f610c8889d1ed7.png

我们的生成结果甚至可以直接在 blender 中用来渲染大规模城市场景:

660e17cce9fc15646a2072914ccbfd49.png

同时我们还展示了 text2light 在编辑全景图上的潜在能力。

12aa99919fac7c6c2761245fb6f74f54.png

本工作提出了 Text2Light,一个基于零次学习文本驱动的 HDR 全景图合成框架,能够根据一段场景描述合成高分辨率、高动态范围的全景图,并可以直接用在下游图形学任务和应用上,例如逼真地渲染数字资产。我们希望本工作能够为虚拟现实和元宇宙生态提供了一种全新的可能。

编辑:黄继彦

c000d0e23b49a3754895db4d9bae0687.png

这篇关于SIGGRAPH Asia 2022 | 一句话生成高清360度场景及光照,可直接渲染数字资产的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284714

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java