论文地址(CVPR2021)
代码实现(PyTorch版)
《M3DSSD: Monocular 3D Single Stage Object Detector》
0 摘要
本文提出一种带有特征对齐及非对称非局部注意力机制的单目三维单阶段目标检测器(Monocular 3D Single Stage object Detector, M3DSSD)。现有的anchor-based单目三维目标检测方法存在特征不匹配的问题。为了解决这种问题,作者提出了一种两步特征对齐方法。第一步,进行形状对齐,使特征图的感受野聚焦到高置信度的预定义锚点上。第二步,使用中心对齐方法,让二维/三维中心特征对齐。此外,学习全局信息并捕捉长程关系往往是很困难的,但其对于物体的深度探测却至关重要。因此,作者提出了一种新颖的具有多尺度采样的非对称非局部注意力块来提取深度特征。本文提出的M3DSSD在KITTI数据集上,在三维目标检测任务和鸟瞰图任务中均取得了显著优于其它单目三维目标检测方法的性能。
1 简介
三维目标检测通过检测周围物体的位置和类别,使机器能够感知其周围的环境。因此,三维目标检测在那些与真实世界交互的系统中扮演着一个至关重要的角色,例如自动驾驶车辆和机器人。三维目标检测的目标是生成由尺寸、位置和方向参数化的三维边界框(3D Bounding Boxes, BBoxes),以定位其检测到的物体。大多数现存的方法严重依赖激光雷达,因为其能够生成具有精准深度信息的点云数据,从而加强了三维目标检测的准确性。然而,激光雷达昂贵的开销以及较短的使用时长使得其难以被广泛运用于实际中。尽管基于双目摄像头的检测方法也能够实现很好的检测结果,但其仍然不是一个便宜的选择,且双目摄像头的标定往往会存在困难。相比之下,单目摄像头性价比高,非常容易组装,可以为三维目标检测提供丰富的视觉信息。单目三维目标检测具有广泛的应用前景,如自动驾驶车辆以及配送机器人等。
由于成像过程中深度信息的缺失,单目三维目标检测是一项极具挑战的任务。为了解决这个问题,研究人员对单目图像的深度估计进行了各种尝试。*例如,利用CAD模型来辅助估计车辆的深度,采用预训练的深度估计模型来估计各种场景下的深度信息。*然而,这类方法在单目三维目标检测中直接或间接地使用了三维深度真值数据。同时,一些anchor-free的没有深度估计的方法在三维目标检测中也能达到较高的准确率。本文提出了一种针对单目图像的三维目标检测器,在KITTI基准上实现了SOTA的性能。
人类可以感知单目图像中的物体距离摄像头有多近,为何?当人脑解读一个物体的深度时,其会将该物体与其它所有物体以及周围环境进行比较,从而得到相对位置关系带来的视觉效果差异。对于相同大小的物体,越大,从固定的视角来看就越接近。受此启发,本文提出了一种新颖的非对称非局部注意力块(Asymmetric Non-local Attention Block, ANAB),将位置信息的响应计算为所有位置处特征的加权之和。同时还使用多个尺度下的局部特征和能够代表全局信息的特征来学习深度特征。多尺度特征能够减少计算开销。多尺度的注意图在空间分辨率采样和目标深度信息之间体现出了明显的相关性。
单阶段的单目三维目标检测方法会同时检测二维和三维目标边界框。然而,一些anchor-based的方法会存在二维和三维边界框的预测特征不匹配的问题。出现这种情况通常有两个原因:
- 特征的感受野在纵横比和大小上与锚的形状不匹配
- 通常被认为是特征图感受野中心的锚的中心,并不与物体的中心相互重叠
这种错位会影响三维目标检测的性能。因此,作者提出一种两步特征对齐方法,旨在对齐二维和三维目标边界框回归中的特征信息。第一步,作者根据预定义锚点的分类置信度分数获得目标区域信息。这使得特征图的感受野可以集中在具有高置信度分数的预定义锚点区域。第二步,作者使用二维/三维中心的预测结果来计算特征偏移量,可以减轻预测结果与其对应的特征图之间的差距。
本文创新点总结如下:
- 作者提出一种简单但却十分有效的单目三维单阶段目标检测方法(M3DSSD)。其在KITTI数据集上使用单个模型的汽车、行人和自行车目标类的单目三维目标检测方法,在三维目标检测和鸟瞰任务中均取得了SOTA的性能
- 作者提出一种新颖的带有多尺度采样的非对称非局部注意力块,用于深度特征提取,从而提高目标深度估计的准确性
- 作者提出一种两步特征对齐模块来克服感受野大小与锚点大小的不匹配,以及目标中心和锚点中心的不对齐
2 相关工作
为了从单目图像中估计深度信息,研究人员提出了许多不同的方法。例如,一些方法利用点云数据获取精准的三维空间信息。Pointfusion使用两个网络分别处理图像和原始点云数据,然后在特征层面进行融合。MV3D对稀疏点云进行多视角编码,并进行基于区域的特征融合。还有人利用激光雷达特征图与影像之间的点特征融合机制。激光雷达点云与图像融合的方法取得了较好的效果。但由于激光雷达传感器价格昂贵,目前还无法在实际中广泛应用。
车辆的CAD模型也常被用于单目三维目标检测。有些方法通过对关键点的几何推理来检测三维物体。具体来说,一个车辆的维度、朝向和关键点等信息可以被神经网络预测出来,然后再根据关键点在平面图像上的二维坐标和对应的CAD模型上的三维坐标进行简单的几何推理,得到车辆的深度信息和三维位置信息。DeepMANTA使用卷积神经网络预测车辆和预定义的三维模板之间的相似性,以及关键点的坐标和可见性。最后,给定物体关键点的二维坐标和对应的三维模板上的三维坐标,车辆的位置和朝向信息可以通过标准的二维/三维匹配来解决。然而,要收集各种车辆的CAD模型是非常困难的。
单目深度估计网络被运用于各种方法中,以估计深度或视差图。大部分的方法将估计出的深度图转换成点云表达形式,然后利用基于雷达点云的方法回归三维目标边界框。这些方法的性能严重依赖于深度图的准确度。D4LCN提出一种新的卷积,称为深度引导卷积,其中卷积的权重和感受野可以从估计的深度中自动学习。还有一些方法使用“预测的三维目标边界框的投影应该与预测的二维目标边界框一致”这种几何约束以确定目标的深度。得益于卷积神经网络在二维目标检测中的良好性能,越来越多的方法选择使用设计良好的卷积神经网络来直接预测三维目标边界框,用于单目三维目标检测。GS3D提出一种双阶段的目标检测框架,其中利用了表面特征提取来消除使用二维边界框带来的表示二义性问题。M3D-RPN提出一种anchor-based单阶段三维目标检测器,可以同时生成二维和三维目标边界框。其取得了较好的性能,但并没有解决特征错位的问题。
3 方法
本文提出的M3DSSD包含四个主要部分:骨干网络、特征对齐模块、非对称非局部注意力模块以及二维-三维检测头
3.1 骨干网络
作者使用DLA-102(Deep Layer Aggregation)作为骨干网络。为了适应性地增大网络感受野并增强特征学习能力,所有位于层次聚合连接中的卷积都被替换为了可变形卷积(DCN)。下采样比例设置为8,输出特征图大小为 256 × H / 8 × W / 8 256\times H/8\times W/8 256×H/8×W/8,其中H和W分别为输入图像的高度和宽度。
3.2 特征对齐模块
anchor-based方法通常会遇到特征不匹配的问题。一方面,如果特征的感受野在纵横比和大小方面与锚的形状不匹配,就会出现这种情况。另一方面,锚点的中心,通常被认为是特征感受野的中心,可能不会与物体的中心重叠。本文所提出的特征对齐包括形状对齐和中心对齐:
- 形状对齐旨在迫使特征图的感受野集中在分类置信度得分最高的锚点上
- 中心对齐用以减小物体中心上的特征与代表锚点中心的特征之间的差距
与以往的特征对齐方法通过两次回归应用于单阶段目标检测不同的是,本文提出的特征对齐方法可以应用于一次回归,具有更高的效率和自适应性。
形状对齐 我们首先可以根据分类结果得到图片的前景区域。然后,前景区域中的感受野可以集中在置信度得分最高的锚点上。这是有意义的,因为在所有位于相同位置的锚点中,置信度最高的锚点在NMS操作之后更有可能保留下来。为了实现形状对齐和中心对齐,我们使用了一个名为AlignConv的卷积。AlignConv类似于可变形卷积。不同之处在于,前者的偏移量是由预测结果计算而来的。正常的卷积可以看作是AlignConv的一个特例,其偏移量为0。与RoI卷积不同的是,作者在一个镜头中对齐感受野的形状或中心的位置。在以步幅S对特征图进行形状对齐时,定义核大小为
k
h
×
k
w
k_h\times k_w
kh×kw的卷积的偏移量
(
O
i
s
a
,
O
j
s
a
)
(O^{sa}_i,O^{sa}_j)
(Oisa,Ojsa)为:
O
i
s
a
=
(
h
a
S
×
k
h
−
1
)
×
(
i
−
k
h
2
+
0.5
)
,
\begin{equation} O^{sa}_i=(\frac{h_a}{S\times k_h}-1)\times(i-\frac{k_h}2+0.5), \end{equation}
Oisa=(S×khha−1)×(i−2kh+0.5),
O j s a = ( w a S × k w − 1 ) × ( j − k w 2 + 0.5 ) , \begin{equation} O^{sa}_j=(\frac{w_a}{S\times k_w}-1)\times(j-\frac{k_w}2+0.5), \end{equation} Ojsa=(S×kwwa−1)×(j−2kw+0.5),
其中 h a h_a ha和 w a w_a wa是置信度最高的锚的高度和宽度
中心对齐 中心特征对齐的目的是将物体中心处的特征对齐到代表锚点中心的特征上。如图所示:
从二维/三维中心回归得到的预测结果被用于计算步长为S的特征图上卷积的偏移量:
O
i
c
a
=
y
r
S
,
O
j
c
a
=
x
r
S
,
\begin{equation} O^{ca}_i=\frac{y_r}S,\space\space O^{ca}_j=\frac{x_r}S, \end{equation}
Oica=Syr, Ojca=Sxr,
x
r
x_r
xr和
y
r
y_r
yr分别是目标的二维/三维中心的预测值。如上图所示,当使用
1
×
1
1\times1
1×1卷积核对特征图进行中心对齐时,采样位置自适应地集中在物体中心。
3.3 非对称非局部注意力块
作者提出了一种新颖的非对称非局部注意力块,通过提取能够代表全局信息和长程依赖关系的深度特征来提高深度
z
3
d
z_{3d}
z3d预测的准确性。标准的非局部块在建立长程依赖关系方面很有效果,但其计算复杂度为
O
(
N
2
C
)
O(N^2C)
O(N2C),其中
N
=
h
×
w
N=h\times w
N=h×w。
h
,
w
,
C
h,w,C
h,w,C分别代表特征图的空间高度、宽度和通道数。与普通卷积相比,其在计算上是非常昂贵且低效的。因此,其应用受到了很大的限制。非对称金字塔非局部块通过金字塔池化减少特征描述子,从而减少了计算开销。然而,在同一特征图上进行金字塔池化可能会导致低分辨率的特征被高分辨率的特征所取代。换句话说,关于图像分辨率的计算成本存在冗余。因此,作者提出了非对称非局部注意力块(ANAB),其能够提取多尺度特征,以较低的计算成本增强特征学习能力。
如上图上方所示,作者利用key分支和value分支的金字塔特征来降低计算成本。上图下方表示带有注意力的金字塔平均池化(PA²)模块。特征金字塔的不同层次具有不同的感受野,从而对不同尺度的区域进行建模。在ANAB中进行两次矩阵乘法运算。首先,定义由querry和key得到的重构特征矩阵
M
Q
M_Q
MQ和
M
K
M_K
MK之间的相似度矩阵为:
M
S
=
M
Q
×
M
K
T
,
M
Q
∈
R
N
×
C
,
M
K
∈
R
L
×
C
.
\begin{equation} M_S=M_Q\times M^T_K,\space\space M_Q\in\mathbb{R}^{N\times C},M_K\in\mathbb{R}^{L\times C}. \end{equation}
MS=MQ×MKT, MQ∈RN×C,MK∈RL×C.
接下来,使用softmax函数归一化相似矩阵的最后一个维度,并将其与从value中得到的重塑特征矩阵
M
V
M_V
MV相乘得到输出:
M
o
u
t
=
S
o
f
t
m
a
x
(
M
S
)
×
M
V
,
M
V
∈
R
L
×
C
.
\begin{equation} M_{out}=Softmax(M_S)\times M_V,\space\space M_V\in\mathbb{R}^{L\times C}. \end{equation}
Mout=Softmax(MS)×MV, MV∈RL×C.
L
L
L是采样后的特征总数。标准的非局部块有着
O
(
N
2
C
)
O(N^2C)
O(N2C)的计算复杂度,而ANAB的复杂度为
O
(
N
L
C
)
O(NLC)
O(NLC)。在实际应用中,L通常是明显小于N的。在本文的案例中,作者在特征图48x160上使用了四季下采样策略。四级特征金字塔的分辨率设置为
i
∈
{
1
×
1
,
4
×
4
,
8
×
8
,
16
×
16
}
i\in\{1\times1,4\times4,8\times8,16\times16\}
i∈{1×1,4×4,8×8,16×16},其中之和为下采样以后的特征总数L,因此L=377远小于N=7680。
ANAB另一个有效的组件是将多尺度注意力图应用于PA²模块中的key和value分支。其作用在于将 M K M_K MK和 M V M_V MV的维度从 N × C N\times C N×C大幅降低到 L × C L\times C L×C的同时,保留原始特征图的关键信息。使用1x1卷积生成的空间注意力图作为权重。该模块可以适应性地调整权重,使其更加关注有用的信息,抑制无用的信息。注意力图可以被视为在多尺度特征上执行的掩膜。作者使用带注意力的平均池化对特征图进行下采样。这种加权平均池化操作提供了一种有效的方法来收集关键特征。
3.4 2D-3D检测和损失
锚的定义 作者采用了一种单阶段的2D-3D锚点网络作为检测器。为了同时检测二维和三维边界框,本文的预定义锚包含了二维边界框
[
w
,
h
]
2
d
[w,h]_{2d}
[w,h]2d和三维边界框
[
z
,
w
,
h
,
l
,
α
]
3
d
[z,w,h,l,\alpha]_{3d}
[z,w,h,l,α]3d。
α
\alpha
α是物体的观测角度,其衡量了相机对目标的观测角度。与物体的旋转角度相比,观测角度对于单目三维目标检测而言更有意义。目标的维度是由
[
w
,
h
,
l
]
3
d
[w,h,l]_{3d}
[w,h,l]3d给出的。作者将物体的中心投影到图像平面上,将物体的三维位置编码到锚点中:
[
X
p
Y
p
1
]
T
⋅
Z
p
=
K
⋅
[
X
Y
Z
1
]
T
,
\begin{equation} \left[ \begin{matrix} X_p&Y_p&1 \end{matrix} \right]^T\cdot Z_p=K\cdot \left[ \begin{matrix} X&Y&Z&1 \end{matrix} \right]^T, \end{equation}
[XpYp1]T⋅Zp=K⋅[XYZ1]T,
其中
(
X
p
,
Y
p
)
(X_p,Y_p)
(Xp,Yp)是三维点投影到平面上的坐标,
(
X
,
Y
,
Z
)
(X,Y,Z)
(X,Y,Z)是摄像机坐标系下的三维空间坐标。
K
∈
R
3
×
4
K\in\mathbb{R}^{3\times4}
K∈R3×4是相机内参矩阵,其在训练和测试阶段都是已知的。作者通过计算与预定义的二维锚点
[
w
,
h
]
2
d
[w,h]_{2d}
[w,h]2d的交并比(IoU)大于给定阈值(0.5)的对象的相应三维参数的平均值来获得每个锚点的三维参数。
输出变换 给定每个锚点的检测输出
c
l
s
,
[
t
x
,
t
y
,
t
w
,
t
h
]
2
d
cls,[t_x,t_y,t_w,t_h]_{2d}
cls,[tx,ty,tw,th]2d和
[
t
x
,
t
y
,
t
z
,
t
w
,
t
h
,
t
l
,
t
α
]
3
d
[t_x,t_y,t_z,t_w,t_h,t_l,t_\alpha]_{3d}
[tx,ty,tz,tw,th,tl,tα]3d,二维边界框
[
X
,
Y
,
W
,
H
]
2
d
[X,Y,W,H]_{2d}
[X,Y,W,H]2d和三维边界框
[
X
,
Y
,
Z
,
W
,
H
,
L
,
A
]
3
d
[X,Y,Z,W,H,L,A]_{3d}
[X,Y,Z,W,H,L,A]3d可以由检测器的输出重构成:
[
X
,
Y
]
2
d
=
[
t
x
,
t
y
]
2
d
⊗
[
w
,
h
]
2
d
+
[
x
,
y
]
2
d
[
W
,
H
]
2
d
=
e
x
p
(
[
t
w
,
t
h
]
2
d
)
⊗
[
w
,
h
]
2
d
[
X
p
,
Y
p
]
3
d
=
[
t
x
,
t
y
]
3
d
⊗
[
w
,
h
]
2
d
+
[
x
,
y
]
2
d
[
W
,
H
,
L
]
3
d
=
e
x
p
(
[
t
w
,
t
h
,
t
l
]
3
d
)
⊗
[
w
,
h
,
l
]
3
d
[
Z
p
,
A
]
3
d
=
[
t
z
,
t
α
]
+
[
z
,
α
]
3
d
\begin{equation} \begin{matrix} [X,Y]_{2d}=[t_x,t_y]_{2d}\otimes[w,h]_{2d}+[x,y]_{2d}\\ [W,H]_{2d}=exp([t_w,t_h]_{2d})\otimes[w,h]_{2d}\\ [X_p,Y_p]_{3d}=[t_x,t_y]_{3d}\otimes[w,h]_{2d}+[x,y]_{2d}\\ [W,H,L]_{3d}=exp([t_w,t_h,t_l]_{3d})\otimes[w,h,l]_{3d}\\ [Z_p,A]_{3d}=[t_z,t_\alpha]+[z,\alpha]_{3d} \end{matrix} \end{equation}
[X,Y]2d=[tx,ty]2d⊗[w,h]2d+[x,y]2d[W,H]2d=exp([tw,th]2d)⊗[w,h]2d[Xp,Yp]3d=[tx,ty]3d⊗[w,h]2d+[x,y]2d[W,H,L]3d=exp([tw,th,tl]3d)⊗[w,h,l]3d[Zp,A]3d=[tz,tα]+[z,α]3d
其中,
⊗
\otimes
⊗表示元素积,A表示旋转角。在推理阶段,利用式(1)的逆推断,将
[
X
p
,
Y
p
,
Z
p
]
[X_p,Y_p,Z_p]
[Xp,Yp,Zp]投影回相机坐标系,即可得到
[
X
,
Y
,
Z
]
3
d
[X,Y,Z]_{3d}
[X,Y,Z]3d
损失函数 作者采用多任务损失函数来监督神经网络的学习,其由三个部分组成:分类损失、二维边界框回归损失和三维边界框回归损失。其中二维回归和三维回归损失使用权重
λ
1
\lambda_1
λ1和
λ
2
\lambda_2
λ2进行加权调整。
L
=
L
c
l
s
+
λ
1
L
2
d
+
λ
2
L
3
d
,
\begin{equation} L=L_{cls}+\lambda_1L_{2d}+\lambda_2L_{3d}, \end{equation}
L=Lcls+λ1L2d+λ2L3d,
对于分类任务,作者采用标准的交叉熵损失:
L
c
l
s
=
−
l
o
g
(
e
x
p
(
c
′
)
∑
e
x
p
(
c
i
)
)
.
\begin{equation} L_{cls}=-log(\frac{exp(c')}{\sum exp(c_i)}). \end{equation}
Lcls=−log(∑exp(ci)exp(c′)).
对于二维边界框回归任务,作者采用
−
l
o
g
(
I
o
U
)
-log(IoU)
−log(IoU)作为二维边界框真值
b
^
2
d
\hat{b}_{2d}
b^2d和二维边界框预测值
b
2
d
′
b'_{2d}
b2d′的损失函数:
L
2
d
=
−
l
o
g
(
I
o
U
(
b
2
d
′
,
b
^
2
d
)
)
.
\begin{equation} L_{2d}=-log(IoU(b'_{2d},\hat{b}_{2d})). \end{equation}
L2d=−log(IoU(b2d′,b^2d)).
使用smooth L1损失来监督三维边界框的回归:
L
3
d
=
∑
v
3
d
∈
p
3
d
S
m
o
o
t
h
L
1
(
v
3
d
′
,
v
^
3
d
)
,
P
3
d
=
{
t
x
,
t
y
,
t
z
,
t
w
,
t
h
,
t
l
,
t
α
}
3
d
.
L_{3d}=\sum_{v_{3d}\in p_{3d}}SmoothL_1(v'_{3d},\hat{v}_{3d}),\\ P_{3d}=\{t_x,t_y,t_z,t_w,t_h,t_l,t_\alpha\}_{3d}.
L3d=v3d∈p3d∑SmoothL1(v3d′,v^3d),P3d={tx,ty,tz,tw,th,tl,tα}3d.
4 实验
略文章来源:https://www.toymoban.com/news/detail-765957.html
黄底字代表我对当前段落的自身理解
斜体字表示例子
本人水平有限,若有有误之处欢迎批评指正。
禁止未经许可随意转载。文章来源地址https://www.toymoban.com/news/detail-765957.html
到了这里,关于凩读论文第3篇《M3DSSD: Monocular 3D Single Stage Object Detector》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!