3D Point Cloud Classification and Segmentation using 3D Modified Fisher Vector Representation for Convolutional Neural Networks
模型结构:
可见模型主要分为两部分,一部分是将输入点云变为 Fisher Vector 表达,另一部分是进行CNN处理
其中 Inception 是 classification network 的核心,结构为:
注意这里居然用了平均池化 avg. pooling
这篇文章的主要创新点在于,把 Fisher Vector 用到了CNN 中用来作为CNN输入,对点云进行分类。Fisher Vector 的计算得到一个向量,该向量与点云结构/点的顺序 无关,从而解决了点云无序性的问题。而PointNet解决点云无序性是用的max pooling。
为了使计算得到的Fisher Vector 与点数无关,将FV向量除以点云对象的点数。题外话,要使CNN实现与输入尺寸无关,只要用pooling就可以啦,因为卷积本身是对输入尺寸不敏感的。例如2014年的论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,用在图像上的方法,可以借鉴思路用在点云上。事实上PointNet就是这么做的,只是PointNet论文中依然用的是每个点云点数相同==
Fisher Vector 的原理见:https://blog.csdn.net/shanyicheng1111/article/details/76978029 经常用于动作识别和图像处理
实现:https://github.com/jacobgil/pyfishervector
采用 Fisher Vector 的缺点也显而易见,即 FV 也是人工提取的特征,所有人工提取的特征都会导致损失信息。
另外,计算 Fisher Vector 的时候用到了 Voxel Grid,这使得计算量大,内存消耗大。