SemanticNeRF:基于 NeRF 的语义分类方法

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

SemanticNeRF:基于 NeRF 的语义分类方法_第1张图片

目录

  • 一. 研究思路
  • 二. SemanticNeRF 模型
  • 三. 实验结果
  • 四. 总结

一. 研究思路

三维场景的语义类别标注和场景的几何外形关系密切,因为相同几何外形的场景更有可能属于一个语义类别。但仅仅根据几何外形对场景的语义类别进行聚类还远远不够,一些细致的语义分类还需要人为标注的先验。

Semantic-NeRF 在 NeRF 的 MLP 网络基础上增加对场景语义信息的处理和输出,使用含有稀疏或噪声语义标签的场景视图弱监督训练 NeRF,学习得到场景的几何、外观和语义信息。

二. SemanticNeRF 模型

SemanticNeRF 在 NeRF 的 MLP 网络基础上增加对场景语义信息 (semantics) 的处理和输出,显然语义信息应该只与空间位置 x \bold{x} x 有关:
SemanticNeRF:基于 NeRF 的语义分类方法_第2张图片

推理时,对于待渲染视图中的每个像素点,仿照 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=1KT^(tk)α(σ(tk)δk)s(tk),whereT^(tk)=exp(k=1k1σ(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+λLswhereLp=rR[ C^c(r)C(r) 22+ C^f(r)C(r) 22],Ls=rR[l=1Lpl(r)logp^cl(r)+l=1Lpl(r)logp^fl(r)],

场景的训练视图不仅包含相机机位信息,还包含语义类别,不过这些语义信息中只有少量真实标签,和一些噪声标签。

三. 实验结果

语义视图合成:
SemanticNeRF:基于 NeRF 的语义分类方法_第3张图片

语义类别去噪:
SemanticNeRF:基于 NeRF 的语义分类方法_第4张图片

语义标注:
SemanticNeRF:基于 NeRF 的语义分类方法_第5张图片

语义类别超分:
SemanticNeRF:基于 NeRF 的语义分类方法_第6张图片

动画效果见 In-Place Scene Labelling and Understanding with Implicit Scene Representation。

四. 总结

Semantic-NeRF 在 NeRF 的基础上增加了语义分类的功能,实现了几何、外观和语义的联合隐式表达,能够完成语义标注、语义视图合成、语义类别的超分、去噪、插值,以及多视角语义标签融合等任务。鉴于三维隐式表达的连续性和多视角一致性,Semantic-NeRF 可以仅依靠稀疏或含噪声的语义标签,便能获得准确的语义分类。

不直接使用 Semantic-NeRF 进行场景编辑是因为需要重新训练 NeRF,效率太低。


  1. 11、Semantic-NeRF ↩︎

你可能感兴趣的:(3D视觉,NeRF,3D视觉,语义分割)