pointnet三维点云检测算法设计思路

pointNet检测算法直接对三维点云进行处理,根据需求的不同,可以将任务分为分类和分割。
pointNet的设计思路是基于三维点云的自身性质,三维点云是一系列的数据点。如图1所示,图中的纵坐标表示的是点云的数目,横坐标表示单个点云的维度,点云的维度由点云采集的设备所决定,一般包含点的空间坐标x、y、z及该点的灰度值R、G、B,有时还包含该点的强度等信息。但是在实际应用中,可以根据自己的需求选择自己需要的维度信息。这里为了方便阐述,以六个维度进行介绍,即点的空间坐标和颜色信息。
pointnet三维点云检测算法设计思路_第1张图片
图中(a)——>到(b)的变化是,交换了点云数据存储的位置,这样的交换不影响点云的相对位置关系,即不影响物体的表达。因此说明点云数据具有交换不变性。
因此,对点云的操作也需要具有同样的性质。常见的求最值、平均值等均具有该性质。
pointnet三维点云检测算法设计思路_第2张图片
但是从图2左图可以看出,直接对点云进行取最大值max操作获取到了每列的最大值(2,3,4),但是这种操作丢失了点云的很多几何信息,如果执行平均操作,则只得到了重心,如果执行最大值操作,则仅得到了最远点的边界值。
pointnet三维点云检测算法设计思路_第3张图片

为了不损失点云的关键信息,先把每个点映射到更高维的空间即进行升维操作,然后再进行对称性的特征提取操作。此时用一个高维空间的点表示一个三维的点,信息是冗余的。因为高维空间的信息是冗余的,我们在执行对称性操作时比如max操作,由于信息的冗余可以避免对称性操作造成信息丢失。对称性操作后点云依然保留了足够的特征信息。此时,再通过另外一个网络γ来获取点云中的特征信息。图3中h函数表示升维操作,g函数表示对称性操作,γ提取点云特征的网络。

又因为点云表示的应该是一个确定的物体,不受观察者的角度所影响,因此点云应该具有旋转不变性,如图4所示。
pointnet三维点云检测算法设计思路_第4张图片

输入一个n×3的点云,希望对这个点云做变换,生成另一组n×3的点云。这里通过T-net来实现,希望通过T-net网络的参数使得输入能够对齐,如图5所示。对齐是相对于rest of network来说的,即简化了点云的不同视角问题。点云的变换只需要3×3的变换矩阵,这里做一个推广,不仅在输入做旋转变换,也可以在网络的中间添加变换。下图中N×K的矩阵表示n×3的点云升维后的矩阵。这里对N×K的矩阵也做旋转变换,旋转矩阵K×K,如图6所示。
pointnet三维点云检测算法设计思路_第5张图片
pointnet三维点云检测算法设计思路_第6张图片
在优化的过程中,由于高维的优化相对比较困难,因此这里设计了惩罚函数,使得这个矩阵更加接近于正交矩阵。
基于以上两点设计直接对点云进行操作的pointnet检测算法。
总结:
pointnet的输入:n个点
输出:(1)用于分类时,输出k个score。这里的k表示分类的数目。
(2)用于分割时,输出n×k个score。其中n表示点云的个数,k表示点云有k个类别。

你可能感兴趣的:(算法解析,人工智能,python,算法)