《论文阅读》PointASNL: Robust Point Clouds Processing using Nonlocal Neural Networks with Adaptive Samplin
留个笔记自用
PointASNL: Robust Point Clouds Processing using Nonlocal Neural Networks with Adaptive Sampling
做什么
首先先得理解点云是什么
点云的概念:点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。
点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等,不一一列举。
一般的3D点云都是使用深度传感器扫描得到的,可以简单理解为相比2维点,点云是3D的采样
做了什么
这里的主要立意是有效地处理有噪声的点云,首先对来自最远采样点的初始采样点周围的邻居进行重新加权,然后自适应地调整整个点云以外的采样点,还推出了一个L-NL也就是Local-Nonlocal模块来提取局部和全局特征
怎么做
整体结构就像前面说的由两个模块组成, adaptive sampling (AS)自适应采样模块,local-nonlocal (L-NL) module局部-非局部模块
首先是AS模块
首先先简单分析一下常用的sample方法也就是Farthest point sampling (FPS)的问题,它因为是对采样点最远的选择来获得最大覆盖面积,所以对离群点特别敏感,而且采样输入必须是原始点集
这里提出的AS模块来更新这两个问题,首先定义输入P∈RN×3是包含N个点的原始输入点云,首先先使用FPS来进行采样得到Ps∈RNs×3也就是包含Ns个点的采样点云,xi∈Ps是点坐标,fi∈Fs∈RNs×D是点特征
然后对这里的每个采样点用KNN找到它的邻域,一个邻域作为一个组,这里使用所有组成员内的注意力来更新组特征
这里的xi就是采样点之一,N(X)表示利用KNN得到的点的邻域,R(x,x)是一个计算点之间关系的函数,γ是转换通道数的函数,A是一个聚合函数
具体来说
这里的γ就是一个全连接层,而f是该点的特征, θ和 φ均是一个1D卷积,可以理解成一个转换通道数的,D’是通道数,这里就是计算两个点之间的关系
这里的两个σ都是构建的MLP,然后再使用softmax
这里的X∈RK×3,F∈RK×D‘,分别是knn中邻域其他点各自的坐标和特征,最后使用得到的softmax对其进行偏移得到新的点x和特征f
总而言之,这个AS模块的操作其实就是一个点之间的attention然后更新的过程,不过写的像是那么回事
然后就是第二个主要模块, Local-Nonlocal (L-NL) 模块
这里也分为了两个小部分,point local(PL)点局部和point nonlocal (PNL)点非局部模块。
首先是PL部分,这里也就是获取点的局部特征
这里的x和N(x)和f定义都与前面相同,L是类似于PointNet++里构建的一个MLP
这里的g是一个将3通道(坐标)转换为Dl×Dmid的MLP,前者是输入特征的通道数,后者是输出特征的通道数,简单来说这里构建这个的意思就是根据xn也就是xi邻域和xi的相对位置关系来作为attention
A是max-pooling,得到的f就是最终的更新后的中心xi的局部特征
然后是PNL部分
这里和前面的的Query Points就是sample点,这里的用意就是计算查询点与关键点之间的相似度,这个图就是把传统的attention计算方式稍微做了点改变
这里的Pk∈RN×3表示的是关键点,这里的NL计算方式跟前面local的计算方式基本相同,简单理解就是点特征和其他点特征的attention计算,σ是一个简单的卷积层用于结合全局特征的
简单来说,这里Local模块是根据点局部邻域来计算的attention,而Not Local模块则是和层的关键点来计算attention以获得全局信息
接下来就是将local信息和global信息聚合
最后
总结
1.构造了一种提取点云特征的方式,其实就是把attention给包装了一下,整成了一个自适应的偏移,想法确实很厉害,而加装了两个模块使效果上升这点也很正常,这也算是个即插即用的了吧
本文地址:https://blog.csdn.net/qq_43310834/article/details/110086315
上一篇: Python_自测100题
下一篇: 微信账单如何查询对某一个人的转账明细?