一、CenterFusion 概述
- 这个项目,重点研究毫米波雷达和相机传感器融合的方法
- 利用毫米波雷达传感器数据和相机传感器数据进行 3D 目标检测
- 并在 NuScenes 数据集上面进行评估
- CenterFusion 网络架构:
CenterFusion 网络架构首先利用全卷积骨干网提取目标物体中心点的图像特征,再回归到物体的其它属性,如三维位置、方向和尺寸,并获得初步的 3D Box
截锥关联模块将雷达检测结果与对应目标中心点关联(雷达检测结果映射到图像平面)并生成雷达特征
然后将图像和雷达特征连接起来, 再二次回归到目标属性,如深度、旋转以及速度等三维属性来细化初步的 3D Box
该网络架构主要可以分为两个部分分析,一个是上面一行的图像目标检测,另一个是下面一行的雷达点云数据处理。
二、图像目标检测
CenterNet 中主要提供了三个骨干网络 ResNet-18 (ResNet-101)、DLA-34、Hourglass-104
CenterFusion 网络架构在对图像进行初步检测时,采用 CenterNet 网络中修改版本的骨干网络 DLA(深层聚合)作为全卷积骨干网,来提取图像特征,因为 DLA 网络大大减少了培训时间,同时提供了合理的性能
再回归图像特征来预测图像上的目标中心点,以及目标的 2D 大小(宽度和高度)、中心偏移量、3D 尺寸、深度和旋转
主要回归头的组成:256 个通道的 3×3 卷积层、1×1卷积层。这为场景中每个被检测到的对象提供了一个精确的 2D 边界框以及一个初步的 3D 边界框
CenterNet 原理:
第 1 步:以图像
I
∈
R
W
×
H
×
3
I \in R^{W×H×3}
I∈RW×H×3作为输入,生成预测关键点热图
Y
∈
[
0
,
1
]
W
R
×
H
R
×
C
Y \in [0,1]^{\frac W R × \frac H R × C}
Y∈[0,1]RW×RH×C其中
W
W
W和
H
H
H是图像的宽度和高度,
R
R
R是下采样比,
C
C
C是物体类别的数
意思是将一张
W
×
H
W×H
W×H的图片作为输入,然后通过下采样(池化)生成
W
R
×
H
R
\frac W R × \frac H R
RW×RH的关键点热图,图中的每一个像素的热值在 [0,1] 之间。
第 2 步:再以
Y
^
=
1
\hat Y = 1
Y^=1作为输出的预测
意思是检测到一个以图像 ( x , y ) (x,y)(x,y) 为中心的 c cc 类目标
对于每个中心点,还预测了一个局部偏移量,以补偿由骨干网输出步数引起的离散误差
第 3 步:使用高斯核从地面真值 2D 边界框生成地面真值热图
Y
∈
[
0
,
1
]
W
R
×
H
R
×
C
Y \in [0,1]^{\frac W R × \frac H R × C}
Y∈[0,1]RW×RH×C
这是为了与模型预测的结果进行比较,从而计算 loss 值(损失)
第 4 步:对于图像中 c cc 类的每个边界框中心点
p
i
∈
R
2
p^i \in R^2
pi∈R2,在
Y
:
,
:
,
c
Y_{:,:,c}
Y:,:,c上生成一个高斯热图:
Y
q
c
=
m
a
x
i
e
x
p
(
(
p
i
−
q
)
2
−
2
σ
i
2
)
Y_{qc}=\ \mathop{max}\limits_{i}\ exp( \frac {(p_i−q)^2}{−2σ_i^2} )
Yqc= imax exp(−2σi2(pi−q)2)
其中
σ
i
\sigma_i
σi是一个尺寸自适应标准差,根据每个对象的尺寸控制热图的大小,采用全卷积码-解码器网络对
Y
^
\hat Y
Y^进行预测
第 5 步:使用单独的网络头直接从检测到的中心点回归对象的深度、尺寸和方向,来生成 3D Box
在回归模块中
深度被作为额外的输出通道
D
^
∈
[
0
,
1
]
W
R
×
H
R
\hat D \in [0,1]^{\frac W R × \frac H R}
D^∈[0,1]RW×RH,因为使用了 sigmoidal 逆变换,并将其应用到了原始深度域
方向被编码为两个容器,每个容器中有 4 个标量
给定带注释的对象
p
0
,
p
1
,
.
.
.
p0,p1,...
p0,p1,...在一幅图像中,训练分类损失,即 focal loss 定义如下:
L
k
=
1
N
∑
x
y
c
{
(
1
−
Y
^
x
y
c
)
α
log
(
Y
^
x
y
c
)
Y
x
y
c
=
1
(
1
−
Y
x
y
c
)
β
(
Y
^
x
y
c
)
α
log
(
1
−
Y
^
x
y
c
)
otherwise
\mathrm{L}_{\mathrm{k}}=\frac{1}{\mathrm{~N}} \sum_{\mathrm{xyc}}\left\{\begin{array}{ll} \left(1-\hat{\mathrm{Y}}_{\mathrm{xyc}}\right)^{\alpha} \log \left(\hat{\mathrm{Y}}_{\mathrm{xyc}}\right) & \mathrm{Y}_{\mathrm{xyc}}=1 \\ \left(1-\mathrm{Y}_{\mathrm{xyc}}\right)^{\beta}\left(\hat{\mathrm{Y}}_{\mathrm{xyc}}\right)^{\alpha} \log \left(1-\hat{\mathrm{Y}}_{\mathrm{xyc}}\right) & \text { otherwise } \end{array}\right.
Lk= N1xyc∑⎩
⎨
⎧(1−Y^xyc)αlog(Y^xyc)(1−Yxyc)β(Y^xyc)αlog(1−Y^xyc)Yxyc=1 otherwise
其中
N
N
N为对象数量
Y
∈
[
0
,
1
]
W
R
×
H
R
×
C
Y \in [0,1]^{\frac W R × \frac H R × C}
Y∈[0,1]RW×RH×C为标注对象的地面真值热图
α
\alpha
α和
β
\beta
β为焦损超参数
三、雷达点云处理
- 首先,需要搞清楚雷达点云检测的是径向深度和目标实际速度的不同,如图:
对于目标 A,车辆坐标系内速度与径向速度相同
(
v
A
)
(v^A)
(vA),另一方面,对于目标 B,雷达报告的径向速度
(
v
r
)
(v_r)
(vr)与目标在车辆坐标系中的实际速度
(
v
B
)
(v^B)
(vB)存在差异
支柱扩张:
-
在截锥关联之前,有一个支柱扩张模块,对雷达点云进行预处理:将每个雷达点云扩展成一个固定尺寸的柱状,如下图所示:
-
这是为了解决每个雷达点云在截锥关联中高度信息不准确的问题
截锥关联 -
第 1 步:利用图像平面中对象的 2D 边界框及其估计深度和大小,为对象创建一个 3D 感兴趣区域(RoI)截锥,如下图所示:
有了截锥对象,缩小了需要检查关联的雷达点云探测范围,因为这个截锥之外的任何点云都可以忽略
如果该 RoI 内存在多个雷达检测点云,则取最近的点作为该目标对应的雷达检测点云
第 2 步:对于每一个与物体相关的雷达检测,我们生成三个以物体的二维包围框为中心并在其内部的热图通道,热图的宽度和高度与物体的 2D 边界框成比例,并由参数 α 控制
其中热图值是归一化对象深度(d),也是自中心坐标系中径向速度
(
v
x
)
(v_x)
(vx)和
(
v
y
)
(v_y)
(vy)的x和y分量:
F
x
,
y
,
i
j
=
1
M
i
{
f
i
∣
x
−
c
x
j
∣
≤
α
w
j
and
∣
y
−
c
j
i
∣
≤
α
h
j
0
otherwise
F_{x, y, i}^{j}=\frac{1}{M_{i}}\left\{\begin{array}{ll} f_{i} & \left|x-c_{x}^{j}\right| \leq \alpha w^{j} \text { and }\left|y-c_{j}^{i}\right| \leq \alpha h^{j} \\ 0 & \text { otherwise } \end{array}\right.
Fx,y,ij=Mi1{fi0
x−cxj
≤αwj and
y−cji
≤αhj otherwise
i
∈
1
,
2
,
3
i∈1,2,3
i∈1,2,3是地图通道的特性,
M
i
M_i
Mi是一种规格化因素,
f
i
f_i
fi是特征值
(
d
,
v
x
或
v
y
)
(d,v_x或v_y)
(d,vx或vy)
c
x
j
c^j_x
cxj和
c
y
j
c^j_y
cyj是 j 对象的 x 和 y 坐标对象的中心点的图像,
w
j
w^j
wj和
h
j
h^j
hj是 j 对象的宽度和高度的 2D 边界框
第 3 步:两个物体的热图区域重叠,深度值较小的那个占优势,因为只有最近的物体在图像中是完全可见的,如下图所示:
第 4 步:生成的热图然后连接到图像特征作为额外的通道,这些特征被用作二次回归头的输入,以重新计算对象的深度和旋转,以及速度和属性
二次回归头由 3 个卷积层 (3×3 核) 和 1×1 卷积层组成,以产生所需的输出
最后一步是将回归头结果解码为 3D 边界框,3D Box 解码器块使用估计的深度、速度、旋转和二次回归头部的属性,并从主回归头部获取其他对象的属性