学习目标:
1.重新回顾nerf这篇论文的结构。
2.学习师兄在IEEE中发表的论文——Semantic Segmentation of Point Cloud With Novel
Neural Radiation Field Convolution
3.尝试与代码结合起来理解,复现实验。
学习内容:
1.nerf 论文结构
这篇论文结构所展示的如图所示,我们可以知道输入是一个5D的坐标,从不同视角所观察的值,输出的则是对应位置角度的颜色和密度,通过体渲染之后,得到一个于真实值的损失。
其中的(θ,ϕ)表达的是如图所示
作者们提出了一种新的方法,通过优化一个连续的5D场景表示(神经辐射场,NeRF)来合成复杂场景的新视图。这种方法在渲染逼真的新视图方面超越了现有的技术。
2.Semantic Segmentation of Point Cloud With Novel Neural Radiation Field Convolution论文的理解
这篇论文对nerf的结构进行了卷积,构建了一种新的局部点云空间局部表示——NeRF7D。我们可以看到,找到局部空间的多个点,选取其中一个点为质心,构建三维坐标系。其他点的位置既可由质心的其他维度来表示,图中就是有相对位置,角度和距离来表示。位置有xyz坐标来表示,角度分别是该点与坐标原点的连线与xoy,yoz,zox三个坐标平面的夹角,距离则是该点与目标点的直线距离。
然后就是进行nerfconv,首先是对position进行编码,然后分别于角度和距离进行concat,得到新的特征维度,然后Shared MLP得到weight和density。中土下半部分则是,先将该点的原始特征维度和扩展维度进行拼接 (由于大场景的复杂性和可变性,学习聚合是困难的。我们使用NeRF7-D和绝对坐标在原始特征的基础上扩展局部点云场景的语义特征信息)
通过公式计算,得到该点的聚合特征。
因为我们知道点云有个特点,近密远疏。距离质点越近,密度值越多,权重也更重。
其实这里和RandLa-Net论文里面的实验结构有点相似:
同样的是对点云的特征进行拼接组合,然后算出距离目标点的其他点的权重分数,最后进行求和操作,得出这些点所有维度中的最大值,从而得出了该点的聚合特征。
tips:其实到这里我就在思考关于点云的较多论文有一个很大的相似处,可能是本人不太成熟的想法。我们知道在大规模点云中,需要根据已有的点,来语义分割,对点进行分类。然而由于点的数量又是巨大的,我们就想办法尽可能的找出一些具有代表性的点,当然更好的办法是我们能够运用一定的方法,在局部对某些点进行操作,找出能够代表部分区域点的聚合特征,也就是增强特征。这里就能够对局部空间进行特征表达,那么还有个问题是怎么扩展到全局范围内呢?现有的方法可能注重全局的效果,局部可能忽视,或者重视局部,然后在全局可能效果不是很好。
像在pointnet这篇论文里,我们从它的分类网络结构中就可以得知,它更多的是注重一个全局范围内的分类效果,但在局部细节特征处理上有所忽视。在pointnet++论文里,就有着重的补充一些局部点的特征,局部空间更加精细。
在SCF-Net: Learning Spatial Contextual Features for Large-Scale Point Cloud Segmentation
这篇论文中,先是用Local Polar Representation(LPR)模块来构建对z轴旋转的不变性,因为点云的方向是无序的,但所希望的是同一类的点不会因为方向不同而判断为不同类别的点,所以是先对点云做一个处理。然后通过点云的极坐标位置和特征维度来构建Dual-Distance Attentive Pooling
(DDAP)模块,这里主要是学习局部上下文的语义信息,局部特征。最后是用Global Contextual Feature(GCF)模块扩展到全局语义信息,是利用局部视野和全局视野的体积比来计算的,忽略了小部分影响。