0. 简介
我们之前介绍了基于特征和优化的方法完成外餐标定的方法,现在我们这次来看一个基于弱监督的环视系统的外参自标定方法《Extrinsic Self-calibration of the Surround-view System: A Weakly Supervised Approach》。本文提出了一种遵循弱监督框架的新型自动校准方案,即WESNet(弱监督外参自动校准网络)。WESNet的训练包括两个阶段。首先,我们利用少量校准点图像作为弱监督,通过最小化几何损失粗略优化网络。然后,在第一个阶段收敛后,我们另外引入一个自监督光度损失项,通过自然图像的光度信息构建,用于进一步微调。此外,为支持训练,我们共采集了19,078组在不同环境条件下同步捕获的鱼眼图像。据我们所知,这是迄今为止包含原始鱼眼图像的最大全景图数据集。通过从训练数据中学习先验知识,WESNet以同步采集的原始鱼眼图像作为输入,直接以较低的劳动成本端到端地产生外参。我们在收集的数据集上进行了广泛实验,验证了其效率和效力。为了使我们的结果可复现,源代码和已收集的数据集已在Github上发布。
1. 主要贡献
作为填补这一研究空白的一种尝试,我们提出了一种新颖的弱监督方案,旨在实现SVS的外部自校准。总的来说,我们的贡献主要有三个方面:
- 提出了一种用于SVS外部校准的弱监督网络WESNet。基于从训练数据中学到的先验知识,WESNet可以以端到端的方式产生SVS的外部参数,输入为原始鱼眼图像。由于很难获得准确的外部参数作为地面真相(GT),我们没有直接使用对应的GT外部参数标注训练样本,而是采用了弱监督框架。具体来说,在校准点图像中的角点信息(在校准点采集的图像)被作为几何监督,网络在训练的第一阶段通过最小化几何损失来进行优化。
- 设计了一种新颖的光度损失作为自监督信息,以从训练图像本身中获取更多的监督信息。受张等人在[21]中提出的方案OECS的启发,我们将SVS相邻相机的公共视野区域中的成像差异建模为光度损失,并希望尽可能地将这种损失最小化,以合成无缝和高质量的全景图。当基于几何监督的训练收敛时,自监督光度损失将被引入以微调网络,进一步提高估计精度,这是我们进行的第二阶段训练的目的。
- 为了促进外部校准或依赖全景视图的任何其他计算机视觉任务的研究,我们收集了一个涵盖各种环境条件的大规模全景视图数据集。该数据集包含了19,078组高分辨率鱼眼图像以及在不同环境条件下合成的相应全景视图,覆盖了地面上带有几种车道线和地砖、水泥路、狭窄路径和暴露在强阳光下的道路。此外,我们还提出了一种基于单应性变换的数据增强方法,以提高采集数据的外部参数的丰富性。值得一提的是,据我们所知,这是包含原始鱼眼图像的最大全景视图数据集。为了使我们的结果可复制,本文的源代码和收集的数据集可以在https://cslinzhang.github.io/WESNet/WESNet.html 上在线获取。
2. 全景视图系统概述
本节描述了环视系统的成像过程,即如何从车辆周围安装的摄像头捕获的图像中生成环视图。为了合成环视图像,需要建立一个点在原始鱼眼图像上的像素坐标与鸟瞰图上的像素坐标之间的映射关系。由于这种关系相对复杂,我们将其分为两部分:从**鱼眼图像上的像素坐标到地面坐标的映射关系,以及从3D地面坐标到鸟瞰图上的像素坐标的映射关系。**接下来,我们将详细介绍这两部分。
给定地面坐标系
O
G
O_G
OG和四摄像头环视系统(摄像头表示为
C
1
C_1
C1、
C
2
C_2
C2、
C
3
C_3
C3和
C
4
C_4
C4),摄像头在
O
G
O_G
OG中的姿态分别用
T
C
1
G
T_{C_1G}
TC1G、
T
C
2
G
T_{C_2G}
TC2G、
T
C
3
G
T_{C_3G}
TC3G和
T
C
4
G
T_{C_4G}
TC4G表示。姿态矩阵
T
C
i
G
T_{C_iG}
TCiG为4×4,具有6个自由度(DOF),可以表示为:
T
C
i
G
=
[
R
i
t
i
0
T
1
]
,
i
=
1
,
2
,
3
,
4
(1)
T_{C_i G} = \begin{bmatrix} R_i & t_i \\ \mathbf{0}^T & 1 \end{bmatrix}, \quad i = 1, 2, 3, 4 \tag{1}
TCiG=[Ri0Tti1],i=1,2,3,4(1)
R i R_i Ri为一个正交的3×3旋转矩阵,满足 d e t ( R i ) = 1 det(R_i) = 1 det(Ri)=1,而 t i t_i ti是一个三维平移向量。
对于从地面坐标系到无畸变图像坐标系的变换,我们用针孔相机模型来表达。给定地面坐标系
O
G
O_G
OG中的任意点
P
G
=
[
X
G
,
Y
G
,
Z
G
,
1
]
T
P_G = [X_G, Y_G, Z_G, 1]^T
PG=[XG,YG,ZG,1]T,在
C
i
C_i
Ci的成像平面上对应的像素坐标
p
C
i
p_{C_i}
pCi表示为,
p
C
i
=
1
Z
C
i
K
C
i
T
C
i
G
P
G
,
i
=
1
,
2
,
3
,
4
(2)
p_{C_i} = \frac{1}{Z_{C_i}} K_{C_i} T_{C_i G} P_G, i = 1, 2, 3, 4 \tag{2}
pCi=ZCi1KCiTCiGPG,i=1,2,3,4(2)
在这里,
Z
C
i
Z_{C_i}
ZCi是相机
C
i
C_i
Ci坐标系中
P
G
P_G
PG的深度,而
K
C
i
K_{C_i}
KCi是相机
C
i
C_i
Ci的3×3内参矩阵,可以通过张正友等人的重要工作[39]以及其他一些后续工作[40],[41]一起估计出来。具体来说,
K
C
i
K_{C_i}
KCi的形式是
K
C
i
=
[
f
x
0
c
x
0
f
y
c
y
0
0
1
]
(3)
\begin{equation} K_{C_i} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \end{equation} \tag{3}
KCi=
fx000fy0cxcy1
(3)
在这里,
f
x
f_x
fx、
f
y
f_y
fy、
c
x
c_x
cx和
c
y
c_y
cy是相机的内参参数。值得注意的是
p
C
i
p_{C_i}
pCi是一个无畸变点。与上述模型相比,从鸟瞰坐标系到地面坐标系的转换要简单得多,本质上是一个相似变换。鸟瞰图像可以通过将相机图像投影到地面上来生成,即平面
Z
G
=
0
Z_G = 0
ZG=0在
O
G
O_G
OG中。对于鸟瞰坐标系中的点
p
G
=
[
u
G
,
v
G
,
1
]
T
p_G = [u_G, v_G, 1]^T
pG=[uG,vG,1]T,其在地面坐标系中对应的点为
P
G
P_G
PG,它们之间的转换如下所示:
[
u
G
v
G
1
]
=
[
1
d
x
G
0
W
2
d
x
G
0
−
1
d
y
G
H
2
d
y
G
0
0
1
]
[
X
G
Y
G
1
]
(4)
\begin{equation} \begin{bmatrix} u_G \\ v_G \\ 1\end{bmatrix}= \begin{bmatrix} \frac{1}{d_{x_G}} & 0 & \frac{W}{2d_{x_G}} \\ 0 & \frac{-1}{d_{y_G}} & \frac{H}{2d_{y_G}} \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X_G \\ Y_G \\ 1 \end{bmatrix} \end{equation} \tag{4}
uGvG1
=
dxG1000dyG−102dxGW2dyGH1
XGYG1
(4)
在这里,
X
G
X_G
XG、
Y
G
Y_G
YG和
Z
G
Z_G
ZG分别是
P
G
P_G
PG的坐标值,
d
X
G
d_{X_G}
dXG和
d
Y
G
d_{Y_G}
dYG表示每个像素的大小,
W
W
W和
H
H
H分别是环视图像覆盖范围的宽度和高度。由于
Z
G
=
0
Z_G = 0
ZG=0,在这里被隐式忽略。将从
P
G
P_G
PG到
p
G
p_G
pG的转换矩阵表示为
K
G
K_G
KG,然后方程4可以简化为:
p
G
=
K
G
P
G
(5)
p_G = K_GP_G \tag{5}
pG=KGPG(5)
通过结合第2个方程和第5个方程,我们可以得到
p
C
i
=
1
Z
C
i
K
C
i
T
C
i
G
K
G
−
1
p
G
(6)
p_{C_i} = \frac{1}{Z_{C_i}} K_{C_i} T_{C_i G} K_G^{-1} p_G \tag{6}
pCi=ZCi1KCiTCiGKG−1pG(6)
通过公式6,我们能够在鸟瞰图上的点
p
G
p_G
pG和相机
C
i
C_i
Ci的未畸变成像平面上的点
p
C
i
p_{C_i}
pCi之间建立完整的映射关系。有了这样的双射关系,考虑到每个相机
C
i
C_i
Ci捕获的鸟瞰视图图像
I
G
C
i
I_{GC_i}
IGCi中的点
p
G
p_G
pG,其对应的像素值可以通过以下方式获得:
I
G
C
i
(
p
G
)
=
I
C
i
(
p
C
i
)
(7)
I_{GC_i}(p_G) = I_{C_i}(p_{C_i}) \tag{7}
IGCi(pG)=ICi(pCi)(7)
将相机 C 1 C_1 C1、 C 2 C_2 C2、 C 3 C_3 C3和 C 4 C_4 C4拍摄的图像映射到鸟瞰视图,然后适当拼接,就可以合成完整的环视图像,其中 I C i I_{C_i} ICi是相机 C i C_i Ci拍摄的无失真图像。
3. 弱监督相机外参估计
通过准确的外参,可以在运行时合成无缝的全景图像。然而,如第一节所讨论的,手动校准方案通常非常费力,无法在线应用,而且现成的自校准方案在鲁棒性和泛化性方面表现不佳。为了为全景视图系统(SVS)的外参校准提供一种鲁棒且轻量级的解决方案,本文提出了一种基于弱监督框架的学习方法来估计相机外参。该方案基于一种端到端的轻量级卷积神经网络(CNN),即WESNet,可以直接从四个同步捕获的鱼眼图像中得出外参,这些图像由安装在车辆周围的相机拍摄。在弱监督框架下,我们主要利用校准场地角点的重投影损失,而不是为数据集中每个图像标注其对应的真值(GT)外参。
在利用弱监督信息进行训练时,WESNet能够提供粗略的外参估计,但其精度仍然不足。为了从训练数据中挖掘更多信息,我们还引入了自监督的光度损失,在弱监督损失收敛后对网络进行微调。因此,网络的精度可以进一步提高,从而合成无缝的全景视图。
3.1 网络架构
WESNet的基本架构主要是根据校准回归框架的建议设计的[37],[38],同时也考虑了CNN领域的共同知识。图1展示了其配置。在这里,使用了一个由3×3卷积和接着的1×1卷积组成的残差瓶颈[42]作为基本构建模块。
图1. WESNet的网络架构。如图所示,平行层独立地从四个输入图像中提取深层特征,然后串联层将来自不同图像的特征融合在一起。最后,全局汇聚层将串联特征映射到48维向量中,该向量代表SVS的外参。这里的“s2”表示对应卷积操作的步长为2,而默认值为1。
如图1所示,平行层独立地从每个输入鱼眼图像中提取深层特征。然后,来自多路径的特征图将被串联在一起,以融合来自不同视角的提取特征。最后,全局聚合层,由卷积层和全连接层组成,将将聚合的特征映射到外参。如方程式1所述,这些外参以变换矩阵形式表示,对于每个摄像头,需要回归出九个旋转参数和三个平移参数。因此,WESNet将生成一个48维向量来表示SVS的外参。
3.2 损失函数
WESNet的损失函数定义为三个损失项的组合,几何损失、正交损失和光度损失,具体如下:
L
o
s
s
=
L
o
s
s
g
e
o
+
α
L
o
s
s
o
r
t
h
o
+
β
L
o
s
s
p
h
o
(8)
Loss = Loss_{geo} + αLoss_{ortho} + βLoss_{pho} \tag{8}
Loss=Lossgeo+αLossortho+βLosspho(8)
L
o
s
s
g
e
o
Loss_{geo}
Lossgeo代表几何损失,
L
o
s
s
o
r
t
h
o
Loss_{ortho}
Lossortho代表正交损失,
L
o
s
s
p
h
o
Loss_{pho}
Losspho指的是光度损失。超参数设置为
α
=
0.1
α = 0.1
α=0.1和
β
=
0.15
β = 0.15
β=0.15。几何损失实际上是弱监督损失,可以促进网络的收敛,而光度损失则是为了微调网络,以合成无缝的环视图。此外,还集成了正交损失,以保持估计旋转矩阵的内部约束。接下来,我们将详细介绍这三个损失项。
3.2.1 几何损失
众所周知,完全监督学习的局限性在于其性能强烈依赖于标签的准确性,而在外参校准任务中,很难获得准确的GT。因此,我们不将现有校准解决方案估计的外参直接作为标签,而是利用校准场景图像中的几何关系作为弱监督信息来构建引导WESNet优化的几何损失,以避免其性能受到不准确监督的限制。我们首先收集了布满棋盘标记的校准场景图像。通过这些标记的已知尺寸,可以轻松获得每个标记在世界坐标系中的3D坐标。基于角点的3D世界坐标对和校准场景图像中相应手动标记的2D像素坐标对,我们形成了重新投影损失,以几何回归出在相同外参配置下采集的图像中的输出外参。为了帮助理解,几何损失的草图如图2所示。
图2. 几何损失的示意图。对于在未失真的标定场景图像上选择的每个角点 p C i p_{C_i} pCi,其在地面坐标系中对应的点为 P G P_G PG,其几何损失被构建为 p C i p_{C_i} pCi与通过使用方程2估计的外参将 P G P_G PG投影到 C i C_i Ci的未失真图像平面上的点之间的坐标差异。
给定校准场景上的一个选定角点,其在地面坐标系
O
G
O_G
OG中的3D坐标
P
G
P_G
PG与由相机
C
i
C_i
Ci采集的无畸变鱼眼图像上的2D像素坐标pCi之间的关系已在方程2中给出。
L
o
s
s
g
e
o
=
∑
i
∑
P
G
∈
P
i
∥
norm
(
p
c
i
−
p
c
i
′
)
∥
2
\begin{equation} Loss_{geo} = \sum_i \sum_{P_G \in \mathcal{P}_i} \left\lVert \text{norm}(p_{c_i} - p'_{c_i}) \right\rVert_2 \end{equation}
Lossgeo=i∑PG∈Pi∑
norm(pci−pci′)
2
因此,借助WESNet的摄像机姿态,可以生成相应的投影
p
C
i
′
p'_{C_i}
pCi′,并建立一个损失项,即
p
C
i
p_{C_i}
pCi与
p
C
i
′
p'_{C_i}
pCi′之间的距离。通过对所有角点的误差项求和,我们得到了WESNet的整体几何损失,如下所示:
L o s s g e o = ∑ i ∑ P G ∈ P i ∥ norm ( p C i − p C i ′ ) ∥ 2 = ∑ i ∑ P G ∈ P i ∥ norm ( p C i − 1 Z C i K C i T C i G P G ) ∥ 2 \begin{equation} \begin{aligned} Loss_{geo} &= \sum_i \sum_{P_G \in \mathcal{P}_i} \left\lVert \text{norm}(p_{C_i} - p'_{C_i}) \right\rVert_2 \\ &= \sum_i \sum_{P_G \in \mathcal{P}_i} \left\lVert \text{norm}\left(p_{C_i} - \frac{1}{Z_{C_i}} K_{C_i} T_{C_i G} P_G\right) \right\rVert_2 \end{aligned} \tag{9} \end{equation} Lossgeo=i∑PG∈Pi∑ norm(pCi−pCi′) 2=i∑PG∈Pi∑ norm(pCi−ZCi1KCiTCiGPG) 2(9)
在SVS中,其中 i i i代表相机的索引,范围从1到4, P i P_i Pi代表校准站点上所有可被相机 C i C_i Ci看到的选定角点的集合,函数 n o r m ( ∗ ) norm(*) norm(∗)通过将其在相应轴上的坐标除以图像的宽度或高度来对重新投影的像素坐标进行归一化。值得一提的是,地面坐标系应手动确定。一个常见的解决方案是将车辆停放在适当位置以使车辆坐标系与地面坐标系对齐。从这个角度来看,除了以弱监督方式标记训练数据外,几何损失还提供了一个绝对参考,以确保网络的收敛。具体来说,通过引入几何损失,WESNet可以学习确定一个特定的地面坐标系,并在统一的参考系统中回归不同相机的姿态。
3.2.2 正交损失
旋转矩阵由九个参数组成,但其自由度仅为三,暗示着强烈的内部约束。由于解决受约束的优化问题很困难,我们选择了一个相对柔和的解决方案,即引入正交损失以在训练过程中保持约束满足。受[43]的启发,正交损失被定义为:
L
o
s
s
o
r
g
=
∑
i
∑
j
=
1
3
(
(
(
R
j
1
i
)
2
+
(
R
j
2
i
)
2
+
(
R
j
3
i
)
2
−
1
)
2
+
(
R
11
i
R
21
i
+
R
12
i
R
22
i
+
R
13
i
R
23
i
)
2
+
(
R
11
i
R
31
i
+
R
12
i
R
32
i
+
R
13
i
R
33
i
)
2
+
(
R
21
i
R
31
i
+
R
22
i
R
32
i
+
R
23
i
R
33
i
)
2
)
\begin{equation} \begin{aligned} Loss_{org} = \sum_i \sum_{j=1}^{3} \left( \left( (R^i_{j1})^2 + (R^i_{j2})^2 + (R^i_{j3})^2 - 1 \right)^2 \right. \\ &+ \left. \left( R^i_{11} R^i_{21} + R^i_{12} R^i_{22} + R^i_{13} R^i_{23} \right)^2 \right. \\ &+ \left. \left( R^i_{11} R^i_{31} + R^i_{12} R^i_{32} + R^i_{13} R^i_{33} \right)^2 \right. \\ &+ \left. \left( R^i_{21} R^i_{31} + R^i_{22} R^i_{32} + R^i_{23} R^i_{33} \right)^2 \right) \end{aligned} \tag{10} \end{equation}
Lossorg=i∑j=1∑3(((Rj1i)2+(Rj2i)2+(Rj3i)2−1)2+(R11iR21i+R12iR22i+R13iR23i)2+(R11iR31i+R12iR32i+R13iR33i)2+(R21iR31i+R22iR32i+R23iR33i)2)(10)
在这里, R j k i R^i_{jk} Rjki是 C i C_i Ci的旋转矩阵 R i R_i Ri中第 j j j行第 k k k列的元素。
3.2.3 光度损失
仅使用几何损失进行训练,网络可能会收敛到一个勉强令人满意的水平。然而,结果仍然不够准确,合成环视图中通常会出现明显的几何错位。为了进一步提高网络的性能,我们引入了额外的自监督光度损失。这种光度损失的草图如图3所示。