【三维重建】MobileR2L:轻量化移动端三维重建(CVPR2023)


摘要

问题
由于体积渲染的过程,NeRF的推理速度非常慢,这限制了在资源受限的硬件上(如移动设备)利
用NeRF的应用场景。许多研究已经开展,以减少运行NeRF模型的延迟。然而,其中大多数仍需要高端GPU进行加速或额外的存储内存,这在移动设备上都不可用。

方向
另一个新兴方向利用神经光场(NeLF)进行加速,因为只需在射线上执行一次正向传递来预测像素颜色。然而,要达到与NeRF类似的渲染质量,NeLF中的网络设计需要进行大量计算,这对移动设备来说并不友好。

工作
在这项工作中,我们提出了一种在移动设备上实时运行的高效网络用于神经渲染。优势:

  1. 我们遵循NeLF的设置来训练我们的网络。与现有的工作不同,我们引入了一种在移动设备上
    高效运行的新型网络架构,具有低延迟和小尺寸,即与MobileNeRF相比节省了15倍至24倍的存储空间
  2. 我们的模型在移动设备上实现了高分辨率的生成,同时在合成场景和真实场景上保持了实时推理,例如在iPhone 13上渲染一个实际3D场景的1008×756图像仅需18.04毫秒。
  3. 此外,我们实现了与NeRF类似的图像质量,比MobileNeRF更好(在真实世界前置数据集上
    的PSNR分别为26.15和25.91)。

一、Introduction简介

MobileR2L是一个专为移动设备设计的实时神经渲染模型。我们的训练过程遵循了R2L [41]中引入的类似蒸馏过程。与使用大多数神经表示中的多层感知器(MLP)不同,我们展示了设计良好的卷积网络可以以实时速度实现类似MLP的渲染质量。具体地,我们重新思考了R2L中的网络设计选择,并提议在主干网络中使用1×1的卷积层。在移动设备上运行NeRF或NeLF的另一个挑战是对内存的过高要求。例如,为了渲染一个800×800的图像,需要采样640,000个需要存储的射线,从而引发内存不足的问题。在3D感知的生成模型[9, 15, 19]中,通过渲染辐射特征体积并使用卷积网络上采样来获得更高的分辨率,从而缓解了这个问题。受此启发,我们渲染了一个光场体积,并将其上采样到所需的分辨率。MobileR2L在现有工作中具有几个重要优势:

1. MobileR2L在移动设备上实现了实时推理速度(Tab. 3),并且在合成和现实世界数据集上比MobileNeRF具有更好的渲染质量,例如PSNR(Tab. 1)

在这里插入图片描述
表3. 推理速度分析。延迟(毫秒)是在搭载iOS 16的iPhone上获取的。与MoibleNeRF [10]一样,我们使用记号M/N来表示在前置数据集中,M个场景中有N个场景无法在设备上运行。具体来说,MobileNeRF无法在前置场景中渲染Leaves和Orchids两大类。

在这里插入图片描述
表1. 关于合成360°和前置场景的定量比较。我们的方法在这两个数据集上的三个指标上都比NeRF的结果更好。与MoibleNeRF和SNeRG相比,我们在大多数指标上取得了更好的结果。

2. MobileR2L所需的存储空间减少了一个数量级,将模型大小减小到8.3MB,比MobileNeRF小15.2× ∼24.3×。

由于这些特点,MobileR2L可以在移动设备上广泛应用于现实世界的应用程序中,例如虚拟试穿,实现设备和用户之间的实时交互(Fig. 1)。
在这里插入图片描述
图1. 在移动设备上部署我们的方法以实现与用户的实时交互的示例。由于模型大小较小(8.3MB)且推理速度快(在iPhone 13上每张图像为18 ∼ 26毫秒),我们可以构建基于神经渲染的应用程序,用户可以在其设备上与3D对象进行交互,实现各种应用,如虚拟试穿。我们使用公开可用的软件制作了用于可视化的设备内应用程序[1, 3]。

二、具体方法

1.什么是NeRF

NeRF 通过一个MLP网络FΘ 隐式表示场景,将5D坐标(空间位置(x,y,z)和视线方向(θ,ϕ))映射到1D体积密度(透明度,用σ表示)和3D亮度(用c表示),即 FΘ: R5 -> R4。图像的每个像素与相机射线相关联。为了预测一个像素的颜色ˆC,NeRF方法沿着相机射线采样许多点(以下用N表示),并通过α合成[22,31,33]累积所有这些点的亮度.

在这里插入图片描述
其中,r代表相机射线;r(ti) = o + tid表示射线上某点的位置,其中o为射线起点,d为射线方向;ti 表示该点与起点之间的欧几里得距离,即一个标量;δi = ti+1 − ti表示两个相邻采样点之间的距离。NeRF 使用分层采样方法来采样方程(1)中的ti。为了丰富输入信息,位置和方向坐标通过位置编码进行编码[39],该编码通过余弦和正弦函数将一个标量(R)映射到一个更高维的空间(R(2L+1)),其中L(一个预定义的常数)表示频率阶数(在原始的NeRF中,位置坐标的L = 10,方向坐标的L = 4)。

NeRF的整体公式和训练过程非常直观。NeRF中导致快速推理困难的一个关键问题是方程(1)中的采样点数量N非常大(在原始的NeRF论文中是256,因为采用了两阶段的粗到精的设计)。因此,即使针对单个像素的渲染计算也非常重。R2L提出的解决方案是将NeRF表示转化为NeLF。

2.什么是R2L

论文 –R2L: Distilling Neural Radiance Field to Neural Light Field for Efficient Novel View Synthesis(将神经辐射场提炼为神经光场以实现高效的新视角合成)

R2L本质上是将有向射线映射为RGB的NeLF函数。为了丰富输入信息,R2L提出了一种新的射线表示方法——与NeRF一样,他们沿着射线采样点;但不同的是,他们将这些点连接成一个向量,作为射线的表示并输入到神经网络中学习RGB。与NeRF类似,R2L也采用了位置编码[39]将每个标量坐标映射到高维空间。在训练期间,这些点以均匀分布的方式进行随机采样;在测试期间,采样点是固定的。R2L模型的输出直接是RGB,没有学习密度,也没有额外的α合成步骤,这使得R2L在渲染方面比NeRF快得多。NeLF框架的一个缺点是,正如R2L [41]所展示的那样,学习NeLF表示要比学习NeRF困难得多;因此,R2L提出了一个88层深的ResMLP(残差MLP)架构(比NeRF的网络更深)作为映射函数

R2L的训练过程分为两个阶段。在第一阶段,他们使用预训练的NeRF模型作为教师模型,合成过多的(起点、方向、RGB)三元组作为伪数据;然后将伪数据输入到深度ResMLP网络进行训练。这个阶段可以使R2L模型达到与教师NeRF模型相当的性能。在第二阶段, 他们在原始数据上对第一阶段的R2L网络进行微调——正如R2L工作所展示的那样,这一步可以进一步提高渲染质量。

3. MobileR2L的 overview

我们遵循R2L的学习过程来训练我们提出的MobileR2L,即使用预训练的教师模型(例如NeRF [33])为轻量级神经网络生成伪数据进行训练。为了提高推理速度,在渲染图像时,我们只希望网络进行一次前向传递。然而,在R2L的设计下,直接将空间尺寸较大的射线(例如800×800)输入到网络中会引起内存问题。因此,R2L每次只前向推送部分射线,从而增加速度开销。为了解决这个问题,我们引入了超分辨率模块,用于将低分辨率输入(例如100×100)上采样为高分辨率图像。因此,在推理时,只需要通过一次神经网络的前向传递即可得到高分辨率图像。训练和推理流程如图2所示,并且我们在下文中介绍了网络架构的更多细节。

在这里插入图片描述
图2.训练和推理流程。训练涉及使用教师模型生成伪数据,用于学习MobileR2L。教师模型,例如NeRF,是在真实图像上进行训练的。一旦我们获得了教师模型,我们将使用它生成伪图像,例如分辨率为800×800的图像,以及与伪图像具有相同起点的缩小射线,例如空间尺寸为100×100的射线,来训练MobileR2L。之后,我们使用真实数据对MobileR2L进行微调。对于推理,我们直接将射线输入到预训练的MobileR2L中进行图像渲染。

提示:下面是配置文件:
在这里插入图片描述

3. MobileR2L的 网络结构

输入的射线可以表示为 x ∈ R(B,6,H,W),其中 B 表示批大小,H 和 W 表示空间尺寸。射线起点和视点方向被连接为 x 的第二个维度。然后,我们对 x 应用位置编码 γ(·) 将射线起点和视点方向映射到更高的维度。因此,我们得到神经网络的输入为 γ(x)。

网络包括两个主要部分:一个高效的主干网络和用于高分辨率渲染的超分辨率(SR)模块,其架构如图3所示。我们不使用全连接(FC)或线性层作为现有工作[33, 41]所采用的网络,而只在主干网络和超分辨率模块中应用卷积(CONV)层。

使用 CONV 层替代 FC 层有两个主要原因。首先,编译器对 CONV 层进行了更好的优化[30]。在相同参数数量下,使用 CONV 1×1 的模型比使用 FC 层的模型运行速度快约27%,如表4所示。其次,假设在主干网络中使用了 FC 层,则需要额外的 Reshape 和 Permute 操作来修改从 FC 的输出特征维度,以使其与超分辨率模块中的 CONV 层兼容,因为 FC 和 CONV 计算不同的张量维度。然而,这样的 Reshape 或 Permute 操作可能在某些移动设备上不友好[25, 26]。通过将 CONV 用作网络中的操作符,我们接下来详细介绍主干网络和 SR 模块的更多细节。

高效的 Backbone
主干网络的架构遵循R2L [41] 中残差块的设计。与R2L不同,我们在每个残差块中采用了CONV层而不是FC层。CONV层的卷积核大小和步长均为1。此外,我们在每个残差块中使用归一化和激活函数,可以提高网络性能而不引入延迟开销(详见表4中的实验细节)。归一化和激活函数选择为批归一化和GeLU。主干网络总共包含60个CONV层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Super-Resolution Modules:

为了在移动设备上运行神经渲染时降低延迟,我们的目标是只进行一次神经网络前向传递,从而获取合成图像。然而,现有的神经光场网络设计需要大量的内存来渲染高分辨率图像,这超过了移动设备的内存限制。例如,渲染一个800×800的图像需要预测640,000个射线。使用来自R2L [41]的网络一次性前向传递这些射线,即使在Nvidia Tesla A100 GPU(40G内存)上也会引发内存不足的问题。
为了降低生成高分辨率图像的内存和延迟成本,我们不是将与像素数量相等的射线一次性进行前向传递,而是只前向传递部分射线,并使用超分辨率学习所有像素。具体来说,我们提出使用超分辨率模块跟随高效主干网络将输出上采样为高分辨率图像。例如,为了生成一个800×800的图像,我们将一个空间尺寸为100×100的4D张量x输入到网络中,并对从主干网络输出的结果进行三次上采样(每次上采样2倍)。超分辨率模块包括两个堆叠的残差块。第一个块包括三个CONV层,其中一个是2D转置CONV层,另外两个是CONV 1×1层;第二个块包括两个CONV 1×1层。在超分辨率模块之后,我们应用另一个CONV层,然后使用Sigmoid激活函数预测最终的RGB颜色。我们将模型命名为D60-SR3,其中包含60个CONV层的高效主干网络和3个超分辨率模块。

在这里插入图片描述

MobileR2L的网络概述。MobileR2L的输入张量具有4D形状:batch、channel、height和width。主干网络包括重复28次(N=28)的残差块(RB)。在主干网络之后,有两种类型的超分辨率(SR)模块。第一个超分辨率模块(SR1)中的转置CONV层具有4×4的卷积核大小,将输入的H、W扩大为2H、2W,而第二个超分辨率模块(SR2)中的卷积核大小是3×3,将空间尺寸扩大为3H、3W。在合成360°数据集中使用了3×SR1的配置,将输入上采样8倍。对于现实世界的前置数据集,我们使用了2×SR1 + SR2 的组合,将输入上采样12倍。此外,在RB和SR中使用了不同的输出通道:C1 = 256,C2 = 64和C3 = 16。

在这里插入图片描述

三、实验

1.数据集

我们主要在两个数据集上进行比较:realistic synthetic 360[33] and real-worldforward-facing [32,33]。合成360°数据集包含8个经过路径追踪生成的场景,每个场景包含100张用于训练的图像和200张用于测试的图像。前置数据集包含由手机拍摄的8个真实世界场景,其中每个场景的图像数量在20到60之间,并且1/8的图像用于测试。我们在合成360°数据集上以800×800的分辨率进行试验(训练和测试),在前置数据集上以1008×756(从原始分辨率下采样4倍)的分辨率进行试验。

2.实现细节

我们遵循R2L [41]的训练方案,即使用教师模型为MobileR2L网络的训练生成伪图像。具体而言,我们为每个场景从预训练的教师模型[2]合成了10,000张伪图像。我们首先在生成的伪数据上训练MobileR2L,然后在真实数据上进行微调,如图2所示。在所有的实验中,我们使用Adam [23]优化器,初始学习率为5 ×10−4,并在训练过程中进行衰减。我们的实验是在一组Nvidia V100和A100 GPU集群上进行的,合成360°数据集的主要结果使用批量大小54,前置数据集使用批量大小36。

在这里插入图片描述
与R2L不同,我们方法中输入光线和输出渲染图像的空间尺寸是不同的。对于教师模型生成的每个高分辨率图像,我们保存了对应于一个较低分辨率图像的输入光线,其中摄像机的原点和方向与高分辨率图像相同,而焦距相应地缩小。此外,我们不像R2L那样从不同的图像中采样光线。相反,每个训练样本中的光线共享相同的原点并保留其空间位置。

考虑到合成360°和前置数据集的训练数据具有不同的分辨率,两个数据集的输入的空间大小略有差异。我们的网络对合成360°数据集的输入采用100×100的空间大小,并通过8×上采样生成800×800的RGB图像。相比之下,前置数据集使用84×63的空间大小,渲染出1008×756的图像(12×上采样)。在最后的反卷积层中,通过调整卷积核大小和填充来实现3个SR块的8×和12×上采样。

四、Limitation and Conclusion

在这里插入图片描述

Nerf和NeRf差别

在这里插入图片描述
图3:上面的分支是NeRF,下面是NeLF(直接将x1,x2,x3concat,输入网络)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新的网络将4D定向光线投影为目标像素的RGB:
在这里插入图片描述

直观地说,光场比辐射场更难学习——鉴于物理世界的辐射场通常是连续的,相邻空间位置的辐射度不会发生剧烈变化;而两个相邻的光线会因为遮挡而指向截然不同的颜色。也就是说,光场在本质上不如辐射场平滑(变化剧烈)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45752541/article/details/133926155