PointNet网络详解
姓名:周可儿 学号:22021211973 学院:电子工程学院
转载自:https://blog.csdn.net/CSDNcylinux/article/details/106723260
【嵌牛导读】PointNet作为点云深度学习的开山之作,根据点云数据的特性被设计出来。
【嵌牛鼻子】点云 深度学习 分类网络
【嵌牛提问】PointNet如何针对点云数据特性进行设计?
【嵌牛正文】
PointNet设想的由来
说到如何设计PointNet网络的,那我们首先就要从输入数据的特性说起。点云数据是一种不规则的数据,在空间上和数量上可以任意分布,由于其特性而不能直接适用于传统CNN。以往的研究者想出了很多种处理点云方式:
将点云数据转化为规则的数据,转化为栅格使其均匀分布,再用3DCNN来处理栅格数据
缺点:3D cnn 复杂度相当的高,三次方的增长,所以分辨率不高303030 相比图像是很低的,带来了量化的噪声错误,限制识别的错误。
有的学者将点云数据从3D投影到2D平面,再进行2DCNN,这样会损失3D空间的信息。
吸取前者的经验,根据点云数据的特性着手设计PointNet网络。
点云数据的三个特性
点云具有无序性
点云数据是一种对顺序很不敏感的数据,点云是无序的,点与点之间的顺序可以任意变换,但其代表的还是同一个物体。故此在设计网络的时候,就需要使网络能够针对不同顺序下的点云数据都能够提取到同一种空间特征,具有置换不变性。
数学上提供了对称函数的理论指出:输出结果与输入顺序无关的函数。
而在网络上能实现对称函数功能的是最大池化层:Maxpooling
三维点云数据不管以什么顺序输入,经过maxpool后输出的总是最大的特征,这也有效的解决了点云无序性的问题。
点与点之间的存在的信息连接
这点我认为在pointnet中没有很好的体现出来,在进行零件细分和语义分割的过程中,只是将局部特征和全局特征进行了串联拼接,该架构不能获取点附近的底层局部结构,这也是PointNet最主要的缺点,而在Pointnet++中改善此缺点。
点云的旋转不变性
点云具有旋转不变性,平移不变性,缩放不变性。针对该问题,网络增加了一个基于数据本身的变换函数模块T-Net,我在看别的博客,大多都是解释,生成点云旋转矩阵与输入点云数据相乘,使得与特征空间对齐来保证不变性。
对于特征空间对齐这个概念我一直不是很理解,在观看其他博客的时候,我得到了一种说法,实质上T-net得作用就是保留原始点云的部分特征,为后面的concat操作提供更多特征。在原文中,作者也对T-Net做了实验,发现在分类过程中,加入T-Net网络,使用输入变换可以提高0.8%的性能。但是T-Net没法获取点附近之间的局部特征,故此对于分割而言是没有帮助的,在语义分割中也弃用了T-Net。
最终得到PointNet框架如下: