简介
官网:https://www.siddhantranade.com/research/2022/12/06/SSDNeRF-Semantic-Soft-Decomposition-of-Neural-Radiance-Fields.html
SSDNeRF,将语义信号与场景的辐射信号联合编码,提供了场景的软分解为语义部分,能够正确编码沿同一方向的多个语义类混合——这对现有方法来说是不可能的壮举,这不仅带来了场景的详细3D语义表示,还表明用于编码的MLP的正则化效果有助于改善语义表示
给定一组RGB图像及其由Mask-RCNN等神经网络计算的分割掩码,SSDNeRF从新的视角自动渲染图像及其深度图,以及其软分割和软语义分解。SSDNeRF分解场景的体表示,从而将语义分割从2D提升到3D
共享点:
- 一种将神经辐射场分解为一组软语义层的新方法
- 一组改善重建图层几何质量的损失
- 一种以时间一致的方式操作自由视点视频的系统,同时尊重细节和保留视点相关的效果
实现流程
论文是基于Instant-ngp的重新实现。通过有 M 个颜色和密度输出来扩展NeRF架构,其中 M 是分割层的数量。此外,用类似于Nerfies的变形场扩展它,它使用刚性转换的螺旋轴表示。与Nerfies类似,在变形场的拉普拉斯上使用正则化子。
下图显示了网络体系结构。当M = 1时(在去除语义损失和提议的正则器后使用单个类),网络架构为Instant-ngp。
Nerfies网络结构
SSDNeRF网络结构
在具有视图方向 d 和外观代码 l 的标准框架中的每个点 x上,预测每个语义类的颜色
c
i
c_i
ci 和透明度
σ
i
σ_i
σi 。
SSDNeRF变形场:在时间 t 的每一点x处,变形场输出螺旋轴参数r, v。
该方法不是为场景生成单个密度场和辐射场,而是为每个语义层生成密度场和辐射场,以表示语义类之间的软转换。使用了一组正则化,利用这种分解来生成高质量的语义层
原始NeRF公式
在空间的同一点,最终的累积 σ 值应该是所有层的材料密度的总和,最终的颜色应该由各自的层密度加权
论文体渲染公式
除了渲染所有层外,还可以只使用密度
σ
i
σ_i
σi 和颜色
c
i
c_i
ci 来渲染第 i 个语义层.第 i 个语义 mask 可以使用密度 σ 和颜色
σ
j
i
σ
j
\frac{\sigma^i_j}{\sigma_j}
σjσji 进行渲染
其中 KaTeX parse error: Expected '}', got 'EOF' at end of input: {\sigma^i_j 是语义层 i 在样本点 j 沿射线 r 的密度
SSDNeRF体渲染公式推导
对连续的体渲染公式转换为离散形式过程如下
为了将一个NeRF分解为M个语义层,扩展了这个公式,并生成每个层 F 的颜色和密度值:
(
x
,
d
)
→
(
c
1
,
σ
1
,
…
c
M
,
σ
M
)
(x, d)→(c^1, σ^1,…c^M, σ^M)
(x,d)→(c1,σ1,…cM,σM),SSD连续体渲染公式如下
转化为离散形式
可以通过保持第 i 层的密度相同,并将其他层的密度设置为0来生成第 i 层,其中
T
j
i
=
e
x
p
(
−
∑
k
=
1
j
−
1
σ
j
i
δ
j
i
)
T^i_j = exp \big( -\sum^{j-1}_{k=1} \sigma^i_j \delta^i_j \big)
Tji=exp(−∑k=1j−1σjiδji)
生成第 i 个分割掩码可以通过将第 i 层的颜色设置为1,而其他层的颜色设置为0
损失函数
层分解允许每个层独立正则化,在训练过程中,最小化一组损失,每一组损失在优化过程中发挥着关键作用
Color Loss
R是每个批次中的光线集合
Semantic Loss
引入一个语义项损失最小化的区别和真值语义呈现面具,语义面具从 Mask-RCNN 模型生成用于监督和容易包含异常值,因此使用一个健壮的损失 γ≤1,为了考虑类别不平衡,使用其 instantaneous recall (即在每个训练批次内)导致的每个类别单独权衡
其中
R
i
=
T
P
i
P
i
R^i = \frac{TP^i}{P^i}
Ri=PiTPi 是类别i的召回率,即true positives TP 与该类别所有 positives P的比率
Sparsity Loss
如果没有进一步的正则化,重建的模型容易在接近训练相机位置和半空中出现半透明材料,这些是过度拟合的伪影,通常来自于错误建模的视角相关效应,为了减少这种部分不透明度的发生,引入了稀疏性损失,有利于不透明度趋近于0或1
Group Sparsity Loss
尽管二维语义分割掩码是有噪声的,但我们知道,在大多数情况下,空间中的任何点上都应该存在很少的语义类别,用一个额外的正则化术语来表述这个期望的属性,以最大限度地减少语义层之间不透明的共同出现,对每个样本来说,只有一个不透明度值趋向于1,其他趋向于0
训练细节
使用 NVidia RTX 3080 GPU 迭代 50k次,使用Adam优化器,学习率为 1 0 − 2 10^{-2} 10−2, β 1 = 0.9 β 2 = 0.99 \beta_1 = 0.9 \beta_2 = 0.99 β1=0.9β2=0.99,没个betch中使用2048条射线,semantic loss中 λ = 1 \lambda = 1 λ=1,sparsity loss 和 group sparsity loss中 λ = 0.8 \lambda = 0.8 λ=0.8,各个损失的权重为, λ c o l o r = 1 \lambda_{color} = 1 λcolor=1 λ s e m = 1 0 − 1 \lambda_{sem} = 10^{-1} λsem=10−1, λ g r o u p = 1 0 − 3 \lambda_{group} = 10^{-3} λgroup=10−3
实验
上图为SNeRF,下图为SSDNeRF