首页 > 其他 > 详细

PointCNN: Convolution On $\mathcal{X}$-Transformed Points

时间:2019-07-02 14:19:50      阅读:148      评论:0      收藏:0      [点我收藏+]

Yangyan Li, NeurIPs 2018

1. Intuition

解决点的排列不变性(permutation invariance)的常见方式是采用对称函数来转换特征,本文采用的是将点云按照一个固定的顺序排列的方式。PointNet的paper中论述过将点云按照顺序排列是很难完成的,但本文采取mlp来学习这种映射,即使作者表示确实没有学习到很好的排列映射,但最终仍取得了不错的效果。

本文采用mlp学习\(\mathcal{X}\)-transform,将这个transform作用于点云上从而达到两个效果:

  1. 将点云映射到一个固定顺序的排列上;
  2. 对各点的特征进行加权。

然后对transformed points进行卷积操作,因为已经解决了permutation invariance的问题,所以直接进行卷积即可。这个过程称为\(\mathcal{X}\)-conv。类似于经典的conv,可以堆叠使用。总体上看也是一个local-to-global的结构,并采取knn来提取邻域。

2. Implement

对于classification,采用随机取样的方式提取中心点;对于segmentation,采取FPS(Farthest Points Sampling)的方式提取中心点。都通过knn的方式获取邻域中的点。为了增大卷积的感受野,作者设置了扩大因子(balition rate)。通过knn取得\(K\cdot D\)个点,再从中随机取出K个点。

对于一个邻域\(\{p, P, F\}\),分别表示中心点、邻域点、点特征。那么\(\mathcal{X}\)-conv可以表示为:
\[ F_p=\mathcal{X}-Conv(K, p, P, F)=Conv(K, MLP(P-p)\times [MLP_{\delta}(P-p), F]) \]
也就是先将邻域点转移到中心点为原点的相对坐标系下,分别过两个mlp,一个将学习相对位置的高维特征,一个学习\(\mathcal{X}\)-transform。将mlp映射出的特征与原本的特征拼接,并进行\(\mathcal{X}\)-transform,之后通过卷积核为K的卷积操作。通过堆叠这种操作提升特征维数,最后通过fc进行分类。

3. Experiment

实验:3D&2D classification,segmentation

4. Code

https://github.com/hxdengBerkeley/PointCNN.Pytorch

classifier: 
    5 * RandPointCNN ==> 3 * FullConnection
RandPointCNN:
    sample centroid point ==> PointCNN
PointCNN:
    group neighborhood points ==> XConv
XConv:
    input: rep_pt(N, P, 3), pts(N, P, K, 3), fts(N, P, K, dim)
        #    中心点               分组后的点云    对应的特征
    forward:
        p_centor = rep_pt.unsqueeze(rep_pt, dim=2)  # (N, P, 1, 3)
        pts_local = pts - p_center  # (N, P, K, 3)
        fts_lifted = fc(pts_local)  # (N, P, K, high_dim)
        fts_cat = cat(fts_lifted, fts)  # (N, P, K, high_dim + dim)
        
        X = MLP(pts_local),view(N, P, K, K)
        fts_X = X.matmul(fts_cat)  # (N, P, K, high_dim + dim)
        fts_X = fts_X.view(N, high_dim + dim, P, K)
        y = conv2d(in_channel=high_dim+dim, 
                   out_channel=output_dim, 
                   kernel_size=(1, K))
        return y
        

PointCNN: Convolution On $\mathcal{X}$-Transformed Points

原文:https://www.cnblogs.com/VI3160846668/p/11120108.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!