首页 > 其他分享 >PartA2

PartA2

时间:2024-03-22 17:46:14浏览次数:28  
标签:候选框 特征 PartA2 Anchor PointRCNN 3D

PDF: 《From Points to Parts: 3D Object Detection from Point Cloud with Part-aware and Part-aggregation Network》
CODE: https://github.com/sshaoshuai/PartA2-Net https://github.com/open-mmlab/OpenPCDet

一、大体内容

PartA2在PointRCNN基础上进行了扩展和改进,使得3D目标检测效果更好,同样分为两个阶段(Part Aware和Part Aggregation),第一阶段Part Aware首次充分利用真实3D框中信息,同时预测高质量的3D候选框以及物体内零件精确的位置,零件精确的位置和获选框特征通过RoI-aware point cloud pooling模块进行聚合,使得每个获选框的几何定特征编码更加丰富。第二阶段Part Aggregation通过探索物体内零件的空间位置关系来进一步预测物体置信度以及物体3D框。PartA2在KITTI数据集上的3D检测排名第一,且推理速度达到14FPS(截至20198月15日)。

二、贡献点

从两个阶段对比下与PointRCNN的区别,其实就大致是PartA2的改进点。

  • BackBone
    PointRCNN采用PointNet++直接对点进行特征学习,
    PartA2采用自定义的稀疏卷积网络,先把点划分成体素后再进行提取,提取特征更加高效

  • 获选框生成
    PointRCNN基于Anchor-free得到获选框,利用到了框内的点信息
    PartA2提供Anchor-based和Anchor-free两种方式得到获选框,不仅用到点信息,还用到了点到框角点的相对位置信息,原文称为free-of-charge intra-object part information

  • 区域点池化
    PointRCNN基于Point Cloud Region Pooling对获选框中所有点进行特征聚合
    PartA2提出区域感知池化RoI-Aware Point cloud Pooling,无点的体素作为0值也考虑进去(可区分有歧义的框),使得其特征更加丰富

  • 第二阶段特征提取
    PointRCNN通过坐标变换以及PointNet++进行特征编码,
    PartA2通过坐标变化以及融合物体内部部件位置特征,通过稀疏卷积进行特征编码,可以获取更丰富的几何特征,预测的置信度和框更加准确

三、细节

3.1 BackBone

不同于PointRCNN直接采用PointNet++提取点特征,PartA2设计了一套基于稀疏卷积和反卷积的编解码网络,作为BackBone用于特征提取。如下图所示输入特征由一系列具有步长2的稀疏卷积层进行8倍下采样,然后通过稀疏反卷积逐渐上采样到原始分辨率,学习到体素点的特征表示。

实验也表明这种BackBone效果要好很多。

提取特征时先将点空间划分成体素,每个非空体素以体素内所有点特征的均值作为特征,然后将该体素作为一个新的点,然后再输入到设计好的BackBone。在KITTI数据空间(70m x 80m x 4m)选择体素空间大小为(5cm x 5cm x 10cm),由于采样精度比较高,如下图所示体素化后可以大致逼近原数据样本。

3.2 前景点(foreground points)和 物体内部件(intra-object part)

BackBone输出的特征经过一个分支用于预测intra-object part,一个分支用于分割出foreground points。

  • foreground points
    这个和PointRCNN一样,在训练时,如果点在真实标注框内部,则将这个点作为前景点,由于前景点和背景点数量不一,同样采用Focal Loss进行训练。

  • intra-object part
    这里引入物体内部件相对位置信息,主要是考虑到其可靠性: 不同于2D目标检测,可能会出现遮挡,3D框完全包含物体,因此物体内点相对于框的位置是可靠的。文中以\((x^p, y^p, z^p)\)来表示点的相对位置信息,具体计算参考下式,

    其中\((x^c, y^c, z^c)\)表示框的中心,\(h, w, l, \theta\)表示框的高、宽、长及长度,这样计算的目的主要是保证\((x^p, y^p, z^p)\)的范围属于[0, 1],第一步相当于是把框中心作为原点,计算出点相对于原点的偏移量,第二步除以\(w, l, h\)将其转换到[-0.5, 0.5]范围,然后加上0.5就可以将范围转变到[0, 1]。,加上0.5后也相当于将框左下的顶点移动到坐标原点。

训练时采用二值交叉熵作为损失函数。

3.3 3D候选框生成

作者这里提出了基于Anchor-Free和Anchor-Based的生成方法,分别记为PartA2-free和PartA2-anchor,其主要区别在于用于预测的特征不同,基于Anchor-based的方法类似于SECOND,将编码后的特征转到BEV视角,基于Anchor-free的方法是编解码后的特征,因为经过解码器后有更多的语义信息。

这两种方式都有各自的优缺点,所提出的Anchor-free略通常是轻量级的并且具有记忆效率,因为它不需要评估3D空间中的每个空间位置处的大量Anchor,所以其内存占用少并且对大小较小的对象(如单车和行人)效果较好。第二种Anchor-based的候选框生成策略通过用其针对每个类的预定义锚点覆盖整个鸟瞰特征图来实现略高的召回率但具有更多的参数并且需要更多的GPU内存,其对于大小较大的对象效果较好。

3.3.1 PartA2-free

在骨架网络后接入一个分支用于预测3D候选框,因为直接回归范围较大,因此这里还是采用基于Bin的方式来进行处理,对\(x, y, \theta\)首先在XY平面以兴趣点作为坐标原点,计算出中心点与原点的偏移,看其属于哪一个区域,然后再计算其到这个区域端点的偏移量,而\(z,h,w,l\)直接采用回归损失。

因此对于\(x, y, \theta\)有分类损失和回归损失,而\(z, h, w, l\)只有回归损失。

  • x, y

    S表示范围,\(\delta\)表示步长。

  • \(\theta\)

  • 损失函数

3.3.2 PartA2-anchor

类似于上一篇PV-RCNN中提到的,经过BackBone的编码器之后,特征图大小被下采样8倍,然后投影到BEV视角,然后每个特征像素依据参照每个类别的平均大小,还有0和90度两个方向,共得到
\(2 \times \frac{L}{8} \times \frac{W}{8}\)个Anchor,基于这些Anchor回归出3D候选框。其损失函数如下,其中带a上标的表示预测得到的框,带gt上标的表示真实框的数据。

3.4 RoI-Aware Point cloud Pooling

原先PointRCNN中直接对候选框中的所有点借助PointNet++进行特征聚合,作者发现会丢失一些几何特征,并且会产出歧义性。歧义性的解释可以参考下图,两个虚线框表示不同的候选框,但他们具有相同的特征点,对后续回归和分类会产生影响。

RoI-aware point cloud pooling认为特征提取时不仅保留非空特征,空的特征也作为0保留,可以解决歧义性而且具有更丰富的特征。大体可以分为两步:

  • 体素划分
    首先将候选框划分为规则的体素格子
  • 特征提取
    每个体素格子中所有点进行平均,即平均池化,该池化方法在很大程度上保留了候选框中几何特征。而其他方法则仅保留一部分语义特征。

3.5 第二阶段的特征融合及预测分支

3.5.1 特征融合


前面ROI-aware point cloud pooling提取特征后,另外经过BackBone提取的语义特征再进行最大池化操作,最后在进行特征融合得到最终特征并输入到后续网络用于预测置信度和3D框。

3.5.2 预测置信度和3D框


对于每个3D候选框,还需要对融合的特征进一步提取,本文中时堆叠了几个3D稀疏卷积层,核大小为3 x 3 x 3,稀疏卷积层中间还插入了核大小为 2 x 2 x 2步幅也为2的最大池化层对特征进行降采样,可以节省计算成本和参数量,展开成一个向量后再经过两个分支,分别用于预测置信度和3D框。

四、效果

文中演示了很多消融实验结果,感兴趣的可以参考原文,这里只给出在KITTI数据集上的效果

标签:候选框,特征,PartA2,Anchor,PointRCNN,3D
From: https://www.cnblogs.com/xiaxuexiaoab/p/18085585

相关文章