【计算机视觉】简述对PointConv的理解

点云是非常重要的数据类型,但是像PointNet和PointNet++这两篇文章都是直接以点云的坐标为输入的,换句话说都是直接以点云为输入的,但是它只提取了一个全局的特征,换句话说,很多局部信息都被忽略了,所以这给分割和分类带来的后果就是准确率和IOU并不是那么超前。所以,CVPR2019年发出了PointConv,这篇文章虽然贡献不是那么大,但是也在某种程度上实现了高效卷积。
其实在阅读这篇文章时,应该考虑一个问题,就是为什么它这个可以用卷积操作,而PointNet没用,而是直接用MLP提取的特征,其实就是为了解决点云的无序性问题。下面本人讲解一下自己对PointConv的理解。
一、这篇文章开头说了它的一个贡献,大概有三点,就是设计了一种重密度加权的高效卷积,可以逼近任意3D点集上的卷积网络,并且将其网络扩展到了PointDeconv版本,实现更好的分割效果。我认为这个文章比较突出的一点是将核密度估计的方法加入其中,解决了密度不均匀问题,因为点云分割的一般算法都是先进行FPS(最远点采样,这种方法的好处是可以在选取尽可能比较少的点云的情况下保存其比较完整的结构,但是缺点就是密度不均匀),本文就是利用这个核密度估计去通过相对坐标预测出其密度函数,然后通过密度干预特征。
【计算机视觉】简述对PointConv的理解_第1张图片
根据上述的思想,在三维空间的PointConv表达式可以表示成:
在这里插入图片描述
上述坐标都是相对坐标,最终写成索引的形式,
【计算机视觉】简述对PointConv的理解_第2张图片
二、关于PointConv的局部操作的话,它大致是分为三部分,上半部分是将相对坐标扔进MLP中进行学习,学习到一个权重函数W,这部分我理解的就是将其点云的空间结构输入到网络中,中间是先利用点云坐标利用核密度估计的方法去估计出一个逆密度系数S,这里使用的是密度的倒数,因为我们需要将密度比较大的地方降低其权重,换句话说就是降低其注意力,将S与下部分的特征进行逐点相乘,然后与W进行逐点相乘,最后得出Fout。
【计算机视觉】简述对PointConv的理解_第3张图片
三、本文的一个贡献之一是设计了一个高效的版本,其实就是将W拆分成了M和H,它们分别是MLP最后一层的输入和权重,其实就是将逐点相乘换成矩阵相乘的方法,将其结构变得更简单,并且实现的效率是原版本的64倍,这个计算我大致说一下,就是它自己假设了一堆参数,就是B=32,N=512,K=32,Cin=64,Cout=64,Cmid=32,然后计算的参数是过滤器使用的参数,并且储存方式是单精度的存储,那么第一种方法的参数所占用的字节为32×512×32×64×64×4,大约是8GB,这还是一层,而高效版本是32×512×64×32×4,可以看到差了64倍。
【计算机视觉】简述对PointConv的理解_第4张图片
四、PointConv的实验做的都是比较常规的实验,除了一些3D的数据集之外,它还做了CIFAR-10类数据集,实现了2D分类的结果,并且准确率可以与2012年的分类冠军AlexNet相媲美。
【计算机视觉】简述对PointConv的理解_第5张图片
消融实验结果来看的话, 可以证明加入逆密度系数S的作用是可以体现的。【计算机视觉】简述对PointConv的理解_第6张图片
总结来看的话,这篇论文相比于现在还是比较老,而且没有那么先进,且效果不是特别的明显,矩阵乘法的利用现在也有利用,不过比较少。

你可能感兴趣的:(计算机视觉,深度学习)