原文链接:https://arxiv.org/abs/2310.11346
1. 引言
最近,多相机3D目标检测(MC3D-Det)多使用BEV方法以进行有效的多相机信息融合,但当测试环境与训练环境有很大不同时,这些方法会有严重的性能下降。
两种减轻域偏移的方向是域泛化(DG)和无监督域自适应(UDA)。DG方法通常解耦并消除域特定的特征,以提高在未见过的域上的泛化性。UDA则通过生成伪标签或隐特征对齐,但没有来自多视角、不同相机参数和不同环境下的训练数据,很难学到视角和环境无关的特征进行纯视觉感知。
由于单一视图的2D检测通常有更强的泛化性,一些方法将2D检测整合到MC3D-Det中,包括将2D信息融合到3D检测头中,以及建立2D-3D一致性。前者仍然会受到域迁移的影响,而后者将3D检测结果投影到2D以建立一致性,难以应用于所有检测头中。
本文建立基于视图去偏的MC3D-Det框架,连接不同平面,从而能对域偏移学到视角和和上下文不变的特征。本文的方法包括两步:(1)由BEV特征渲染不同视角的图像,并(2)修正这些图像的视图偏差。第一步使用隐式前景体素(IFV)关联相机与BEV平面,以允许不同相机参数下的渲染。第二步在源域使用多个相机姿态监督IFV渲染的图像,以提示与视角和上下文无关的特征。在目标域,预训练的2D检测器用于帮助修正BEV特征。本文的方法保留了原始的模型结构,不引入额外的推断时间,能促进各模型的无缝整合并简化部署。这对实时应用与长期大规模部署至关重要。
本文在MC3D-Det上建立UDA基准,且基于BEVDepth的方法能在DG与UDA协议下均达到很好的效果。在虚拟数据集上训练的模型,能完成真实世界的3D感知任务。
3. 准备知识
3.1 问题设置
本文的目标是增强MC3D-Det的泛化性。本文使用两种协议:域泛化(DG)与无监督域自适应(UDA)。
- DG:仅使用源域的有标签数据 D S = { X s i , Y s i , K s i , E s i } D_S=\{X_s^i,Y_s^i,K_s^i,E_s^i\} DS={Xsi,Ysi,Ksi,Esi}来提高模型泛化性。其中第 i i i个样本包含 N N N视图图像 X i = { I 1 , I 2 , ⋯ , I N } X^i=\{I_1,I_2,\cdots,I_N\} Xi={I1,I2,⋯,IN},以及相应的相机内参 K i K^i Ki和外参 E i E^i Ei。源域的标签 Y s i Y^i_s Ysi包括位置、大小和朝向。
- UDA:在上述基础上,有额外的无标签目标域数据 D T = { X t i , K t i , E t i } D_T=\{X_t^i,K_t^i,E_t^i\} DT={Xti,Kti,Eti}来提升模型泛化性。
3.2 视图偏差
为在BEV下检测物体的位置
L
=
[
x
,
y
,
z
]
L=[x,y,z]
L=[x,y,z](相应的图像位置为
[
u
,
v
]
[u,v]
[u,v]),多数方法使用两个步骤:(1)从图像编码器
E
i
m
g
E_{img}
Eimg获取各视图的图像特征;(2)将这些特征映射到BEV下,并融合通过BEV编码器
E
b
e
v
E_{bev}
Ebev得到物体的位置。
L
=
F
b
e
v
(
E
i
m
g
(
I
1
)
,
⋯
,
E
i
m
g
(
I
N
)
,
K
,
E
)
:
=
L
g
t
+
Δ
L
i
m
g
+
Δ
L
b
e
v
L=F_{bev}(E_{img}(I_1),\cdots,E_{img}(I_N),K,E):=L_{gt}+\Delta L_{img}+\Delta L_{bev}
L=Fbev(Eimg(I1),⋯,Eimg(IN),K,E):=Lgt+ΔLimg+ΔLbev
其中
L
g
t
,
Δ
L
i
m
g
,
Δ
L
b
e
v
L_{gt},\Delta L_{img},\Delta L_{bev}
Lgt,ΔLimg,ΔLbev分别为真实位置、图像编码器的偏差和BEV编码器的偏差。
Δ
L
i
m
g
\Delta L_{img}
ΔLimg和
Δ
L
b
e
v
\Delta L_{bev}
ΔLbev均由有限视角、相机参数和相似环境引起的的过拟合产生,在无目标域下的额外监督时很难减小。本文将空间偏差转化为单一视图偏差。图像平面的视图偏差
[
Δ
u
,
Δ
v
]
[\Delta u,\Delta v]
[Δu,Δv]为:
[
Δ
u
,
Δ
v
]
=
[
k
u
(
u
−
c
u
)
+
b
u
d
(
u
,
v
)
,
k
v
(
v
−
c
v
)
+
b
v
d
(
u
,
v
)
]
[\Delta u,\Delta v]=[\frac{k_u(u-c_u)+b_u}{d(u,v)},\frac{k_v(v-c_v)+b_v}{d(u,v)}]
[Δu,Δv]=[d(u,v)ku(u−cu)+bu,d(u,v)kv(v−cv)+bv]
其中 k u , b u , k v , b v k_u,b_u,k_v,b_v ku,bu,kv,bv与BEV编码器的域偏差 Δ L b e v \Delta L_{bev} ΔLbev相关, d ( u , v ) d(u,v) d(u,v)表示最终的模型预测深度。 c u , c v c_u,c_v cu,cv表示相机的光学中心在图像上的位置。视图偏差的推导见附录。由此可得推论:(1)预测的位置偏移会导致视图偏差,优化之可减轻域偏移;(2)图像中心射线上的点也在图像平面上的位置可能也存在偏移。
直观来看,过拟合导致的域偏移会改变BEV特征的位置和值。因此,需要从BEV渲染新视图,使模型学到视角和环境无关的特征。本文使用渲染的不同视角下的图像来处理视图偏差并增强模型的泛化能力。
4. 方法
本文的视图去偏如下图所示。
4.1 语义渲染
由于多数方法使用BEV表达,没有高度维度,本文提出隐式前景体素进行新视图渲染。具体来说,使用几何感知的解码器
D
g
e
o
D_{geo}
Dgeo将BEV特征
F
b
e
v
∈
R
C
×
X
×
Y
F_{bev}\in\mathbb R^{C\times X\times Y}
Fbev∈RC×X×Y变换为中间特征
F
b
e
v
′
∈
R
C
×
1
×
X
×
Y
F'_{bev}\in\mathbb R^{C\times1\times X\times Y}
Fbev′∈RC×1×X×Y和
F
h
e
i
g
h
t
∈
R
1
×
Z
×
X
×
Y
F_{height}\in\mathbb R^{1\times Z\times X\times Y}
Fheight∈R1×Z×X×Y,并从BEV提升为隐式前景体素
V
i
f
v
∈
R
C
×
Z
×
X
×
Y
V_{ifv}\in\mathbb R^{C\times Z\times X\times Y}
Vifv∈RC×Z×X×Y:
V
i
f
v
=
S
i
g
m
o
i
d
(
F
h
e
i
g
h
t
)
⋅
F
b
e
v
′
V_{ifv}=\mathtt{Sigmoid}(F_{height})\cdot F'_{bev}
Vifv=Sigmoid(Fheight)⋅Fbev′
其中 S i g m o i d ( F h e i g h t ) \mathtt{Sigmoid}(F_{height}) Sigmoid(Fheight)可理解为估计的高度信息,表达每个高度处是否存在物体。
为渲染不同视角下的语义特征,本文提出多视图语义渲染(MVSR),首先随机抖动相机位置
(
x
+
Δ
x
,
y
+
Δ
y
,
z
+
Δ
z
)
(x+\Delta x,y+\Delta y,z+\Delta z)
(x+Δx,y+Δy,z+Δz)和朝向
(
θ
y
a
w
+
Δ
θ
y
a
w
,
θ
p
i
t
c
h
+
Δ
θ
p
i
t
c
h
,
θ
r
o
l
l
+
Δ
θ
r
o
l
l
)
(\theta_{yaw}+\Delta\theta_{yaw},\theta_{pitch}+\Delta\theta_{pitch},\theta_{roll}+\Delta\theta_{roll})
(θyaw+Δθyaw,θpitch+Δθpitch,θroll+Δθroll),然后生成多个射线的坐标
r
i
w
,
h
=
[
x
w
,
h
,
y
w
,
h
,
z
w
,
h
]
r_i^{w,h}=[x^{w,h},y^{w,h},z^{w,h}]
riw,h=[xw,h,yw,h,zw,h]以从隐式前景体素中采样,并聚合得到图像特征:
F
(
w
,
h
)
r
e
n
d
e
r
=
∑
i
=
1
n
V
i
f
v
(
x
w
,
h
,
y
w
,
h
,
z
w
,
h
)
F(w,h)_{render}=\sum_{i=1}^nV_{ifv}(x^{w,h},y^{w,h},z^{w,h})
F(w,h)render=i=1∑nVifv(xw,h,yw,h,zw,h)
然后,将渲染图像特征输入RenderNet R R R(2D卷积;细节见附录)中生成热图 h r e n d e r ∈ R N c l s × W × H h_{render}\in\mathbb R^{N_{cls}\times W\times H} hrender∈RNcls×W×H和属性 a r e n d e r ∈ R N c l s × W × H a_{render}\in\mathbb R^{N_{cls}\times W\times H} arender∈RNcls×W×H,其中 N c l s N_{cls} Ncls为类别数。语义热图与属性可在源域和目标域上被约束,以消除视图偏差 [ Δ u , Δ v ] [\Delta u,\Delta v] [Δu,Δv]。
4.2 源域上的视图去偏
源域的3D边界框可用于监测新视图的热图与属性,以减小视图偏差。此外,还使用归一化深度信息帮助图像编码器学习更好的几何。
4.2.1 视图语义监督
本文正则化不同视角下渲染的热图与属性,以消除视图偏差。首先将边界框投影到渲染图像平面:
P
^
j
=
(
u
d
,
v
d
,
d
)
=
K
j
′
E
j
′
P
\hat P_j=(ud,vd,d)=K'_jE'_jP
P^j=(ud,vd,d)=Kj′Ej′P,其中
P
^
j
\hat P_j
P^j为2.5D图像坐标,
P
P
P为3D坐标,
d
d
d为物体到视图光学中心的深度。基于物体在图像上的位置,可按照CenterPoint的方法生成类别热图
h
g
t
∈
R
N
c
l
s
×
W
×
H
h_{gt}\in\mathbb R^{N_{cls}\times W\times H}
hgt∈RNcls×W×H。物体的尺寸
a
g
t
∈
R
N
c
l
s
×
W
×
H
a_{gt}\in\mathbb R^{N_{cls}\times W\times H}
agt∈RNcls×W×H也被投影到图像平面。在源域上,使用focal损失和L1损失监督类别和尺寸:
L
r
e
n
d
e
r
=
F
o
c
a
l
(
h
r
e
n
d
e
r
,
h
g
t
)
+
L
1
(
a
r
e
n
d
e
r
,
a
g
t
)
L_{render}=Focal(h_{render},h_{gt})+L1(a_{render},a_{gt})
Lrender=Focal(hrender,hgt)+L1(arender,agt)
此外,还训练2D检测器,将3D边界框投影到原始图像上,进行类似的损失计算( L p s L_{ps} Lps)。2D检测器可进一步用于目标域的几何修正。
4.2.2 视图几何监督
使用显式的深度信息可以有效提高检测性能,但深度预测会倾向于对相机内参过拟合。本文强迫DepthNet学习归一化虚拟深度
D
v
i
r
t
u
a
l
D_{virtual}
Dvirtual:
L
p
g
=
B
C
E
(
D
p
r
e
,
D
v
i
r
t
u
a
l
)
D
v
i
r
t
u
a
l
=
1
f
u
2
+
1
f
v
2
U
D
L_{pg}=BCE(D_{pre},D_{virtual})\\ D_{virtual}=\frac{\sqrt{\frac1{f_u^2}+\frac1{f_v^2}}}UD
Lpg=BCE(Dpre,Dvirtual)Dvirtual=Ufu21+fv21D
其中 B C E ( ) BCE() BCE()为二元交叉熵损失, D p r e D_{pre} Dpre为预测深度, f u , f v f_u,f_v fu,fv为 u , v u,v u,v焦距, U U U为常数。注意深度 D D D是由3D边界框提供的前景深度信息,而非来自点云。这样,DepthNet会更关注前景物体的深度。最后使用逆归一化预测深度将语义特征提升到BEV。
4.3 目标域上的视图去偏
由于没有标签,无法使用
L
r
e
n
d
e
r
L_{render}
Lrender。预训练的2D检测器可以用于修正目标域上的几何BEV特征。从隐式前景体素渲染原始图像下的热图
h
r
e
n
d
e
r
h_{render}
hrender,并使用Focal损失约束2D检测器伪标签和渲染图的一致性:
L
c
o
n
=
F
o
c
a
l
(
h
r
e
n
d
e
r
,
h
p
s
e
u
d
o
)
h
p
s
e
u
d
o
=
{
1
h
>
τ
h
否则
L_{con}=Focal(h_{render},h_{pseudo})\\ h_{pseudo}=\left\{\begin{matrix} 1 & h>\tau \\ h & 否则 \end{matrix} \right.
Lcon=Focal(hrender,hpseudo)hpseudo={1hh>τ否则
这样, L c o n L_{con} Lcon可以有效利用精确的2D检测,修正前景目标在BEV下的位置,这属于目标域上的无监督正则化。为增强2D预测的修正能力,本文使用伪方法增强了预测热图的置信度。
4.4 整体框架
尽管本文在训练时增加了一些网络,但测试时可以去掉。注意原始的3D检测损失以及 L r e n d e r , L p g , L p s L_{render},L_{pg},L_{ps} Lrender,Lpg,Lps仅在源域上使用,而 L c o n L_{con} Lcon仅在目标域上使用(DG协议下没有目标域)。
5. 实验
5.1 域泛化基准
本文的方法能在目标域获得极大提升,这说明IFV作为桥梁可以帮助学习视图不变的特征以对抗域偏移。此外,本文方法不会牺牲源域精度,甚至在多数情况下会提升性能。
5.2 无监督域自适应基准
归因于视图去偏,本文的方法能有大幅提升。这是因为泛化性能更好的2D检测器能修正3D检测器错误的几何信息。此外,很多方法在源域有性能下降,而本文的方法降低幅度更小。
5.3 消融研究
实验表明,DG协议下加入2D检测器预训练(DPT)和源域去偏均能提高性能(SDB);UDA协议下加入目标域去偏(TDB)也能提高性能。其中SDB与TDB的性能提升相对显著,因为前者能捕捉视图不变的特征,后者则能利用泛化性好的2D检测修正目标域的错误几何特征。DPT则通过图像特征的监督,使网络学到更鲁棒的特征。
5.4 进一步讨论
方法的即插即用能力:任何使用图像特征和BEV特征的模型均可使用本文的算法,且能提高目标域的性能。
视图去偏:可视化表明,目标域上的2D检测器能精确检测物体中心,但从IFV渲染的热图非常模糊。使用2D检测器可以有效修正IFV渲染的热图。
可视化:可视化表明,本文算法更加精确,且少有重复框,因为2D检测器能修正3D检测器的错误几何,并提高置信度。此外,由于泛化性,本文方法还能检测出一些未被目标域标注的物体。
附录
A. 视图偏差的推导细节
BEV融合前,图像编码器提取的物体的深度
d
(
u
,
v
)
i
m
g
:
=
d
(
u
,
v
)
g
t
+
Δ
L
(
u
,
v
)
i
m
g
d(u,v)_{img}:=d(u,v)_{gt}+\Delta L(u,v)_{img}
d(u,v)img:=d(u,v)gt+ΔL(u,v)img会导致图像编码器的域偏差
Δ
L
(
u
,
v
)
i
m
g
\Delta L(u,v)_{img}
ΔL(u,v)img。基于
d
(
u
,
v
)
i
m
g
d(u,v)_{img}
d(u,v)img,物体可根据相机内外参被提升到BEV空间:
[
x
′
,
y
′
,
z
′
]
=
E
−
1
K
−
1
[
u
d
(
u
,
v
)
i
m
g
,
v
d
(
u
,
v
)
i
m
g
,
d
(
u
,
v
)
i
m
g
]
[x',y',z']=E^{-1}K^{-1}[ud(u,v)_{img},vd(u,v)_{img},d(u,v)_{img}]
[x′,y′,z′]=E−1K−1[ud(u,v)img,vd(u,v)img,d(u,v)img]
并通过BEV编码器修正位置:
[
x
,
y
,
z
]
=
[
x
′
,
y
′
,
z
′
]
+
Δ
L
b
e
v
(
x
,
y
,
z
)
[x,y,z]=[x',y',z']+\Delta L_{bev}(x,y,z)
[x,y,z]=[x′,y′,z′]+ΔLbev(x,y,z)
为定量表明域偏差如何在单一视图显露,物体会使用预测深度、相机内外参重新投影到图像的齐次坐标:
[
u
′
d
f
,
v
′
d
f
,
d
f
]
=
K
E
[
x
,
y
,
z
]
[u'd_f,v'd_f,d_f]=KE[x,y,z]
[u′df,v′df,df]=KE[x,y,z]
然后计算视图偏差 [ Δ u , Δ v ] = [ u ′ − u , v ′ − v ] [\Delta u,\Delta v]=[u'-u,v'-v] [Δu,Δv]=[u′−u,v′−v]。具体过程及结果见原文。
- 图像编码器偏差的原因是对相机内参和有限视图的过拟合。前者影响深度估计,可通过归一化虚拟深度估计解决;后者则对应了网络基于车辆、路面和背景关系的推理事实,且难以解耦。跨域测试会因为相机参数与视图的变化而导致图像编码器更大的偏差。
- BEV编码器间接地收到图像编码器偏差的影响。视图和环境的变化会导致前景和背景特征的分布偏移,从而使模型性能下降。
总的来说,本文算法期望网络能学到在不同视图、相机参数与环境下均一致的特征,从而实现更鲁棒、更精确的模型。
B. 数据集与实施
B.3 实施细节
使用随机翻转、随机缩放、随机旋转数据增广。
B.4 网络结构
2D检测器、BEV解码器、RenderNet均为卷积网络。2D检测器的检测头为CenterHead。
C. 讨论
C.1 语义渲染的讨论
语义渲染有很多超参数,如朝向角的扰动范围和IVF的高度。实验表明,偏航角的扰动范围 Δ θ y a w \Delta\theta_{yaw} Δθyaw和IVF的高度 Z Z Z对结果的影响较大。
C.2 不同深度监督的比较
实验表明,使用激光雷达点云的表面深度监督,性能要比无深度监督还差。这是因为物体表面的深度信息会将目标域的前景物体投影到BEV平面的错误位置。没有深度监督时,模型会依赖BEV编码器学习物体间的关系,结果会更加鲁棒。使用真实边界框的深度监督总会带来明显最优的性能。