PointNet不进来看看吗?

2 篇文章 0 订阅
2 篇文章 0 订阅
  • 写在前面
    首先,本文是对PointNet的论文(这是一篇来自CVPR2017的一篇论文),以及对github的基于TF1.x版本的代码的理解。
    如果有理解的不对的地方,还是希望各位大佬留言指正。谢谢。由于是基于Tensorflow1.x版本的,所以如果各位有不理解的地方还是请自己查阅官方文档(tf.compat.v1)。
    对了,再提一点PointNet的正文部分内容并不全面,大部分其余的内容在它的supp中。
    Supplement

1、简单介绍

首先,PointNet并没有使用实际场景中的点云数据,而是使用的CAD(Computer Assistant Design)模型,这一点可以从论文中发现,使用的是ModelNet40的数据集,所以这一点就成为了它的一大不足,就是无法与实际场景结合起来。其次,通过网络结构我们也可以看出,它没有考虑局部的特征,而是把注意力放在了全局上,这一点也对网络的设计和性能产生了很大的影响。
部分网络结构

2、论文的贡献

  • 设计了一个用于3D无序点云数据的神经网络。
  • 展示了如何训练这样一个网络来执行三维形状分类、形状部分分割和场景语义分析任务。
  • 论文中给出了相应的理论分析和证明。
  • 通过实验对网络结构的性能进行了实验,并且展示了相应的实验结果进行对比分析。

3、 网络介绍

这里就不对论文中的推理和证明进行分析了,如果有兴趣可以下载论文仔细研究一下。首先,该论文是基于深度学习的网络设计,但是没有使用到卷积网络,不过仔细研究跟卷积网络的作用可以说类似。论文的作者使用到的网络结构的设计时,使用到的时MLP(Multiple Layers Perceptron),就是多层感知机,了解过感知机的可以很清楚的知道感知机的作用,可以笼统的把感知机认为是一个简单的不能再简单的神经元,但是,这样说也不太严谨,以后有机会可以再仔细讲解一下感知机。

第一部分:Classification Network

这一部分是一个分类网络,网络的设计将原始的CAD模型点云数据输入到网络,经过之前推理的将无序点云数据,转换为有序的处理之后,进行MLP和T-net(miniNet)的处理和转换,最终会得到K个分类,K个类别。这一部分先简单的这样讲,更多细节想在代码里给大家讲解。
PointNet---Classification Network

第二部分:Segmentation Network

论文中就已经很清晰的说明了这部分网络的,是对分类网络部分的拓展(extension),我们可以看到这部分的网络使用到了在Classification中没有考虑的局部特征,并且将局部特征和全局特征进行结合使用。
PointNet---Segmentation Network
然后使用一个参数定义为 mlp(512,256,128)其实类似于一个三层conv2D,类似进行了三次卷积操作。并且,在代码实现部分作者也确实使用到了卷积操作,如下
对tf1.x中的conv2D进行封装

第三部分:网络的整体

上面分别对分类部分网络和分割部分的网络进行了单独的讲解,下面将整个网络结构说一下。
PointNet Architecture

具体的步骤

1、论文选用n个点云作为输入数据,n代表的就是点云的数量,3代表的是(xyz)点云的三点坐标。因此,称之为 nx3
2、为了解决作者在此之前提到的点云数据的无序性,因此,我们可以清晰的看到,网络的结构在对刚输入进网络的点云数据进行了处理,也就是经过了下面的T-Net进行处理,这部分的操作具体在代码部分讲解。如果想了解详细的,可以留言问我要论文Supp部分,进行详细研究。
3、使用mlp多层感知机进行对数据特征的提取,在这里如果不理解mlp到底干了什么工作的小伙伴可以理解为Conv2D操作,例如,mlp(64,128,1024)就是首先将输入数据,卷积后数据到128维,然后,对128维的数据再次进行卷积操作,最终得到1024维的数据,然后对该部分数据进行max pooling操作,并且这里的max pooling和论文中理论推导部分的g函数是说的一个操作。
max pooling函数对应g函数
4、最终,经过多个mlp操作,以及全连接层的处理,并且各层均会使用BN和ReLU进行处理,以加快网络训练速度和防止过拟合等。最后,得到k个分数,k个分类,这就完成了网络的分类。
5、对于分割部分,类似更多内容可以在论文的supp中详细查看。

4、实验以及结果

1、分割结果展示

分割结果展示

2、分类实验

分类实验结果以及PointNet网络的性能对比
对于这个对比表格,由于benchmark使用的是ModelNet40的数据集,因此分类的结果对比也是对,CAD模型进行对比。类似于图片中的IoU,这里也会使用mIoU来对分割结果的好坏进行评价。

5、最后总结

这篇论文,算是自己对点云的一个简单入门吧,当然完全不够,只是简单的对点云进行了简单的了解,接下来对点云感兴趣的大佬可以指正我。并且,接下来我会介绍这篇论文的代码部分,以及PointNet++ | PointRCNN | Frustum PointNet | VoxelNet | VoxelNet FPN 等基于真正的点云数据的,KITTI数据集上的卷积网络等。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值