Pointpillars(一)模型结构

1.模型结构

  Pointpillars接收点云作为输入,计算输出带方向的3D目标框,模型结构可以分为三个部分:

  (1)Pillar Feature Net:将输入的点云转换为稀疏伪图像;

  (2)2D Backbone:使用2D的CNN Backbone处理伪图像,得到2维特征图;

  (3)SSD Detection Head:使用SSD检测头,检测和回归3D边界框。

1.1 Pointcloud to Pseudo-Image

       为了使用2D CNN backbone,首先需要将3维点云信息转为2D的伪图像。

(1)针对一帧输入点云图,在鸟瞰图下对平面进行网格化分割,z方向不进行分割,得到H\times W= P个柱形分割,这样分割出来的柱子叫做pillar;

(2)为了使最终得到整齐的特征图,提取非空的P个pillar,在每个pillar中采样N个点,当点数大于N时进行随机采样,当点数小于N时则用0补齐,论文中取N= 32;

(3)对柱子中的每个点取(x,y,z,r,x_{c},y_{c},z_{c},x_{p},y_{p})9个维度,其中(x,y,z)为该点的坐标值,r为反射率,(x_{c},y_{c},z_{c})为该点到pillar内所有点的平均值的距离,(x_{p},y_{p})为该点到网格中心点的距离,这样每个点都编码成了D= 9个维度。

        这样一个点云样本就表示成(D,P,N)尺寸的张量,其中P= H\times W为pillar的个数,D= 9为每个点的维度,N为每个pillar中点的个数,得到点云的pillar表示的张量。

 (4)得到点云的pillar表示的张量后,需要对其进行特征提取,使用简化的PointNet,对每个pillar中的点使用多层感知机(线性全连接层+BN+Relu)从D维学习出C维,张量尺寸变为(C,P,N),论文中C= 64,随后对每个pillar使用Max Pooling,得到(C,P)尺寸的特征图,。

 (5)对(C,P)尺寸的特征图,P展开为(H,W),得到(C,H,W)形式的特征表示。

1.2 Backbone

    Backbone包含2个子网络:

(1)a top-down network ,用于生成不同尺度的特征图,网络由一系列的Block(S,L,F)组成,S为stride,L为3×3的卷积,F为输出通道,每个Block都包含BatchNorm和ReLU;网络包含3个Block:Block1(S,4,C),Block2(2S,6,2C),Block3(4S,6,4C)。

(2)a second network,通过上采样(deconv)和拼接操作得到特征图,top-down网络的每个Block的输出都会进行上采样,Up(S_{in},S_{out},F)S_{in}为输入stride、 S_{out}为输出stride,F为输出通道,top-down的每个Block对应的上采样操作:Up1(S,S,2C),Up2(2S,S,2C),Up3(4S,S,2C),使用2D转置卷积得到上采样特征图,随后对特征图进行BN和ReLU操作,所有特征图拼接,得到最终的特征图。

1.3 Detection Head

     使用SSD作为检测网络。将预选框与ground truth进行2D IoU 匹配,Bounding box的高和海拔不参与匹配,但会对高和海拔进行回归。

2. 损失函数

    采用与SECOND相同的损失函数,包括定位回归损失L_{loc}、heading损失L_{dir}、分类损失L_{cls}

2.1 位置回归损失  

   Ground truth boxes和anchors定义:(x,y,z,w,l,h,\theta ),表示box的位置、长宽高和heading方向。定位回归残差定义:

   

     gt表示ground truth,a表示模型预测结果,d^{a}=\sqrt{(w^{a})^{2}+(l^{a})^{2}},定位损失:

2.2 heading损失

 heading损失使用离散方向softmax分类损失。

2.3 目标分类损失

 目标分类损失使用focal loss:

p^{a}为一个anchor的类别概率,设置\alpha = 0.25\gamma = 2

2.4 损失函数

最终的损失函数为:

 N_{pos}为激活的anchor数,设置\beta_{loc} = 2\beta _{cls}=1,\beta _{dir}=0.2

3.训练策略

    训练优化器:Adam optimizer

    学习率:初始学习率为2*10^{-4},每15个epoch学习率衰减,衰减因子为0.8。

    训练总epoch:160

   

  

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PointPillars是一种基于点云的目标检测算法,其主要应用于自动驾驶领域。该算法的核心思想是将点云数据转换为三维网格数据,并使用卷积神经网络(CNN)来检测目标。相比于传统的基于图像的目标检测算法,PointPillars在保留场景空间信息的同时,大幅提高了目标检测的准确度和效率。 具体来说,PointPillars的算法流程如下:首先,将点云数据转换为三维网格数据,然后使用CNN对每个网格进行分类并预测目标的边界框。最后,通过非极大值抑制(NMS)算法来筛选出最终的目标检测结果。在该算法中,点云的密度以及对边界框的准确度影响较为显著,因此PointPillars通过密集采样和点云旋转等方法优化了点云数据的输入。 相比于基于图像的目标检测算法,PointPillars的优势主要体现在以下方面:首先,该算法能够准确地捕捉目标的三维空间信息,可以有效地解决目标遮挡或者遮挡较多的情况;其次,该算法的检测效率较高,可以实现实时检测,并且其能够在运行过程中进行端到端的训练和优化;最后,该算法具有较强的鲁棒性和泛化能力,可以适应不同场景下的目标检测需求。 总之,PointPillars作为新兴的目标检测算法之一,具有较高的应用潜力和研究价值,其可以改善自动驾驶等领域的目标检测能力,并促进相关技术的进一步发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值