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转化模块
3D->2D转化模块基本思想是依据3D点查找对应的2D特征,相似3D空间投影到PV空间。下面介绍干流的3D->2D转化办法。
如图1‑5所示,将3D参考点依据成像原理投影到PV空间获取对应图画特征的办法能够认为是显式映射,这儿的参考点能够运用预设的BEV空间的参考点,也能够运用网络生成。
图1‑5 显式映射[5]
比较显式映射,隐式映射不再经过投影映射,而是让网络自己学特征和3D坐标的映射。如图1‑6所示,它先生成视锥空间下的一系列点,再转化到3D空间下,然后将提取的图画特征和3D点传入encoder,encoder处理后输出的便是带有3D坐标信息的特征。
图1‑6 隐式映射[6]
1.3. 可形变模块
要介绍的可形变模块有两种,可形变卷积和可形变注意力,可形变模块的作用更容易经过可形变卷积了解,所以先介绍可形变卷积。
可形变卷积是在卷积的根底上增加offset得到的,如图1‑7最左边的a) 所示,一般卷积经过人工规划的pattern整合pattern内采样点的信息,其pattern规划好后便是固定的,可形变卷积,如图1‑7 b) 所示,能够计算出每个采样点的offset,采样点+offset才是实在的采样点,使得卷积的pattern方法愈加灵活,且一定程度上可学习。
图1‑7 可形变卷积暗示,a) 一般卷积 b) 可形变卷积[7]
如图1‑8所示,注意力机制需求经过Q (query) 找到K (key),获得K的信息,这个过程也存在可变形的操作空间,让网络自己学习参考点的偏移量。
图1‑8 可变形注意力暗示[8]
1.4. 丢失函数
丢失函数大部分与任务相关,且迥然不同,这儿集中介绍下后续计划解析需求用到的一些共性的丢失函数。
Box Loss (围住盒丢失函数) 是方针检测常用的几何丢失函数,常选用L1 Loss的方法:
Focal Loss是穿插熵丢失函数的拓展,常用于分类问题。一般穿插熵丢失函数在正负样本不均衡时体现不佳,因而引进平衡穿插熵。另外一般穿插熵丢失函数对于难例无法要点学习,因而引进难例聚集。最终方法为:
2. 视觉BEV计划解析
2.1. 引言
第一章的内容为第二章的计划解析打下知识根底,接下来第二章首要解析具有代表性的视觉BEV计划,首要依据视角转化模块的类型对计划进行分类,首要介绍2D->3D的代表性计划,然后介绍3D->2D的代表性计划。
2.2. 2D->3D代表性计划解析
2D->3D的代表性BEV计划有BEVDet和BEVDepth,下面咱们逐个介绍。
2.2.1. BEVDet
3D方针检测盯梢由依据PV空间的办法主导,BEV语义分割盯梢由依据BEV空间的办法主导,那么PV空间和BEV空间哪个更适合做自动驾驶感知呢?是否能够在同一的结构下做这些任务?作者为了答复这两个问题,提出了如图2‑1所示的依据BEV空间的3D方针检测结构,BEVDet。BEVDet首要由四个部分组成,分别为图画特征编码器,视角转化模块,BEV特征编码器,检测头。
图2‑1 BEVDet结构[9]
图画特征编码器(Image-view Encoder)运用2D Backbone网络,如ResNet、SwinTransformer等,对输入的多视角图画做多标准特征提取,得到多标准特征。
视角转化模块(View Transformer)对输入的多视角图画特征运用LSS进行离散深度分布猜测,获得3D视锥特征。
3D视锥特征经过pooling操作拍扁到BEV空间,BEV特征编码器(BEV Encoder)对BEV空间下的特征做多标准特征提取,得到BEV特征。
最终送入检测头进行3D方针检测,分类监督运用的丢失函数为Focal loss,围住盒监督运用的丢失函数为L1 loss。
2.2.2. BEVDepth
作者实验发现LSS估量的深度替换成随机值影响不大,而选用真值深度对目标提升很大,因而得出LSS估量深度禁绝的定论,如图2‑2所示,在没有明确的深度监督的情况下,很难输出准确,泛化性强的深度感知成果,要想获得更好的检测成果,需求更准的深度,因而引进深度监督练习深度子网络。
图2‑2 LSS的深度猜测成果和BEVDepth的深度猜测成果的比照[10]
图2‑3是BEVDepth的结构,也能大致分为图画特征编码器,视角转化模块,BEV特征编码器,检测头四个部分。图画特征编码模块迥然不同,后续不再打开阐明。
图2‑3 BEVDepth结构[10]
视角转化模块的中心是深度估量,深度估量网络DepthNet的结构如图2‑4所示,首要运用MLP对相机内参进行特征化,然后用SE (Squeeze-and-Extraction) 对图画特征进行通道加权,然后经过3个残差块以及可形变卷积,得到深度。深度再与图画特征进行外积,得到3D视锥特征。
图2‑4 深度估量网络结构[10]
相机和用于监督的点云之间的外参或许禁绝,内参也或许禁绝,都会导致深度估量有偏,因而BEV特征编码器引进深度修正对3D视锥特征的深度进行修正,然后进行高效体素池化获得BEV特征。
检测头所运用的丢失函数和BEVDet是共同的,不做赘述。深度监督运用的丢失函数为二分类穿插熵。
2.3. 3D->2D代表性计划解析
前面介绍的2D->3D的计划一直绕不过深度估量,深度估量难免会引进差错,换个思路,先有3D点,再依据3D点找2D特征的办法无需进行深度估量,避免了这部分差错。3D->2D的代表性计划有Detr3D、BEVFormer和PETR。
2.3.1. Detr3D
如图2‑5所示,Detr3D是Detr在3D方针检测的扩展,也是运用query进行特征获取,然后进行检测。Detr3D的图画特征编码器迥然不同,不再赘述。
图2‑5 Detr3D结构[5]
特征转化模块首要运用object query生成3D参考点,将参考点投影到PV空间获取图画特征,获取到的图画特征能进一步优化物体的3D表征,得到物体的3D特征。
将特征送入检测头进行方针检测,能够得到一系列的检测成果。普遍地,大家会用NMS等后处理办法获得最终用于Loss计算的检测成果,如图2‑6所示,Detr3D承继了Detr的做法,选用双方图匹配获得与真值一一对应的检测成果。丢失函数与前面所述并未实质差异,不做赘述了。
图2‑6 双方图匹配获得与真值一一对应的检测成果[11]
2.3.2. BEVFormer
行车过程有天然的时序特色,当前帧看到的车道线,在后续几帧大概率也是存在且可见的,怎么运用这个时序特色是前述计划没有考虑的。BEVFormer引进时序信息进一步增强BEV的检测能力。BEVFormer的图画特征编码模块和前述迥然不同,不做赘述。
BEVFormer的中心是中间的BEV特征编码模块,BEV特征编码模块的中心是时序自注意力(Temporal Self-Attention)和空间穿插注意力(Spatial Cross-Attention),时序注意力是为了运用前史帧BEV特征增强当前帧BEV特征,空间穿插注意力则是为了从图画特征获取信息。
图2‑7 BEVFormer结构[12]
详细地,BEVFormer的时序自注意力首要运用车辆运动信息将当前帧BEV特征和前史帧BEV特征进行对齐,然后再运用自注意力交融两者信息,由于车辆运动信息或许禁绝,不同时刻周围的可运用信息分布也不共同,所以详细运用的是图2‑8所示的可变形注意力机制。
图2‑8 时序可变形自注意力[12]
BEVFormer的空间穿插注意力首要为每个格子在Z方向上采样4个值,得到一个格子上的4个参考点,然后与图画特征进行穿插注意力,获得图画特征。如图2‑9所示,这儿的穿插注意力也选用可变形注意力机制。
图2‑9 空间可变形穿插注意力[12]
丢失函数的计算和Detr3D共同,不再赘述。
2.3.3. PETR
3D->2D的计划一般都需求将参考点投影到PV空间,再取图画特征,PETR避免了复杂的3D->2D转化及特征采样,直接让网络自己学习2D-3D的映射。PETR的结构如图2‑10所示,包括图画特征编码器、3D坐标生成器、3D特征编码器(3D Position Encoder)、3D特征解码器和检测头。图画特征编码器迥然不同,不再赘述。
图2‑10 PETR结构[6]
3D坐标生成器生成视锥空间的一系列3D点,详细地,首要将相机视锥空间离散成巨细为的网格,网格中的每一点用表明。3D空间中一个点用表明。经过相机内外参能够将相机视锥空间转化到3D空间中。最终再进行归一化。
2D图画特征和3D坐标一同送入到3D特征编码器中,2D特征进行卷积通道降维,3D坐标进行位置编码,然后将处理后的2D特征和3D坐标编码整合,最终特征展平。
图2‑11 3D特征编码器[6]
3D特征解码器先在3D空间生成一系列随机点,再经过MLP生成可学习的query,query在3D特征中取特征,最终运用检测头进行检测。丢失函数与Detr3D迥然不同,不再赘述。
3. 总结展望
本文从BEV的根底动身,介绍了视觉BEV具有代表性的计划。视觉BEV现已展现出强大的场景了解能力。可是还存在很多值得探究且有挑战的方向[13]:
深度估量是BEV的中心,LSS、Pseudo-LiDAR、激光蒸馏、立体视觉或运动恢复结构等都是有前景的方向。
怎么交融传感器的信息也是至关重要的,运用Transformer的自注意力、穿插注意力交融不同模态的特征现已被证明是个可行的方向。多模态中CLIP的文本-图画对也是个很有启示的思路。
泛化性是深度学习亘古不变的话题和尽力的方向,在一个设备(数据)上练习好的模型在另一个设备(数据)体现是否相同好。每个设备都要支付练习成本是让人难以接受的。怎么将模型和设备解耦在未来一段时间都将是重要的研究方向。
大模型或许根底模型现已在不同范畴上获得令人印象深入的成果,并一举成为SOTA。在BEV感知中怎么运用大模型中丰厚的知识,在更多的任务上获得更好的作用,这将会逐渐引起人们的重视。
4. 参考文献
[1] Bencheng Liao, Shaoyu Chen, Xinggang Wang, et al. Maptr: Structured modeling and learning for online vectorized hd map construction[J]. arXiv preprint arXiv:2208.14437,2022,
[2] Yuzhe He, Shuang Liang, Xiaofei Rui, et al. EgoVM: Achieving Precise Ego-Localization using Lightweight Vectorized Maps[J]. arXiv preprint arXiv:2307.08991,2023,
[3] Jonah Philion and Sanja Fidler. Lift, splat, shoot: Encoding images from arbitrary camera rigs by implicitly unprojecting to 3d[A]. Springer: 194-210
[4] Yan Wang, Wei-Lun Chao, Divyansh Garg, et al. Pseudo-lidar from visual depth estimation: Bridging the gap in 3d object detection for autonomous driving[A]. 8445-8453
[5] Yue Wang, Vitor Campagnolo Guizilini, Tianyuan Zhang, et al. Detr3d: 3d object detection from multi-view images via 3d-to-2d queries[A]. PMLR: 180-191
[6] Yingfei Liu, Tiancai Wang, Xiangyu Zhang, et al. Petr: Position embedding transformation for multi-view 3d object detection[A]. Springer: 531-548
[7] Jifeng Dai, Haozhi Qi, Yuwen Xiong, et al. Deformable convolutional networks[A]. 764-773
[8] Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable detr: Deformable transformers for end-to-end object detection[J]. arXiv preprint arXiv:2010.04159,2020,
[9] Junjie Huang, Guan Huang, Zheng Zhu, et al. Bevdet: High-performance multi-camera 3d object detection in bird-eye-view[J]. arXiv preprint arXiv:2112.11790,2021,
[10] Yinhao Li, Zheng Ge, Guanyi Yu, et al. BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection[J]. Proceedings of the AAAI Conference on Artificial Intelligence,2023,37(2): 1477-1485
[11] Nicolas Carion, Francisco Massa, Gabriel Synnaeve, et al. End-to-end object detection with transformers[A].Springer: 213-229
[12] Zhiqi Li, Wenhai Wang, Hongyang Li, et al. Bevformer: Learning bird’s-eye-view representation from multi-camera images via spatiotemporal transformers[A].Springer: 1-18
[13] Hongyang Li, Chonghao Sima, Jifeng Dai, et al. Delving into the Devils of Bird’s-eye-view Perception: A Review, Evaluation and Recipe[J]. arXiv preprint arXiv:2209.05324,2022,