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

2023-12-31 05:09:26

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 模型

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=1K?T^(tk?)α(σ(tk?)δk?)s(tk?),whereT^(tk?)=exp(?k=1k?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?=rR?[ ?C^c?(r)?C(r) ?22?+ ?C^f?(r)?C(r) ?22?],Ls?=?rR?[l=1L?pl(r)logp^?cl?(r)+l=1L?pl(r)logp^?fl?(r)],

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

三. 实验结果

语义视图合成:
在这里插入图片描述

语义类别去噪:
在这里插入图片描述

语义标注:
在这里插入图片描述

语义类别超分:
在这里插入图片描述

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

四. 总结

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

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


  1. 11、Semantic-NeRF ??

文章来源:https://blog.csdn.net/m0_51976564/article/details/135304133
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。