Paper: Zhi S, Laidlow T, Leutenegger S, et al. In-place scene labelling and understanding with implicit scene representation[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 15838-15847.
Introduction: https://shuaifengzhi.com/Semantic-NeRF/
Code: https://github.com/Harry-Zhi/semantic_nerf/
Semantic-NeRF 是一种基于 NeRF 的三维场景语义表示方法,通过将语义信息注入 NeRF,实现了几何、外观和语义的联合隐式表达,能够完成语义标注、语义视图合成、语义类别的超分、去噪、插值,以及多视角语义标签融合等任务。
Semantic-NeRF 所做的任务就是增加 NeRF 语义分类的功能,在 NeRF 的 MLP 网络基础上增加对场景语义信息的处理和输出。Semantic-NeRF 还通过实验表明,三维隐式表达的连续性和多视角一致性使得 Semantic-NeRF 仅依靠稀疏或含噪声的语义标签,便能获得准确的室内语义标注和理解。1
三维场景的语义类别标注和场景的几何外形关系密切,因为相同几何外形的场景更有可能属于一个语义类别。但仅仅根据几何外形对场景的语义类别进行聚类还远远不够,一些细致的语义分类还需要人为标注的先验。
Semantic-NeRF 在 NeRF 的 MLP 网络基础上增加对场景语义信息的处理和输出,使用含有稀疏或噪声语义标签的场景视图弱监督训练 NeRF,学习得到场景的几何、外观和语义信息。
SemanticNeRF 在 NeRF 的 MLP 网络基础上增加对场景语义信息 (semantics) 的处理和输出,显然语义信息应该只与空间位置
x
\bold{x}
x 有关:
推理时,对于待渲染视图中的每个像素点,仿照 NeRF 中颜色的积分方式对语义信息进行积分即可得到该像素点的语义:
S
^
(
r
)
=
∑
k
=
1
K
T
^
(
t
k
)
α
(
σ
(
t
k
)
δ
k
)
s
(
t
k
)
,
where
T
^
(
t
k
)
=
exp
?
(
?
∑
k
′
=
1
k
?
1
σ
(
t
k
)
δ
k
)
\hat{\mathbf{S}}(\mathbf{r})=\sum_{k=1}^K \hat{T}\left(t_k\right) \alpha\left(\sigma\left(t_k\right) \delta_k\right) \mathbf{s}\left(t_k\right), \\ \text {where} \quad \hat{T}\left(t_k\right)=\exp \left(-\sum_{k^{\prime}=1}^{k-1} \sigma\left(t_k\right) \delta_k\right)
S^(r)=k=1∑K?T^(tk?)α(σ(tk?)δk?)s(tk?),whereT^(tk?)=exp(?k′=1∑k?1?σ(tk?)δk?)
训练时,在 NeRF 的损失函数基础上添加语义损失,语义损失使用交叉熵函数:
L
=
L
p
+
λ
L
s
where
L
p
=
∑
r
∈
R
[
∥
C
^
c
(
r
)
?
C
(
r
)
∥
2
2
+
∥
C
^
f
(
r
)
?
C
(
r
)
∥
2
2
]
,
L
s
=
?
∑
r
∈
R
[
∑
l
=
1
L
p
l
(
r
)
log
?
p
^
c
l
(
r
)
+
∑
l
=
1
L
p
l
(
r
)
log
?
p
^
f
l
(
r
)
]
,
L=L_p+\lambda L_s\\ \text {where} \quad L_p=\sum_{\mathbf{r} \in \mathcal{R}}\left[\left\|\hat{\mathbf{C}}_c(\mathbf{r})-\mathbf{C}(\mathbf{r})\right\|_2^2+\left\|\hat{\mathbf{C}}_f(\mathbf{r})-\mathbf{C}(\mathbf{r})\right\|_2^2\right], \\ L_s=-\sum_{\mathbf{r} \in \mathcal{R}}\left[\sum_{l=1}^L p^l(\mathbf{r}) \log \hat{p}_c^l(\mathbf{r})+\sum_{l=1}^L p^l(\mathbf{r}) \log \hat{p}_f^l(\mathbf{r})\right], \\
L=Lp?+λLs?whereLp?=r∈R∑?[
?C^c?(r)?C(r)
?22?+
?C^f?(r)?C(r)
?22?],Ls?=?r∈R∑?[l=1∑L?pl(r)logp^?cl?(r)+l=1∑L?pl(r)logp^?fl?(r)],
场景的训练视图不仅包含相机机位信息,还包含语义类别,不过这些语义信息中只有少量真实标签,和一些噪声标签。
语义视图合成:
语义类别去噪:
语义标注:
语义类别超分:
动画效果见 In-Place Scene Labelling and Understanding with Implicit Scene Representation。
Semantic-NeRF 在 NeRF 的基础上增加了语义分类的功能,实现了几何、外观和语义的联合隐式表达,能够完成语义标注、语义视图合成、语义类别的超分、去噪、插值,以及多视角语义标签融合等任务。鉴于三维隐式表达的连续性和多视角一致性,Semantic-NeRF 可以仅依靠稀疏或含噪声的语义标签,便能获得准确的语义分类。
不直接使用 Semantic-NeRF 进行场景编辑是因为需要重新训练 NeRF,效率太低。