BEV(Bird’s-Eye-View)是一种鸟瞰视图的传感器数据表示方法,它的相关技术在自动驾驶领域已经成了“标配”,纷纷在新能源汽车、芯片设计等行业相继量产落地。BEV同样在高德多个业务场景使用,例如:高精地图地面要素识别、车道线拓扑构建、车端融合定位中都扮演了重要角色。如图1‑1所示:
图1‑1 BEV在高德应用场景(仅列举部分)
a)高精底图 b)地面要素识别 c)车道线拓扑构建[1] d)车端融合定位(BEV特征和底图匹配)[2]
本文分享的内容主要包括两个部分:视觉BEV基本原理、方案解析。
1.BEV基础
1.1.引言
如图1‑2所示,BEV具有如下优势:
1) BEV视图尺度变化小。在PV空间(即透视图,类似通常行车记录仪所采集的车辆前视图)中,物体近大远小,物体的大小和类别、远近都有关,而在BEV空间中,物体的大小只和类别有关;
2) BEV空间是决策友好空间。BEV空间更接近3D真实空间的平面空间,而PV空间是真实物理世界在透视投影下的视图,以图1‑2的车道线举例,在真实世界中平行的两条车道线,在BEV空间下还是平行的,在PV空间却是相交的。相比之下,BEV空间下的信息能更方便地被下游规控模块理解和使用。
本章将介绍BEV基础知识。首先介绍BEV的核心“视角转换模块”的基本原理,包括2D->3D和3D->2D两种路线,然后介绍BEV使用的魔法“可形变模块”,最后介绍BEV方案中常用的损失函数。
图1‑2 BEV空间和PV空间的图像可视化
a) BEV空间 b) PV空间
1.2.视角转换
如1.1所述,在BEV空间下进行数据处理和操作具有尺度变化小、决策友好的优势,但原始的图像数据是在PV空间下的,如何将PV空间的数据转换到BEV空间或者是3D空间(有3D空间下的数据,将其拍扁就能转到BEV空间)呢?这就是视角转换模块要干的事。
1.2.1. 2D->3D转换模块
2D->3D转换模块基本思想是从2D像素或者特征出发去找3D空间下的对应表示,类似深度估计。下面介绍主流的2D->3D转换方法。
LSS(Lift-Splat-and-Shot)[3]是主流的2D->3D转换方法,如图1‑3所示,Lift指对各相机的图像显式地估计特征点的深度分布,得到包含图像特征的视锥(点云);Splat——结合相机内外参把所有相机的视锥(点云)分配到BEV空间的网格中,对每个格子中的多个视锥点进行pooling计算,形成BEV特征图;Shoot——用task head处理BEV特征图,输出感知结果。最后将C维的特征和D维的深度分布做外积,得到每个深度下的特征,深度概率越大,对应特征响应就越强。
图1‑3 LSS示意
每个特征点生成系列离散深度点,再为深度点生成特征[3]
Pseudo-LiDAR是另一种2D->3D转换方法,如图1‑4所示,相比LSS为特征点预测一系列离散深度,Pseudo-LiDAR直接预测深度图,每个像素都有且仅有一个深度。
图1‑4 Pseudo-LiDAR示意
预测深度图,根据原始图像和深度图映射至3D空间[4]
1.2.2. 3D->2D转换模块