pointnet(pointnet++分割算法网络)

pointnet(pointnet++分割算法网络)p id main toc strong 目录 strong p 一 导言 二 PointNet 介绍 三 PointNet 网络结构 1 损失函数 2 正则化 四 PointNet 1 分层次的点集抽象层 五 PointNet 网络结构 1 点特征传播 2 分组方法 3

大家好,我是讯享网,很高兴认识大家。



 <p id="main-toc"><strong>目录</strong></p> 

讯享网

一、导言

二、PointNet介绍

三、PointNet网络结构

1、损失函数

2、正则化

四、PointNet++

1、分层次的点集抽象层

五、PointNet++网络结构

1、点特征传播 

2、分组方法

3、损失函数


        PointNet来自CVPR2017,是最早直接处理点云数据用于计算机视觉的模型,并运用于分割、检测、场景理解任务,PointNet++来自NIPS2017(这么高产吗?),作为PointNet的改进包括添加了多尺度提取特征等工作,优化PointNet网络架构。

        2017年之前大部分工作都是将3D点云体素化转为多个视角的2D图像,来进行常规的卷积神经网络,而没有直接使用点云进行提取特征。

        该论文提出只输入点的坐标信息,考虑通过法向量或者角度信息,来添加更多的维度。

(1)点云无序性解决:使用单一的对称函数,本文使用最大池化层,来解决无序性的问题。通过最大池化层方法可以保证所有点云没有先后顺序,聚合成全局点集特征。

对称函数:

        对于无序点云数据,定义一组函数,将点云映射到向量上,其中γ和h为MLP网络。

                                         

(2)特征对齐:考虑到网络预测结果对特定的变换(如刚性变换)具有不变性,提出通过T-Net变换矩阵提取特征并与输入feature进行乘法。

T-Net结构:


讯享网

T-Net与原特征乘法通道连接: 

                                        

(3)稳定性:由于模型可以拟合任何连续函数,而对于微小扰动不会影响函数拟合,通过在输入点云中引入一定噪声点,以及删除一定数据来增强网络的鲁棒性,提高预测效果。 

        PointNet网络的主干网络保持不变,对于分类和分割来说有不同的Head,对于分割头有更多不同层的特征进行融入,提高特征多维化。但是这网络特征提取方式过于简单,也造成对于局部的,特定场景的,效果可能有缺陷。

1、损失函数

        对于不同问题的损失,均可以表示为特定问题Head的损失加上特征变换矩阵的损失。

(1)分类问题:分类损失交叉熵

(2)分割问题:将分割问题转换为每个点的分类问题,再用交叉熵

(3)特征变换矩阵损失:理想情况下特征矩阵应该是正交矩阵,而实际的特征矩阵可能有所偏差,根据正交矩阵的性质,一定有,所以我们将特征变换矩阵损失表示为:                   

                                                      

2、正则化

        论文中考虑在第二次使用T-Net时添加正则化,来提高模型鲁棒性。

        解决了PointNet不能很好地提取局部特征的问题,并进一步提取不同尺度下的特征。

1、分层次的点集抽象层

        使用多个点集抽象层(SA层,Set Abstraction)来进行逐层特征提取,差别在于每一个SA模块的采样点和采样数量不一样,会逐层增大。

        SA模块包括三个关键层:Sampling Layer、Grouping Layer、PointNet Layer。

(1)采样层:从输入点中使用迭代最远点采样法(FPS)选择一组局部区域质心点。

        输入:

        输出:

FPS算法:

        首先,从输入点集中随机选择一个点作为第一个采样点。

        然后,从剩余点集中选择与已选采样点中最远的点作为下一个采样点

        重复第二步,直到采样足够多的点作为中心点。

(2)分组层:通过采样的质心以及邻近来构造局部区域集

        输入:点集(),质心集坐标()

        输出:

分组策略:

        Ball查询:搜索查询点半径内前K个点(本文使用方法)。Ball查询可以保证固定的区域规模,提高模型的鲁棒性。

        KNN:距离质心点最近的K个点。

(3)PointNet层:使用PointNet网络结构将局部区域编码为特征向量。输入为采样分组后的K个点集组,经过PointNet层只输出一个点集组。

        输入:

        输出:

        PointNet++网络将PointNet作为一个Cell模块,引入特征传播过程中,对于分割Head部分再次将PointNet作为模块进行多次提取。

1、点特征传播 

         特征传播部分,以往工作为了保证运用全部点,对所有点计算质心,并进行后续的分组操作,或者只做Pooling操作,来逐层降低点的数量,而PointNet++,采用基于距离的插值以及跨级跳跃连接工作(学到了残差连接带来特征融合的优势)。

        考虑对点特征传播到处,其中,通过在上坐标插值,实现特征传播。其中当前未知的值,为已知点的值,p为距离对权重的影响程度,k为对已知点集取k个点进行插值计算,给定p=2,k=3,为计算点权重,它与距离成反比,距离越近,对影响越大。

        分割Head处的Unit PointNet(单位点网) ,类似于神经网络中的1*1卷积网络,只改变通道数,通过应用共享的全连接层和ReLU层来更新各个点的特征向量,直到特征向量传播到原始点集。

2、分组方法

        由于点集的不同区域内的密度并不均匀,如果使用同样的分组方法,密集的数据难以推广到稀疏情况。本文针对这一问题,提出密度自适应层,针对不同的尺度的区域特征,采样密度变化。

(1)多尺度分组(MSG)

        应用不同尺度的分组层,根据PointNet来提取每个尺度的特征,再将不同尺度的特征连接形成多尺度特征。该方法在每个质心点的大规模邻域内运行PointNet,时间成本较高,效率慢。

(2)多分辨率分组(MRG)(本文提出)

        在局部区域密度较低时,第一向量不如第二向量可靠,即第一向量子区域更大,包含更稀疏的点,而第二向量加权更高。当局部区域密度较高时,第一向量提供更精准的细节信息。该方法相比于MSG,计算上更加高效,且避免最低级别大规模邻域中进行特征提取。

3、损失函数

        对于分类任务,需要使用交叉熵损失作为Loss。

        对于分割任务,使用Unit PointNet网络中的损失函数(即PointNet中的损失函数计算Loss)

        另外在论文中也使用了dropout进行神经元的抛弃。

小讯
上一篇 2025-06-11 16:42
下一篇 2025-04-19 19:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/160910.html