【3D计算机视觉】A-CNN——点云上的环状卷积神经网络


论文地址: http://www.cs.wayne.edu/zzhong/papers/A-CNN_CVPR2019.pdf

一、贡献点

今年CVPR出了好多篇关于在点云上面构建卷积结构的文章,因此文章背景就不详细叙述了。大体来说,就是PointNet++只是通过局部ball query去做max pooling,没有很好挖掘点云的局部信息。而这篇文章的出发点就在于PointNet++中有一个Multi-Scale Grouping的操作(如下图),即为了解决点云中分布不均匀的现象,PointNet++中利用这样不同尺度的球去采样点云,并对每个区域做一个不同的Pointnet。本文认为这样的采样方式实际上是有重叠的,同时只做一个Pointnet并不能很好的编码局部的点云结构,因此提出了Annularly Convolutional的结构。
在这里插入图片描述

二、模型结构

2.1 Regular and Dilated Rings

在这里插入图片描述
文章中定义了两种环Ring的结构,一种为Regular Rings,即上图左侧,密集的不同尺寸的圆环;另一种为Dilated Rings,即环与环之间具有一定的空隙。文章认为两种环具有不同的采样效果。

2.2 Constraint-based K-NN Search

在采样的过程中,只对每个环内部采取点云

2.3 Ordering Neighbors

这一步是环卷积的关键,该步骤分为投影排序两步:

  • Projection:首先每个环都具有一个中心点,通过中心点的法向量可以构建该点的正交切面(如果像场景分割中没有法向量作为输入的,就通过10个邻居点用最小二乘法计算),然后对于同一个环,将环上面的点云都投影到这个切面上去。
  • Ordering: 选定某个环上的点作为起始点,通过计算别的点与该点的余弦值去将所有点顺时针或逆时针的构建成一个序列。

2.4 Annular Convolution on Rings

通过1D的CNN对上一步构建好的点云序列进行特征的编码,这里需要注意的是,如果卷积核尺寸大于1,则在序列的尾部需要把头部多出来的部分拼上去,例如卷积核为 1 × 3 1\times 3 ,则在尾部需要拼上 [ x 1 , x 2 ] [x1,x2]

(整体步骤可以看这张图)
在这里插入图片描述

2.5 Pooling on Rings

对于每个环做过卷积的点云序列,去分别做一个max pooling,形成一个局部的特征并进行下采样

2.6 A-CNN Architecture

模型的具体结构如下图,下采样部分基本上就是一直使用Annular Convolution去编码局部点云,最终变成一个全局的特征。这需要说明的是在解码器部分,该网络并没有模仿PointNet++的FP结构,而是借鉴了PU-Net中的decoder结构,即将不同尺度的点云插值到原始尺度,然后拼接后通过MLP得到分割结果。
在这里插入图片描述
网络的参数如下在这里插入图片描述

三、实验结果

3.1 点云分类

分类任务上本文在ModelNet10和ModelNet40上进行了测试,结果如下:
在这里插入图片描述

扫描二维码关注公众号,回复: 11313434 查看本文章

3.2 点云部件分割

在这里插入图片描述
在这里插入图片描述

3.3 点云场景分割

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39373480/article/details/93900164
今日推荐