作者:Xiangyu Wang, Jingsen Zhu 等 来源:ICCV 2023 论文题目:Seal-3D: Interactive Pixel-Level Editing for Neural Radiance Field 论文链接:https://arxiv.org/abs/2307.15131 内容整理:王秋文
图1 辐射场编辑交互示意图
NeRF 在例如 3D 重建、自由视角合成以及 VR/AR 等众多 3D 应用中都具有巨大的潜力。随着这种隐式表征方式的流行,能够与这种类型的 3D 模型进行用户友好型编辑交互的工具被迫切需要。由于捕获数据的噪声和重建算法的限制,从真实世界重建的对象可能包含伪影。一方面,在典型的 3D 扫描流程中经常会有手动校正和细化以去除伪影的阶段。另一方面,在 3D 游戏、动画和拍摄等 3D 内容创建应用程序中,艺术创作者通常需要基于现有的 3D 模型创建新内容。
现有的工作已经尝试了编辑 NeRF 所表征的3D场景,包括对象分割、对象去除、外观编辑和对象混合等。这些现有的NeRF编辑方法主要侧重于粗粒度的对象级编辑,且收敛速度无法满足交互编辑的要求。近期的一些方法通过引入网格作为编辑代理,将 NeRF 的编辑转换为网格编辑。这需要用户在附加网格工具上操作,这限制了交互性和用户友好性。据作者所知,在本文以前还没有能够以快速收敛的速度支持神经辐射场的交互式像素级编辑的方法。在本文中,作者提出了一种用于 3D 场景隐式神经表示的像素级交互编辑方法和系统,称为Seal-3D,可以满足如图 1 所示的四种编辑:1)边界框工具:变换和缩放边界框内的东西;2)涂刷工具:它在选定的区域上涂上指定的颜色,并且可以增加或减少表面高度;3)锚定工具:允许用户根据用户的输入自由移动控制点并影响其相邻空间;4)上色工具:编辑对象表面的颜色。
具体来说,本文的主要贡献有:
图2 Seal-3D 算法流程示意图
本文提出了如图 2 所示的 Seal-3D 算法,一种用于神经辐射场的交互式像素级编辑方法。这一方法由像素级代理映射函数、 teacher-student 训练框架和框架下 student NeRF 网络的两阶段训练策略组成。编辑工作流程从代理函数开始,该函数根据用户指定的编辑规则映射查询点和光线方向。然后,NeRF 到 NeRF 的 teacher-student 蒸馏框架使用具有编辑后几何和颜色特征的 teacher 模型监督 student 模型的训练。交互式细粒度编辑的关键是 student 模型的两阶段训练。在预训练阶段,首先对点、光线方向以及来自 teacher 模型的编辑空间内的推理结果进行采样、计算和存储;仅更新局部性的参数,并且锁住引起全局变化的参数。最后,再对 student 模型通过全局训练进行 finetune。
本文将 NeRF 编辑设计为一个知识蒸馏的过程来实现。给定一个预训练的 NeRF 网络,我们首先需要拟合一个作为 teacher 网络的特定场景,我们用预训练的 NeRF 网络初始化一个额外的 NeRF 网络作为 student 网络。teacher 网络
根据用户的编辑指令生成编辑后的引导,而 student 网络
根据 teacher 网络的编辑引导进行优化。
首先,从交互式 NeRF 编辑器中读取用户编辑指令作为像素级信息。源空间
是原始 NeRF 模型的 3D 空间,而目标空间
则是用于编辑后的 NeRF 模型。目标空间
通过代理函数
映射到原始空间
。
根据下面说明的编辑规则变换目标空间内的点及其相关方向。利用该函数,可以通过查询 teacher NeRF 模型
来获取目标空间中每个 3D 点和视角方向的“伪”期望编辑效果
:将变换后的点和方向(在源空间中)输入教师网络,获得颜色和密度。这一过程可以表示为:
其中,
和
分别表示源空间中点的坐标和光线方向,
和
分别表示目标空间的点的坐标和光线方向。
对于简洁起见,将整个过程定义为 teacher 的推断过程
。推理得到的结果
模拟了编辑后的场景并充当 teacher 标签,然后在网络优化阶段的 student 网络将其信息提炼出来。
的映射规则可以根据任意编辑目标设计。在本文中作者具体实施4种类型的编辑作为示例:
边界框工具:支持传统三维编辑软件中的常见功能,包括复制粘贴、旋转和调整大小。用户提供边界形状以指示要编辑的原始空间
,并旋转、平移和缩放边界框以指示目标效果。目标空间
和映射函数
通过接口进行解析:
其中,
表示旋转,
是尺度,
和
分别是
和
的中心。这一工具甚至支持跨场景的对象转移,这可以通过引入转移对象的 NeRF 来实现,作为一个额外的 teacher 网络,负责目标区域内的部分推理过程。
涂刷工具:类似于传统三维编辑中的雕刻笔刷,用于提升或降低绘制的表面。用户用画笔可以随意涂画,
是通过在已刷像素上投射光线生成的。笔刷的法线
和压力值
由用户定义,并决定了映射:
锚定工具:用户定义控制点
和平移向量
。围绕
的区域将通过平移函数拉伸
进行拉伸。那么映射就是它的逆:
上色工具:通过颜色空间映射(单色或纹理)编辑颜色。作者直接通过 HSL 空间中的网络映射颜色输出,这有助于颜色一致性。本文的方法能够在修改后的表面上保存阴影细节(例如阴影),通过将原始表面颜色上的亮度(在HSL空间中)转移到目标表面颜色来实现这一目标。
对于蒸馏的训练策略,student 模型
通过根据上述 teacher 模型推理过程
产生的伪 GT 的监督进行了优化。通过直接应用体渲染公式累积的像素值
之间的渲染损失,将 teacher 模型的编辑指导蒸馏到 student 模型中。但是,作者发现该训练过程的收敛速度很慢(≈30s 或更长时间),无法满足即时预览的需求。为了解决这个问题,本文设计了一个两阶段的训练策略:第一阶段的目的是立即(在1秒内)收敛,以便可以立即将其作为预览效果,而第二阶段在粗略预览的基础上进行 finetune 以获得更为精细的结果。
用于即时预览的局部预训练
通常,与整个场景相比,编辑涉及到的场景范围相对较小,因此对全局使用渲染损失进行训练是相对浪费的,并导致了收敛速度缓慢。为了实现编辑的即时预览,作者在全局训练开始之前设置了局部预训练阶段。局部预训练过程包括:1)对目标空间内的一组
局部点和单位光线方向进行采样,并将其输入到 teacher 推理过程
中,以获得教师标签
、
;2)student 网络由局部相关损失
训练:
其中
是 student 网络预测的采样点
的颜色和密度,
是缓存的 teacher 标签。这个预训练阶段非常快:经过大约1秒的优化,student 的渲染图像就能显示出与编辑指令一致的合理颜色和形状。然而,仅在编辑区域中的局部点上进行训练可能会导致与编辑无关的其他全局区域的退化。作者观察到,在混合隐式表示(如Instant NGP)中,局部信息主要存储在位置嵌入网格中,而随后的MLP解码全局信息。因此,在这个阶段,MLP解码器的所有参数都被冻结,以防止全局退化。
全局 finetune
在预训练之后,作者继续微调
,以将粗略预览细化为完全收敛的结果。这个阶段类似于标准的 NeRF 训练,只是监督标签是由 teacher 推理过程得到而不是基于图像像素的。
其中
表示采样光线集。
值得一提的是,student 网络比 teacher 网络产生质量更好的结果。这是因为 teacher 推理过程中的映射操作可能会在产生一些视图不一致的伪影。但是,在蒸馏过程中,由于实施了视图一致的鲁棒性的多视图训练,student 网络可以自动消除这些伪影。
对物体进行涂刷工具以及边界框编辑得到的效果如图 3 和图 4 所示。此外,四种编辑得到的结果都在图 1 中展示了出来。
图3 涂刷工具编辑的结果示意图
图4 边界框工具编辑的结果示意图
从现实图可以发现,本文的方法不仅实现了巨大的编辑性能的提升,支持两阶段的即时预览,而且还产生了更具视觉真实感的编辑外观,例如图 3 中提升侧的着色效果。
与 NeuMesh 进行比较,本文所提出的方法可以生成更加精细的结果,如图 5 与图 6 所示。
图5 本文方法与 NeuMesh 对几何编辑后的比较结果图
图6 本文方法与 NeuMesh 对纹理编辑后的比较结果图