3D目标框解耦方案梳理


本文对3D目标框解耦方案进行了梳理。

直接通过RGB图像预测3D目标框由于深度信息的缺失存在困难,但由于自动驾驶场景中关注的目标尺寸比较一致,可以通过借鉴2D-3D的一致性信息作为先验来提升模型效果。因此,存在不同的3D目标框解耦方案,以下将对相关论文进行简单梳理。

2017—CVPR—Deep3DBox—3D Bounding Box Estimation Using Deep Learning and Geometry

[Paper] [Code]
本文认为3D框的透视投影与其2D检测窗口联系紧密,根据目标的2D框及周围像素估计目标的3D框和姿态,因此非常依赖2D框的精度。
针对size回归,计算了每个类别的均值,网络估计每个目标相对其类别的平均size的偏差;针对角度回归,本文提出MultiBin的方案回归local orientation;针对目标位置,得到上述信息后,通过最小二乘法最小化重投影误差进行计算。

Dimension

深度估计的变化很小,同一类别的size比较接近,并且不随目标的朝向变化而变化。得到目标的类别后,dimension实际上就基本能确定下来。
对于目标的size,使用L2 loss,计算如下

其中,$D^*$是目标框的真值,$\overline{D}$是固定类别的目标框均值,$\delta$是网络估计的相对于均值的偏差。

Orientation

仅从检测窗口中去估计相机坐标下的目标global orientation是不现实的。如下图所示,一辆沿直线行驶的车辆,尽管其global orientation没有发生变化,但其local orientation一直在发生变化导致外观上看起来很大的不同。仅从2D上的检测框范围内来确定其角度无法得到准确的结果,受到距离和角度两方面的影响。
image.png
因此,本文回归local orientation,local orientation和global orientation示意图如下图所示
image.png
本文提出了MultiBin的分解方案。首先,将方向角离散化,并将其分成了n个重叠的bin。对于每个bin,CNN网络估计输出的角度位于第i个bin内的置信概率以及为了得到输出角度,需要应用于该bin中心射线方向的residual rotation error(剩余旋转矫正)。residual rotation使用角度的正弦和余弦两个数值来表示。因此,每个bin的输出一共三个:$(c_i,cos(\Delta \theta_i),sin(\Delta \theta_i))$。
有效的正弦和余弦数值是通过在二维输入上应用L2 normalization 层得到的。
MultiBin方案的整体loss计算如下

$L_{conf}$等价于每个bin的置信度的softmax loss。
$L_{loc}$在每个覆盖了角度真值的bin之中最小化估计的角度与真值的差异。由于bin之间存在重叠,每个包含真值的bin都需要估计正确的角度,其计算如下

其中,$n_{\theta}$是覆盖了角度真值$\theta$的bin的数量,$c_i$是bin $i$的中心的角度,$\Delta \theta_i$是在bin i的中心上施加的变化。

Location

没有直接回归位置,得到目标的3D dimension和orientation以及2D检测框后,使用最小二乘来最小化重投影误差以计算目标相对于相机的平移T。
image.png
总体的loss组成如下

2019—AAAI—MonoGRNet—MonoGRNet: A Geometric Reasoning Network for Monocular 3D Object Localization

[Paper] [Code]

MonoGRNet predicts 3D object localizations from a monocular RGB image considering geometric reasoning in 2D projection and the unobserved depth dimension.
MonoPair

本文核心是将3D定位问题解耦成几个循序渐进的子问题,这些子问题只需要RGB数据就能解决。
截屏2022-11-26 10.30.19.png

3D loc

本文将3D 定位任务ABBox-3D 定位$B_{3d}$分解成四个渐进式的子任务。
首先,检测3D框的2D 投影框$B_{2d}$的中心$b$和尺寸$(w,h)$。
然后,通过预测深度$Z_c$和3D中心点的2D投影点$c$定位3D中心点$C$
最后,基于局部特征回归相对于3D中心点的局部角$O$
定位任务可描述为

截屏2022-11-26 19.54.32.png
分别回归2D框的中心点$b$和3D框在2D图像上的投影$c$,由于透视变化,两个点通常不会重合。
首先回归$c$,然后基于估计的深度$Z_c$反投影到3D空间。

因此,3D定位问题就能转化为一个2D关键点定位任务进行求解。

IDE(Instance-level depth estimation)

每个grid预测距离其在一定距离阈值内最近的实例的深度,距离更近的目标解决遮挡的问题。
截屏2022-11-26 17.23.20.png
IDE模块包括区域深度的粗略回归,不考虑目标的尺度和特定的2D位置;和一个细化阶段,依赖2D边界框来精确提取目标所占区域编码的深度特征。
截屏2022-11-26 19.48.52.png
粗略回归的特征图小,对于目标的实际位置没有那么敏感,负责回归粗略的深度偏移$Z_{cc}$;对齐的特征回归

3D Box Corner Regression

这个子网回归局部坐标系下的八个角点,局部坐标系是参考Deep3DBox构建的

loss

2D detection loss

目标置信度的训练使用的是softmax cross entropy,2D bounding box回归使用的是masked L1 distance loss

Instance Depth loss

L1 loss

3D localization loss

L1 loss

Local Corner Loss

Joint 3D Loss

预测应当是一个整体,各个part之间也要建立一定的联系。我们将joint 3D loss表示为相机坐标系的角点坐标的距离之和

2019—CVPR—CenterNet—Objects as Points

[Paper] [Code]

2D Detection

CenterNet采用关键点回归的思路,首先先生成一个关键点的heatmap,并使用Gaussian Kernel对其splat

其中,$\sigma_p$是目标大小自适应的标准偏差。(如果同一个类别的Gaussian重叠了,取每元素的最大值)

对于heatmap,训练的目标是使用focal loss减少惩罚的像素级别的logistic regression

其中,$\alpha$和$\beta$是focal loss的超参数(论文中设置的都是$\alpha=2$和$\beta=4$),N是图像的关键点数量。

为了恢复由输出步幅引起的离散化误差,对每个中心点增加了一个local offset。所有类别共享一个预测的offset,使用L1 loss进行训练(这个监督只对关键点的位置$\widetilde{p}$起作用,其他位置都忽略)

令$(x_1^{(k)}, y_1^{(k)}, x_2^{(k)}, y_2^{(k)})$是类别$c_k$目标$k$的bounding box,其中心点位于

对每个目标$k$回归其size

为了限制计算开销,对每个中心点使用L1 loss进行简单的size预测

总的训练目标

论文中设置$\lambda_{size}=0.1$和$\lambda_{off}=1$。

在推理阶段,将points组合成boxes,令$\hat{P}_c$是类别$c$检测出的$n$个中心点$\hat{P}=\{(\hat{x_i}, \hat{y_i}) \}_{i=1}^n$的set 。每个关键点的位置由一个整数坐标$(x_i, y_i)$给出。用关键点数值$\hat{Y}_{x_iy_ic}$作为检测置信度的衡量,可以得到bounding box的位置

其中,$(\delta\hat{x}_i,\delta\hat{y}_i)=\hat{O}_{\hat{x}_i,\hat{y}_i}$是偏移量的预测,$(\hat{w}_i,\hat{h}_i)=\hat{S}_{\hat{x}_i,\hat{y}_i}$是目标框size的预测。

所有的输出都直接从关键点预测给出,不需要基于IoU的NMS或是其他后处理。

3D Detection

3D dimension

使用绝对度量的L1 loss训练3D box的size

depth d

depth很难直接回归,因此我们参考的Depth map prediction输出变换,预测

其中,$\sigma$是sigmoid函数。
在原始的深度上进行sigmoid变换后,使用L1 loss计算损失

orientation

orientation同样很难直接回归,参考Deep3DBox,使用in-bin回归将方向表示为两个bin。方向回归使用8-scalar encoding,每个bin四个标量,其中两个用于softmax分类,剩下两个回归in-bin offset的角度的正弦和余弦值。
分类使用softmax进行训练,角度值使用L1 loss进行训练

其中,$a_i=(sin(\theta-m_i), cos(\theta-m_i))$

预测的方向$\theta$从8-scalar encoding中解码

其中,$j$是分类score最大的bin的索引

2020—CVPR—CenterPoint—Center-based 3D object detection and tracking

[Paper] [Code]
CenterPoint是一个两阶段的架构。第一个阶段预测class-specific的heatmap、目标框的size、亚体素位置细化(sub-voxel location refinement)、旋转和速度,所有的输出都是密集预测。第二个阶段在第一阶段的预测结果之上预测类别不知(class-agnostic)的置信度得分和目标框细化。

Stage 1

heatmap

heatmap使用Gaussian核对真值中心点进行展开,增大真值的比例,使用focal loss进行训练。高斯核半径设置为$\sigma=max(f(wl),\tau)$,其中$\tau=2$是允许的最小的高斯半径,$f$是CornerNet中定义的半径函数。

loc

sub-voxel location refinement $o$减少了backbone体素化和striding的量化误差

height

地面上高度帮助定位目标的3D位置,并添加地图投影中丢失的海拔信息。

Orientation

使用角度的正弦和余弦进行回归。

Stage 2

class-agnostic confidence score prediction

使用目标框与相应真值框的3D IoU引导的目标分数$I$
$I=min(1,max(0,2\times IoU_t-0.5))$
使用BCE loss进行训练

2020—MonoPair

截屏2022-11-17 10.11.04.png
一共11个分支,分为三个部分,2D检测、3D检测和成对约束。

  • 2D检测
    • heatmap用于关键点的定位和分类,参考的是centernet
    • offset输出目标位置相对于目标框中心点的偏移
      • L1 loss
    • dimension输出2D目标框的size $[w_b,h_b]$
      • L1 loss
  • 3D检测
    • depth
      • 参考Depth Map Prediction from a Single Image using a Multi-Scale Deep Network。
      • transforming the absolute depth by inverse sigmoid transformation z = 1/σ(ˆz) − 1
      • L1 loss
    • depth uncertainty$\sigma$
    • offset
      • L1 loss
    • offset uncertainty$\sigma$
    • dimension
      • 直接回归$[w,h,l]$
      • L1 loss
    • rotation
      • 参考centernet的local orientation 而非相机坐标系下的global orientation
      • represent the orientation using eight scalars, where the orientation branch is trained by M ultiBin loss.
  • 成对约束
    • distance
      • 预测了两目标之间的3D坐标距离,此时还有两个目标预测得到的3D坐标。(这里如何使用的没有看明白)
    • distance uncertainty$\sigma$

在2D检测中得到的keypoints中两两临近的点构成的空间约束,以两个kepoints之间的距离作为直径去画圆,当圆中有包含有其他object点时就直接忽略该约束。
本文另一方面的贡献在于uncertainty。

2021—CVPR—FCOS3D

2021—MonoFlex

作者将3D框分为4个子任务进行求解

  1. 对每一类检测目标,均给出先验信息$[h,w,l]$,通过网络输出偏差得到最终的结果

截屏2022-11-16 21.11.31.png

  1. 估计深度信息z

深度信息z的最终值由两部分组成,一部分是由网络直接预测得到的z,一部分是由相机小孔成像相似三角形得到的z,两者通过各自的概率信息,融合得到最终的z值。

  1. 利用深度信息z与长方体的中心在二维图像上的像素坐标结合相机投影公式得出长方体的中心在相机坐标系下的坐标值
  2. 利用网络直接回归得到角度信息

通过在 2D 图像上设定 10 个关键点: 3D 框的 8 个角点、顶部中心和底部中心,将 10 个关键点分为 3 组,即中心垂直线和两个对角垂直边界线 (h1-h3 和 h2-h4) 的平均,每组可以独立产生 2D 的高度 h,再结合网络预测得到的物体实际高度 H ,根据上述的关系式独立估计中心深度。最终结合 3 组估计的深度获得更好的深度预测结果。
截屏2022-11-16 17.07.22.png


文章作者: Jingyi Yu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jingyi Yu !
  目录