PointASNL: 点云的Adaptive Sampling(CVPR2020)

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

PointASNL: 点云的Adaptive Sampling(CVPR2020)

作者:不知道叫什么好 | 来源:知乎

https://zhuanlan.zhihu.com/p/139396088

本文仅做学术分享,如有侵权,请联系删除。

点云数据里面,一般会有一些噪点,理论上,这些噪点可能会对具体应用的性能产生影响。本文主要介绍CVPR 2020的一篇处理噪点的论文。文章主要对所有采样点的位置、feature进行调整,减弱噪点的影响,论文将这步称为:Adaptive Sampling(AS);并进一步使用Local-NonLocal(L-NL)来对feature进行增强。

论文地址:https://arxiv.org/pdf/2003.00492.pdf

代码地址:https://github.com/yanx27/PointASNL

1. 噪点

PointASNL: 点云的Adaptive Sampling(CVPR2020)

在学习点云的feature时,一般使用encoder + decoder的网络结构。在encoder的downsampling过程中,一般使用FPS采样算法来采样。

如上图左图所示,对于一个飞机点云,红圈、蓝圈、绿圈、黄五角星,均表示噪点。当使用FPS进行下采样后,黄色五角星所在的点被采中。直觉上,这个点如果不处理,会对网络性能有所影响。

针对这个问题,论文提出了一个Adaptive Sampling(AS)模块,来实现调整噪点的操作,从而降低噪点对网络性能的影响。

2. Adaptive Sampling(AS)模块

首先定义如下符号方便后续描述:

·PointASNL: 点云的Adaptive Sampling(CVPR2020) :表示从某个层用FPS下采样后得到的点集,其中可能包含噪点。

·PointASNL: 点云的Adaptive Sampling(CVPR2020) :表示下采样得到的点集的feature集合。

·PointASNL: 点云的Adaptive Sampling(CVPR2020) :表示下采样得到的点集里面的某个点的坐标和feature。

AS模块首先从上一层的点集合中使用FPS下采样得到 PointASNL: 点云的Adaptive Sampling(CVPR2020) 、 PointASNL: 点云的Adaptive Sampling(CVPR2020) 。后续的操作流程如下:

2.1 用KNN找邻居点集

用KNN算法,给每个下采样得到的点找K个邻居点。假设点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 的邻居点集合为: PointASNL: 点云的Adaptive Sampling(CVPR2020) ,对应的邻居点的feature集合为: PointASNL: 点云的Adaptive Sampling(CVPR2020) 。

2.2 Self-attention增强邻居点feature

主要思路是:对于点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 的第 PointASNL: 点云的Adaptive Sampling(CVPR2020) 个邻居点,分别计算出它与 PointASNL: 点云的Adaptive Sampling(CVPR2020) 的其它邻居点的相关性,然后用softmax计算出一组权重,最后使用权重对 PointASNL: 点云的Adaptive Sampling(CVPR2020) 的所有邻居点的feature进行加权求和,得出点 PointASNL: 点云的Adaptive Sampling(CVPR2020)的第 PointASNL: 点云的Adaptive Sampling(CVPR2020) 个邻居点的新的feature。直觉上,经过这步处理后,每个邻居点的feature会包含邻域范围内的所有点的一些信息。

具体操作流程如下:

·邻居点坐标normalization:所有邻居点的坐标,减去第一个邻居点的坐标,转成相对于第一个点的相对坐标。

·重新构建邻居点的feature:每个邻居点的相对坐标,与邻居点的feature,拼到一起,得到每个邻居点的新feature。

·用self-attention模式,分别计算出邻居点集的3个feature矩阵:query、key、value。

·用query和key矩阵相乘,并用softmax,得到邻居点之间的attention矩阵。对attention进行scale。

·用attention和value矩阵相乘,得到所有邻居点feature。

以上过程即为论文中的如下公式:

PointASNL: 点云的Adaptive Sampling(CVPR2020)

PointASNL: 点云的Adaptive Sampling(CVPR2020)

PointASNL: 点云的Adaptive Sampling(CVPR2020)

2.3 调整采样点

主要思路是:用增强后的邻居点的feature,通过网络学出以下两个信息:

·邻居点集的feature的每个channel的attention权重向量,然后分别在每个channel上,用对应channel上的attention权重向量,加权求和,得到采样点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 调整后的feature。

·邻居点集的坐标的attention权重向量,然后用该attention权重向量,对所有邻居点的坐标加权求和,得到采样点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 调整后的坐标。

具体操作流程如下:

·Self-attention后的feature,经过一个多层MLP网络,得出一个新的weight矩阵,该矩阵的维度是:【batch,point_number,neighbor_number,channel+1】。这里额外增加的一个channel是为了后面计算邻居点集的坐标的权重矩阵。

·在以上的neighbor_number维度上,用softmax,计算出邻居点集的每个channel、坐标的权重矩阵。

·用channel维度上的权重矩阵,对邻居点集的feature在每个channel上进行加权求和,得到点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 调整后的feature。

·用坐标的权重矩阵,对邻居点集的坐标进行加权求和,得到点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 调整后的坐标。

总结:Adaptive Sampling在邻域内,先用Self-Attention进行feature增强,然后用另一种attention在邻域内进行feature、坐标的加权求和,得出所有采样点的feature、坐标。论文认为,这样即可对采样点中包含的噪点进行处理。

3. Local-NonLocal(L-NL)模块

该模块通过使用局部、全局信息,进一步对采样所得点的feature进行增强。

3.1 Local

对于每个采样点,Local主要是在每个点的局部邻域范围内,对其邻居点的feature进行融合,计算出一个新的feature。这部分使用了PointConv的思想(连续空间下的卷积操作),将每个邻居点的相对坐标映射为一组卷积操作的系数矩阵,然后用每个邻居点的系数矩阵对其feature进行变换,最后用一个Aggregation操作,将邻居点的feature融合为得到中心点 PointASNL: 点云的Adaptive Sampling(CVPR2020) 的local feature。对应的公式为:

PointASNL: 点云的Adaptive Sampling(CVPR2020)

PointASNL: 点云的Adaptive Sampling(CVPR2020)

其中 PointASNL: 点云的Adaptive Sampling(CVPR2020) 是一个MLP网络,将邻居点相对坐标映射为卷积操作的系数矩阵。

(个人认为,这部分代码实现,与文章不符。欢迎读者讨论)

3.2 NonLocal

NonLocal本质上是使用Self-Attention,对每个采样所得点,在整个点云范围内进行feature融合,为每个采样点计算出一个包含全局信息的feature。流程图如下:

PointASNL: 点云的Adaptive Sampling(CVPR2020)

其中:

·Query Points:用FPS在前一层点云中采样,并用Adaptive Sampling调整后所得的点云feature;

·Key Points:前一层点云的feature。

3.3 feature融合

除了Local、NonLocal两个分支外,代码中其实还有一个skip connection的分支。对于每个采样所得点,该分支直接对采样点的邻居点的feature执行max_pool,最后通过一个1d convolution给每个采样点计算出来一个新的feature。

最后将local、nonlocal、skip-connection三个分支的feature加到一起,再用一个1d convolution对feature的channel进行变换,得到每个采样点的feature。

4. 网络结构

以segmentation为例:

·每个下采样操作,相当于FPS -> Adaptive Sampling -> Local-Nonlocal

·每个上采样操作,相当于Up-Sampling -> Local-Nonlocal

总体结果如下图所示:

PointASNL: 点云的Adaptive Sampling(CVPR2020)

5. 总结

读完文章、代码,会发现:

·本文的核心是Adaptive Sampling、Local-NonLocal

·Adaptive Sampling的核心是Self-Attention、Attention

·Local-NonLocal的核心是Self-Attention、PointConv

对Self-Attention、PointConv有疑惑的读者,请参考:

·Non-local Neural Networks (CVPR 2018)

  文章地址:https://zhuanlan.zhihu.com/p/129925437

·PointConv: 3D点云卷积 (CVPR 2019)

   文章地址:https://zhuanlan.zhihu.com/p/99863795

总体上,这篇文章演示了如何融合local、global范围内的feature,进行feature增强。比较特别的是,作者从“噪点“这个角度作为文章的出发点,如此一来,就有别于其它点云feature融合的文章了。

从代码的角度看,源码“融合“了多篇文章的代码:PointNet++, PointConv, KPConv, ... 如果之前看过相关源码,理解本文应该不会太难。

推荐阅读

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

PointASNL: 点云的Adaptive Sampling(CVPR2020)

▲长按加微信群或投稿

PointASNL: 点云的Adaptive Sampling(CVPR2020)

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

PointASNL: 点云的Adaptive Sampling(CVPR2020)

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题