sift论文_论文笔记:pointSIFT 点云分割

这篇论文属于pointnet系列,是在pointnet++的基础上提出来的,里面的很多概念都直接用了pointnet++,所以需先阅读pointnet++。

月明星稀风萧萧:论文笔记:PointNet++论文代码讨论​zhuanlan.zhihu.com

d22dec95940e4f4aa5ec528d0ff12e06.png
可视化结果

1. 论文亮点

  • 1.1. 编码了不同方向的特征
    • 使用orientation-encoding unit,来描述空间的8个方向 。
    • 从下图可以看到,如果采用query ball或者knn来分组,则可能出现只能得到一个方向的点的情况,如果使用作者提出的 8 cube分组方法,则可以得到各个方向的点。

1eb0e10e158125716126f7e9e7add522.png
  • 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.网络组成

f18fa075dbcd24f02a2671c5d791a18f.png
网络由 下采样层 上采样层 链接上下采样层的 FP-shortcut link label预测层四大部分组成。

e6a0b999e543d4004d9b32b07430ec8f.png

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)对应三个坐标轴

51a84692010b27e738d79e4c7599e678.png
其中
表示初始输入的特征向量。
分别代表
轴的权重。

最终得到特征向量
。所以最终的这个特征向量包含了八个方向的信息。

35018253490452fa2f64a4b5712389d1.png

(2)尺度感知scale-awareness

          • 每一层都是提取8个方向的特征, 每一层都有不同的感受野,所以每一层的scale都不同
          • concat多个scale的OE unit输出,街上1x1卷积

0f91e44c5aae7c262e104d96fb40f6f4.png
  • 输入输出:(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

3e694113cad2c38b052a04f812bedf14.png

5.1.2. 验证scale感知的有效性

      • 设计实验检测每一层的激活程度

5.2. 语义分割结果对比

作者用下面两个数据集做了实验:

    • Stanford Large-Scale 3D Indoor Space
    • Scannet

b25754c99a605a4ef642c779fc321957.png
Stanford Large-Scale 3D Indoor Space 数据集上的结果
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值