PointNet / Symmetry Function for Unordered Input分析

选择Symmetry Function处理无序输入的原因和过程解析:

作者提出了3个可用的方法:

1) 拟定一个排序规则;
2) 用RNN训练;
3) 用Symmetric function处理n维输入数据(例如Max pooling,无论按什么顺序输入,输出的结果都一样)。


作者分析了前两个方法的问题:

1)排序不可行
Why? 因为很难找到一个能够稳定地把高维空间数据映射到1维向量的方法;
Why? 因为如果存在,就说明已经有了一个方法:当空间点发生扰动时也能稳定的将空间点映射到1维向量中,但这是极为困难的;
Why? 因为为了更好的学习效果,对点云的转换要尽量保持点的空间邻近性,那么转换成低维时它们也要临近。然而,如果出现了扰动,排序的路径可能发生极大的变化。还可能出现交叉重叠的情况。所以排除了这个方法。
而且作者在后续实验中也证明了这个方法的效果一般。
2)RNN不可行
Why? 首先作者是是想把点云数据一股脑的丢给RNN,让它来学习个顺序,之后输入的顺序就都交给他了。然而,根据前人的相关研究和作者的实际实验,结论就是不太行。
这又是为什么呢? 我认为,最初RNN的提出的目的就是处理低维的字符序列,通过学习不同时序上的词语组合来预估接下来可能出现的语句。然而致命的问题是它连面向字符转的预测都不能做到很完美。咱们拿个极端的马尔可夫模型举例,你仅仅预测未来十来个时间序列的数据可能还说得过去,一旦预测目标过多,偏移会非常离谱。更何况随便一组点云数据都是上万个空间点。
此外,点云数据也不同于文本序列。pointnet的思想是空间点的分布更偏向于独立同分布。难不成让RNN学习一种最短距离索引路径?应该就是因为这些实际情况pass掉了RNN。


"我们"的方法

Symmetric function
首先,这里的“对称函数”就是说,不论输入的向量如何改变顺序,输出的结果都不受影响。
那怎么设计呢?
就是论文中的这个:
symmetric function
其中h(x)是mlp,g(x)可以看作一个全连接层+max pooling;
{x1,…,xn}是n个点的点向量集合(每个向量可能记录着x、y、z、R、G、B等信息)。
这样我们就能分析出公式右边在干什么?
n个x向量经过h函数计算得到n个K维的点特征向量;
然后n个K维的特征向量,先经过g的“全连接层”得到n个局部特征向量,这n个局部特征向量经过max pooling得到n个特征值,这n个值共同代表了整个点云数据的全局特征。

在原文中,这个全局特征由1024个实数值组成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值