这篇论文属于pointnet系列,是在pointnet++的基础上提出来的,里面的很多概念都直接用了pointnet++,所以需先阅读pointnet++。
月明星稀风萧萧:论文笔记:PointNet++论文代码讨论zhuanlan.zhihu.com1. 论文亮点
- 1.1. 编码了不同方向的特征
- 使用orientation-encoding unit,来描述空间的8个方向 。
- 从下图可以看到,如果采用query ball或者knn来分组,则可能出现只能得到一个方向的点的情况,如果使用作者提出的 8 cube分组方法,则可以得到各个方向的点。
- 1.2. 对不同scale的图形有适应性
- 使用orientation-encoding units来进行多尺度表示
2. SIFT算法
本论文采用了SIFT算法的思想。这段只是作为了解,可以跳过。其实我也不是很了解,所以写的不清楚。
- 2.1. SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅2d图中的特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配
- 2.2. SIFT描述子
- scale不变描述子
- orientation不变描述子
- 2.3. 关键点检测阶段
- multi-scale的表达
- 2.4. 特征检测阶段
- 检测主导方向,接受各个方向
3. 灵感来源
- 3.1. 因为cnn和sift在2d领域提取特征的时候有不错的表现,之前用了cnn,所以这里尝试SIFT
- 3.2. pointnet++在grouping的时候采用knn这可能导致这些点都是一个方向的,pointSIFT找到的点是8个方向的
- 3.3. pointnet++的max pooling会忽略很多信息,而有序的描述子能保留更多信息,所以用了conv提取特征
- ordering of the three coordinates
- OE unit
- 在八个八分圆上找最近点得到(2,2,2)的最近点集合,八分圆是通过三个坐标的顺序划分的
- orientation-encoding convolution, 分别沿着XYZ进行卷积,得到(2,2,2,d)的特征,其中(2,2,2)对应三个坐标轴,
- 3.4. pointnet++的multi scale grouping
4.网络组成
网络由下采样层
上采样层
链接上下采样层的FP-shortcut link
label预测层
四大部分组成。
4.1. 下采样layers
网络上面那个分支,有pointSIFT module和SA module组成。下面分别介绍。
4.1.1. pointSIFT module
作用 :描述局部特征
-
-
- 组成
-
(1)方向编码orientation-encoding
-
-
-
-
- grouping的改进:在八个八分圆上找最近点得到(2,2,2)的最近点集合,八分圆是通过三个坐标的顺序划分的
- orientation-encoding convolution, 依次沿着
X
Y
Z
轴进行卷积,得到(2,2,2,d)的特征,其中(2,2,2)对应三个坐标轴
-
-
-
其中表示初始输入的特征向量。分别代表轴的权重。
最终得到特征向量。所以最终的这个特征向量包含了八个方向的信息。
(2)尺度感知scale-awareness
-
-
-
-
- 每一层都是提取8个方向的特征, 每一层都有不同的感受野,所以每一层的scale都不同
- concat多个scale的OE unit输出,街上1x1卷积
-
-
-
- 输入输出:(n,d)->(n,d') 其中n表示point的个数,d表示point的维度。
- 优点:
- (1)尺度不变性
- (2)可以代表各种方向
- (3)input output的形状相同,所以可以很方便的被整合到其他module中
4.1.2. SA module (set abstraction module 分层特征提取层)
在pointnet++中的模块。具体可以看pointnet++。
-
-
- 输入输出:(N,d) -->(N',d') 其中n表示point的个数,d表示point的维度。
- 过程 :
- (1) 找中心点
- (2) 分组:query ball / knn
- (3) 使用pointnet计算中心点特征
-
分层提取特征,这样每一层得到的中心点都是上一层中心点的子集,并且随着层数加 深,中心点的个数越来越少,但是每一个中心点包含的信息越来越多。
-
-
- 作用:下采样,把point set逐步变小,8192-->1024-->256-->64
-
4.2. FP-shortcuts link
-
- 解释:链接相应的上采样和下采样layer
- 作用 :
- (1)补充下采样过程丢失的信息
- (2)使得收敛更快
- (3)提升预测精度
- 灵感来源 :residual network
4.3. 上采样layers
4.3.1. pointSIFT module
和上面一样不再赘述
4.3.2. FP module 特征传递模块
也是pointnet++中的模块。
-
-
- 输入输出:(N,d)-->(N',d)
- 过程 :线性插值,权重是距离
- 作用:上采样,增加point set,64-->256-->1024-->8192
-
4.4. label预测 layer
-
- fully connected layer 。每个点预测一个label。
5. 实验
5.1. 验证pointSIFT的有效性
5.1.1.验证 OE unit的有效性
-
-
- 对比ball query和S8N search。把找到的neighbors的数目设置成相同
- 比较采用ball query的pointnet++和S8N search的pointSIFT的结果精确度
- 比较group,miss了多少points,则代表miss了多少information
-
5.1.2. 验证scale感知的有效性
-
-
- 设计实验检测每一层的激活程度
-
5.2. 语义分割结果对比
作者用下面两个数据集做了实验:
-
- Stanford Large-Scale 3D Indoor Space
- Scannet