PointNet++ pytorch核心代码笔记

Motivation:

Q1: PointNet没有捕捉到由点所处的度量空间产生的局部结构,限制了其识别更为细粒度的能力和对复杂场景的通用 性。
R1: 引入了一个层次化的神经网络(hierarchical neural network),通过sampling和grouping逐步整合局部邻域,首先 在小范围中从几何结构中提取局部特征(浅层特征),然后扩大范围,在这些局部特征的基础上提取更高层次的特征, 直到提取到整个点集的全局特征。
Q2: global feature直接由max pooling获得,无论是对分类还是对分割任务,都会造成巨大的信息损失
R2: PointNet++的改进:hierarchical feature learning framework,通过多个set abstraction逐级降采样,获得不同规模不 同层次的local-global feature
Q3: 分割任务的全局特征global feature是直接复制与local feature拼接,生成discriminative feature能力有限
R3: 有限PointNet++的改进:分割任务设计了encoder-decoder结构,先降采样再上采样,使用skip connection将对应层 的local-global feature拼接

Issues of Model

how to generate the partitioning of the point set

使用邻域球来定义分区,或者也可以叫做patch,每个区域可以通过中心坐标和半径来确定。中心坐标的选取,作者使用了快速采样算 法来完成(farthest point sampling (FPS) algorithm)。而半径的选取论文中直接采用的人工确定的方法,通过划分不同的半径产生不同 层面的特征,最后将这些特征拼接起来作为中心点的特征。
how to abstract sets of points or local features through a local feature learner
这个问题的解决方案就是使用PointNet来作为特征提取器,因为PointNet首先已经被证明在segmentation任务上有良好的表现;其次,这个模型在输入数据发生变换的时候有较强的鲁棒性,它可以获取到点的高层次的抽象特征。
non-uniform sampling density
面对非均匀点云采样的问题,在稀疏点云的局部领域训练可能不能很好的挖掘到点云的局部信息,所以文中提出将不同大小的区域产 生的特征拼接起来作为中心点的特征。为此提出了两种方法:

  1. Multi-Scale Grouping(MSG) 对当前层的每个中心点,取不同radius的query ball,可以得到多个不同大小的同心球,也就是得到了多个相同中心但规模不同的局部邻 域,分别对这些局部邻域表征,并将所有表征拼接。
  2. Multi-Resolution Grouping(MRG) 当前层的中心点的局部邻域特征由两部分构成: 左边表征:对上一层set abstraction各个局部邻域(或者说中心点)的特征进行聚合产生的局部特征。 右边表征:使用一个单一的PointNet直接在局部邻域处理原始点云

PointNet++ pytorch核心代码笔记_第1张图片

pytorch模型主要结构

PointNet++ pytorch核心代码笔记_第2张图片
PointNet++ pytorch核心代码笔记_第3张图片
PointNet++ pytorch核心代码笔记_第4张图片
PointNet++ pytorch核心代码笔记_第5张图片
PointNet++ pytorch核心代码笔记_第6张图片
PointNet++ pytorch核心代码笔记_第7张图片
PointNet++ pytorch核心代码笔记_第8张图片

你可能感兴趣的:(笔记,深度学习,机器学习,3d,pytorch)