前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三维世界的神经表达与渲染

三维世界的神经表达与渲染

作者头像
一点人工一点智能
修改2023-01-02 14:28:36
9470
修改2023-01-02 14:28:36
举报
文章被收录于专栏:一点人工一点智能

分享嘉宾 | 刘玲洁

文稿整理 | 侯维广

01 为什么需要重建和渲染3D真实场景?

首先提出一个问题:为什么需要去重建三维世界?这是因为我们身处在三维世界中,所以当需要数字化时,更希望真实场景的表达也是三维表达,这样就能从不同的视角去观察这个真实场景的物体。比如最近非常火的元宇宙,它就是通过这种技术帮助人和虚拟世界进行一个无缝的交互。

另一个方面是对于下一代的人工智能,我们希望它同样拥有三维感知的能力。对此有一个长期的愿景是人工智能和三维感知可以进行融合,即人工智能的技术帮助我们做三维的建模和渲染,同时我们也能赋予人工智能三维感知的能力来对人类进行服务。

这件事情如何去做?当人在看世界的时候,实际上是从二维图片开始,于是希望可以从二维图片里面得到一个三维的表达,并可以进行真实感的渲染,之后在更上层生成一些新的场景,而这些新场景能够帮我们去自优化此类framework。

这一套系统有很多下层的应用,包AR/VR、Gaming/Movies、Autonomous Driving等。

02 3D重建和渲染中的挑战

为什么从二维世界中得到一个三维表达再进行真实感的渲染会非常困难?首先对于一个场景,我们可以得到它多个视角的图片,然后重建它的三维表达,之后就可以从任意视角对它进行真实感的渲染,这也是传统计算机图形学几十年来一直在研究的一个问题。

传统的计算机图形学一般会分为两部分来做,第一个部分是从一些二维图像里去得到一个很好的三维重建结果,第二个部分是通过一些计算机图形学渲染的方式进行渲染。但这两步之间实际上存在一个比较大的距离,如图1所示。

图1 三维重建VS真实渲染
图1 三维重建VS真实渲染

第一步image based 3D construction中有一个比较新且常用的方法叫COLMAP,它的输入是一个物体的多个视角图片,然后进行三维重建(图1左),从图中可以看出它有很多的噪声点,并伴有一些缺失。在第二步中,如果要得到一个非常有真实感的渲染(图1右),那么需要有一个高质量的三维模型。

因此可以感受到这中间存在一个巨大的落差,因此在图1右边建模的模型上做大规模的、高质量的三维场景重建就变得更加困难,所以目前还是依赖于去雇用一些艺术家进行手工建模,但非常耗费时间和精力。

03 介绍我们最近在3D重建和渲染方面的工作

最近研究人员从人工智能中得到一些灵感,可以将从二维图像中学习三维表达变成一个端对端的pipeline,这样就可以把image rendering的部分变成differentiable rendering的过程,好处在于将输出的图片和输入的图片做image loss,再back propagate到三维表达里面,对三维场景表达进行更新。

04 Neural Sparse Voxel Fields

NeRF实际上模拟了传统的graphics怎么去得到一张图片的过程,所以对于三维中任意的一个点p,经过MLP后会得到该点的一些属性,比如density,color。之后若想得到一张图片,需要在这条光线上采集很多的点,每一个点都需要通过MLP去得到它本身的color和density,然后accumulation得到这条光线的颜色。

比如现有一个红色的点,和ground truth的黄色点进行二维的求交,求完之后gradient会回传到MLP去改变场景表达。NeRF最大的一个问题在于渲染非常慢,这是因为它采用的是volume rendering,这种方式会密集的在一条光线上采点,再通过MLP去得到它的属性,整个过程十分缓慢。

因此解决的第一个问题是如何能加速NeRF的渲染过程。NeRF渲染慢是因为它在空间中采样了非常多的点,但是其实采出来的很多点对这条光线的颜色并没有贡献,很大部分都落在了一个空的区域,所以这里引入了一个新的混合场景表达,是把显式的sparse voxel fields和隐式的表达进行了融合。

我们还提出了一个局部的表达,即空间中的一个点只和它所在vocal的8个顶点有关。这样的结构有几个好处,首先局部的表达只采样在非空的voxel里面,可以加快rendering的过程。

其次这种形式更适合去做大规模的场景表达,因为它会根据场景的大小来调整搜索的个数。另外这种表达有利于做一些scene editing和composition,因为可以通过编辑voxel去编辑场景表达。

由于训练过程中并不知道物体是什么样子,所以也不知道voxel是什么样,那如何去学习NSVF的表达?这里提出了一个progressive training的过程,即最开始的时候有一些bounding voxel,随着训练的不断进行,voxel会慢慢接近它最真实的几何样子。

在每一步学习的过程中都采用volume rendering的方式,只不过在采样点的时候,只需要在voxel里面采样,不需要在空区域的voxel里面进行采样,如图2所示。

图2 神经体素网格nerf
图2 神经体素网格nerf

Neus: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction

接下来解决三维重建的问题,比如从一些图片就可以学到一个三维表达,通过三维表达就可以做一个自由视角下的渲染,但现在学到的三维表达到底是什么样子的表达,它能不能提取一个很好的几何用来做computer graphics的一些任务。

提取表面surface得到的结果会存在许多的噪声点,这是因为NeRF的场景表达里面用volume的density来做场景表达,因此没有一个surface的constrain,所以不能得到很smooth的surface。那能不能用有surface constraint的representation 来做呢?

这里我们提出用surface representation做场景表达,用volume rendering去做render的过程,这样子能够保证提取一个非常好的 surface,同时也能保证训练过程的鲁棒性高。

但这样的设计有一个非常大的挑战,在于怎么把SDF作为场景表达。我们把density的函数变成一个和STF相关的函数,但这样就引入了dramatic的bias,因此需要设计一个新的weight function来尽可能的逼近到真实的surface存在的点上。

因此对weight function提出了两个要求:首先SDF=0时,weight function能达到局部最大值,其次是occlusion-aware的方式,也就是当光线达到物体的两个点上时,前面点的weight function要更大。基于这两个考虑,首先设计出一个weight function,但不是occlusion-aware,却是unbiased。

NeRF里面用的volume rendering的方式实际上是一个occlusion-aware的方式但并不unbiased,所以我们提出要把这两种权重函数进行结合,来真正实现既是unbiased的同时也是occlusion-aware,最终训练过程更加稳定,并且相比于NeRF几何更加的smooth。

NeuS的方法非常好,但也有一些局限,比如对于没有纹理特征的表面,重建效果非常的差,所以在今年的ECCV上我们提出要把NeuS能够很好的作用在室内场景上。

我们主要的想法是引入一个pretrain的normal,得到normal estimation,在做NeuS训练的时候,同时给一个normal信息去做supervision,最后通过这样的方式得到一个非常高质量的室内场景重建结果。

图3 NeuS结构图
图3 NeuS结构图

Neural Actor: Neural Free-view Synthesis of Human Actors with Pose Control

前面都是静态场景的表达,那这种表达能否应用在动态场景里面?这时有一个multi-view且存在时间序列的videos,学出animatable human representation之后就可以对人进行多视角的渲染。

我们提出要把linear model和神经隐式的静态场景表达做一个融合。对于video里面的单帧可以模拟建模成一个NeRF的输入,得到color和density。

现在就想怎么去建模一个动态的人体,有一个非常简单的想法是直接将post vector作为conditioning输入到MLP里面得到color和density,但人的一些joint angle会变成一个很长的vector输入进去,不过得到的结果并不理想。

怎么样充分利用时间序列上的关系,为场景设计得到一个更高效的训练方式?所以我们提出geometry guideline,实际上是把人不同的pose下的space直接on warp到一个canonical space,再在canonical space里面去学它的颜色和密度。

做on walking可以分为两部分,第一部分是inverse kinematic transformation,我们会对空间中的一点p,去找surface上面最近的一个surface point去copy surface point,然后利用skinny weight就可以做一个inverse kinematic transformation,就可以得到它的canonical space。

但这样实际上模拟的还是waged chase formation的过程,因为人在动的时候,会有一些non wages的transformation,所以这里用一个network去捕捉和pose相关的这种transformation,之后可以得到结果。

图4 geometry guid过程
图4 geometry guid过程

但结果和ground truth相比,依旧缺少一些纹理,主要是人在做动作的时候,实际上mapping要学习pose,而post 依赖于geometry和appearence的mapping。由于人在做动作的时候,对应的几何和纹理非常难控制,所以需要checking the arrow。

如果用NeRF和L2 loss来做监督,就会容易学到average texture和average geometry,这样结果会比较blurry。于是我们想能不能用adversary loss来做这件事情?因此提出要引入latent variable,把它从mapping把分成一个从post到latent available和一个从latent available到geometry and appearance。

前面的post到latent available是一个many-to-many mapping,后面latent available到geometry和appearance是一个one-to-one的mapping,用NeRF去学习后面的这个mapping。

Stylenerf: A Style-based 3d-aware Generator for High-resolution Image Synthesis

要选用什么样的latent variable。一个简单的想法是用VAE去表达many-to-many mapping 的时候,存在latent available的一个vector,但这里面有一个更有结构性的texture map。

texture map有几个好处:首先保证了后面一部分的geometry和appearance是一个one-to-one mapping。同时texture map有很多的纹理的信息,有利于去预测三维空间中衣服的运动和text的信息,所以相对global的host vector会有更多的local信息,这些信息会帮助我们去学习三维中的representation和texture。

另外一个好处是可以应用一些非常成熟的image translation network来学习many-to-many mapping。通过引入passion map作为latent variable可以得到人身上衣服的一些褶皱,结果和ground truth非常的接近。同时我们的方法对于新的pose有很强的generalization能力。

Physics Informed Neural Fields for Smoke Reconstruction with Sparse Data, etc

但在很多现实的情况下,我们都需要去考虑一些physics的因素。比如在对每一个汽车做检验的时候,检验汽车的流线型是否设计得当的时候,都要做一个fluid reconstruction的车厢实验,用传统的办法从图像或video直接生成fluid reconstruction实际上是个比较困难的问题。

这里从5个视角下拍摄得到smoke的video,就可以用nerf中new rendering的方式去render得到的结果,但是结果里面会缺少一些physics constrain,所以我们在framework里面第一次加入differentiable physics模块来控制烟雾的生成。

具体来说是把场景分成两个implicit fields做表达,一个是去建模静态场景,另外一个velocity field去得到smoke的建模,之后让smoke去符合physics的priors,这样的好处第一个是可以自动分离场景中的静态的场景和smoke simulation,同时也可以保证smoke simulation是符合物理要求的。

05 三维场景如何生成?

在做场景生成的时候,需要让模型训练在非常多的数据上,才能够去学到一个非常好的场景,才能够support出新的场景。但这种多视角的图片完全不是我们经常接触到的一种数据,那我们能不能常见的数据(不知道相机参数和另一个角度是什么样子)去帮助我们去训练模型来生成一些新的三维的数据。

这就让我们非常容易想到二维的generative model ,比如VAE、GANs。但对于二维的generative model,最大的一个毛病是在于生成的图片仅仅只是一张二维的图片,没有三维的信息。因此我们提出3D GANs的方法,具体的做法是希望generator不是一个简简单单的GD的image generator,而是和sweet相关渲染的一个过程。

这里最大的问题在于volum rendering非常的慢,当然最近也有很多工作去做NeRF的加速,但这些方法很难用在GAN的载体里面,因为GAN需要在训练的过程中去生成整张的图片。所以我们要解决这个问题,要达到三个目标:首先要生成一个非常高分辨率的图片,其次渲染的过程要非常高效,最后希望能够保持多视角的一致性。

06 这件事情怎么做?

比如我要生成一张非常大的图片,首先先生成一张非常小的feature texture map,不用二维的RGB是因为它不能够表达很高维的信息,所以这里生成一个更高维的feature map之后,再通过二维upsamping的过程把这张图片变大,但同时也引入了一个问题,即在做二维upsampling的过程中损害了三维的一致性。

所以我们提出了一些策略来尽可能的保证三维的一致性,其中包括丢弃NeRF里面的view direction,有利于保证它的一致性。同时加了NeRF pass the regular riser,直接用NeRF去生成一个非常low resolution的RGB image。

同时在训练网络的时候采用了progressive training的过程,那如果没有progressive training,就容易去学出很奇怪的几何。在今年的3DV上,我们提出不仅仅能够用这种GAN的模型生成不同视角下人脸,同时还可以生成不同光照下的人脸。

比如给你一张image,我可以得到它的各个components,可以对它的任意视角进行一个渲染,还可以对它在任意的光照下进行一个渲染。

图5 3D GANs过程
图5 3D GANs过程

07 3D重建和渲染的未来方向

首先我们希望neural reputation和rendering the framework能够去做更复杂的场景,因为在现实生活中有更复杂的场景,比如人和物体进行一个交互,怎么样能够引入一些物理的construction去帮助模型去学习到更复杂的场景。

另外,希望通过3d generated model能generated更多的数据。computer vision近几年发展的非常快,是因为它有很多数据集的产生,因此能否通过一种3d generated model从二维的图片里面学习过之后去生成一个新的三维的模型。

另外,能不能把neural scene representation和pretrain的large-scale multi-model learning models进行一个融合,这样就可以做一些更有意思的task,比如直接从text里面去生成一个三维的场景,对三维的场景进行一个控制。同时也希望能够应用在除了graphics之外更广阔的一个空间,比如解决一些robotics task。

精彩推荐

  1. 多模态数据的行为识别综述 
  2. ECCV 2022 | 商汤发布最大的表征学习预训练数据集OmniBenchmark
  3. LPCG:用激光点云指导单目的3D物体检测
  4. ECCV 2022 | 76小时动捕,最大规模数字人多模态数据集开源
  5. NeurIPS 2022 | 中科院&图森未来提出FSD:全稀疏的3D目标检测器
  6. ECCV2022 | PCLossNet:不进行匹配的点云重建网络
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点人工一点智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 为什么需要重建和渲染3D真实场景?
  • 02 3D重建和渲染中的挑战
  • 03 介绍我们最近在3D重建和渲染方面的工作
  • 04 Neural Sparse Voxel Fields
    • Neus: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction
      • Neural Actor: Neural Free-view Synthesis of Human Actors with Pose Control
        • Stylenerf: A Style-based 3d-aware Generator for High-resolution Image Synthesis
          • Physics Informed Neural Fields for Smoke Reconstruction with Sparse Data, etc
          • 05 三维场景如何生成?
          • 06 这件事情怎么做?
          • 07 3D重建和渲染的未来方向
          • 精彩推荐
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档