整理资料,完善对pointnet的理解
一、置换不变性
https://blog.csdn.net/cg129054036/article/details/105456002
设计的网络必须满足置换不变性,N个数据就有N!个置换不变性。而对称函数可以满足上述置换不变性,如下:
直接对数据做对称性操作,虽然满足置换不变性,容易丢失很多的几何和有意义的信息。比如取最大值时,只取得最远点,取平均值,只取得重心。
如何不损失
PointNet理解(PointNet实现第4步)
把每一点都映射到高维空间,在更高维空间再做对数据做对称性操作。高维的空间对三维点的表达来说,必定是信息冗余的,但是因为信息的冗余性,我们通过对称性操作综合,可以减少信息的损失,保留足够的点云信息,再通过一个网络来进一步消化信息得到点云的特征。这就是函数h,g,γ的组合:每个点都做h低维到高维的映射,G是对称的那么整个结构就都是对称的。
二、旋转不变性(几何不变性)
https://blog.csdn.net/weixin_45641915/article/details/132340216
旋转不变性指的是,通过旋转,所有的点(x,y,z)的坐标发生变化,但是代表的还是同一个物体,如下所示:
引入了一个T-Net网络去学习点云的旋转,将物体校准,剩下来的PointNet(vanilla)只需要对校准后的物体进行分类或者分割即可。
T−Net是一个微型网络,用于生成一个仿射变换矩阵来对点云的旋转、平移等变化进行规范化处理。这个变换/对齐网络是一个微型的PointNet,它输入原始点云数据,输出为一个3∗3 的旋转矩阵
1.输入的点云为(x,y,z),需要一个3*3的旋转矩阵
2.将点云映射到k维的冗余空间,学习一个k*k的旋转矩阵,由于旋转矩阵具有正交性,因此校对需要引入一个正则化的惩罚项,希望尽可能接近于一个正交矩阵
三、PointNet分类网络
将以上这些变换的网络和pointnet结合起来,就可以得到PointNet分类网络。
首先输入一个n3的矩阵,先做一个输入的矩阵变换,T-net 变成一个n3的矩阵,然后通过MLP把每个点投射到64高维空间,在做一个高维空间的变换,形成一个更加归一化的64维矩阵,继续做MLP将64维映射到1024维,在1024中可以做对称性的操作,就maxpooling,得到globle fearue,1024维度 ,通过全连接网络生成k (分类)。
原文链接:https://blog.csdn.net/cg129054036/article/details/105456002
四、PointNet分割网络
可以定义为对每个点的分类问题,通过全局坐标是没法对每个点进行分割的,简单有效的做法是,将局部单个点的特征和全局的坐标结合起来,实现分割的功能。最后输出m类相当于m个score:(将单个点和总体的特征连接到一起,判定在总体中的位置,来决定是哪个分类)
原文链接:https://blog.csdn.net/cg129054036/article/details/105456002