CenterPoint 论文笔记

Center-based 3D Object Detection and Tracking

CenterPoint CVPR2021

论文链接: https://arxiv.org/abs/2006.11275

一、 Problem Statement

三维世界中的对象不遵循任何特定方向,基于box-based的检测器难以枚举所有方向或将轴对齐的边界bounding box拟合到旋转的对象。 而且3D目标检测有以下三个挑战:

  1. 点云稀疏
  2. 输出的3D bounding box通常不与任何坐标轴对齐
  3. 3D目标具有广泛的大小,形状和比例

所以把2D推演到3D目标检测,症结所在就是轴对齐的二维bounding box不能很好地代表自由形式的三维对象。

二、 Direction

作者发现,2D和3D领域的连接主要问题出现在目标的表示形式,因此提出了two-stage keypoint detector,CenterPoint,也就是用一个点表示3D目标。

具体来说:

使用Lidar-based backbone(VoxelNet + PointPillar) + standard image-based keypoint detector + a light-weighted second stage to refine locations

三、 Methods

先来看一下CenterPoint整体的框架:

可以看到框架主要分为三个部分:

  1. 3D backbone
  2. Detection head
  3. Refinement head

1. 3D backbone

目前3D目标backbone一般采用voxel或者pointpillars。首先会把点云进行量化到regular bins。然你后使用point-based network提取bins中所有点的特征。紧接着使用3D encoder池化这些特征。Backbone网络的输出是一个map-view feature-map,维度为 M ∈ R W × L × F M \in \R^{W \times L \times F} MRW×L×F W W W是宽, L L L是长, F F F是通道数。

2. Detection head

当有了feature-map之后,就会紧接着到detection head。一般使用anchor-based detection head。但对于3D bounding boxes来说,它们有不同的大小和方向,因此拟合一个axis-aligned 2D box 到3D目标是困难的。 其次,在训练的时候,anchor-based 3D detector依赖2D Box IoU来进行目标匹配,为不同的类或不同的数据集选择正/负阈值会产生不必要的负担。因此作者提出用center point来表示3D目标。

对于CenterPoint Head,作者提出了两个分支:

  1. Center heatmap head
  2. Regression heads

对于第一个head,目的是在任何检测到的目标的中心位置生成一个heatmap peak。也就是说,要生成一个 K K K通道的heatmap Y ^ \hat{Y} Y^,对应于 K K K个类别。

在训练过程中,heatmap peak将通过将带标注的bounding box的三维中心投影到地图视图(map-view)中而生成的二维高斯曲线作为目标。然后使用Focal loss进行训练。因为目标在map-view视角是比在image-view中稀疏的。

如果直接使用标准的CenterNet进行训练,会导致非常稀疏的监督信号,大部分位置会被认为是背景。为了解决这个问题,作者通过扩大每个ground-truth 目标中心的Gaussian peak, 增大了target heatmap Y Y Y 的positive supervision。具体来说,就是把Gaussian radius设置为:
σ = m a x ( f ( w l ) , τ ) \sigma = max(f(wl), \tau) σ=max(f(wl),τ)
其中 τ = 2 \tau=2 τ=2是最小的Gaussian radius, f f f是radius function。

3. Regression head

除了中心点,还需要回归以下性质:

  1. a sub-voxel location refinement, o ∈ R 2 o \in \R^2 oR2
  2. height-above-ground, h g ∈ R h_g \in \R hgR
  3. 3D size, s ∈ R 3 s \in \R^3 sR3
  4. yaw rotation angle, ( s i n ( α ) , c o s ( α ) ) ∈ R 2 (sin(\alpha), cos(\alpha)) \in \R^2 (sin(α),cos(α))R2

sub-voxel location refinement是用来减少来自于backbone中voxelization 和 striding的量化误差。 height-above-ground有助于定位目标和增加遗漏的评价信息。方向性的预测使用了sine和cosine,作为一个连续的回归目标。结合以上信息,就可以得到一个3D bounding box。

在训练的时候,只有ground-truth中心会被监督,且使用的是L1 regression loss。

3. velocity head and tracking

作者也实验了速度预测和追踪。velocity estimation, v ∈ R 2 v \in \R^2 vR2。速度预测需要两帧数据,分别是当前的和过去的。然后预测这两帧的位置差别。Velocity estimation使用L1 loss进行监督。
在推理的时候,使用这个误差,把当前的检测和过去的进行关联。然后把当前帧的目标中心投影到前一帧,计算它们负的速度估计,然后进行最近距离的匹配。



CenterPoint把所有的heatmap结合起来,而且regression loss是在一个目标函数里面来同时进行优化,简化了3D目标检测。但是目前所有的性质,都是基于一个点,也就是目标的中心点来进行回归的。可能存在一个问题就是无法获取足够的信息来进行精确的定位。比如说,在自动驾驶中,传感器通常只能看到目标的一部分,或者一边,并不是它的中心点。因此基于这个问题,作者提出了第二个阶段: refinement stage with a light-weight point-feature extractor。

4. Refinement Stage

这一个部分从backbone的输出提取额外的point-feature。我们从预测的3D目标的每个面的每个中心提取一个point-feature。因为这个Bounding box的中心,上面和底部的中心在map-view中都是一个中心,因此作者就考虑了四个点和一个中心点。对于每个点,通过对backbone map-view输出的 M M M进行双线性插值来获取特征。 然后拼接这些extracted point-features 然后输入到MLP中。最后输出的是class-agnostic confidence score和box refinement。

对于class-agnostic confidence score,ground-truth bounding box为:
I = min ⁡ ( 1 , max ⁡ ( 0.2 × I o U t − 0.5 ) ) I = \min(1, \max(0.2 \times IoU_t - 0.5)) I=min(1,max(0.2×IoUt0.5))
其中 I o U t IoU_t IoUt t t h t_{th} tth predicted box和ground-truth box的IoU。然后最后使用binary cross entropy loss进行监督。
L s c o r e = − I t l o g ( I ^ t ) − ( 1 − I t ) l o g ( 1 − I ^ t ) L_{score} = -I_t log(\hat{I}_t) - (1-I_t)log(1-\hat{I}_t) Lscore=Itlog(I^t)(1It)log(1I^t)

其中 I ^ t \hat{I}_t I^t是预测的confidence score。

在推理的时候,直接使用第一阶段的class prediction。然后通过下面式子计算final confidence score:
Q ^ t = Y ^ t ∗ I ^ t \hat{Q}_t = \sqrt{\hat{Y}_t * \hat{I}_t} Q^t=Y^tI^t

对于Box refinement regression, 使用L1 loss进行监督。

四、 Conclusion

CenterPoint有三个优点:

  1. 与边界框不同,点没有固有方向。这大大减少了对象检测器的搜索空间,同时允许backbone学习对象的旋转不变性及其相对旋转的旋转等效性。
  2. Center-based表示形式,简化了下游任务,比如tracking。
  3. 基于点的特征提取使我们能够设计一个有效的两阶段细化模块,该模块比以前的方法快得多。

表现SOTA,而且比较简单易用。

Reference

  1. https://blog.csdn.net/Yong_Qi2015/article/details/108396159
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值