点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
今天自动驾驶之心很荣幸邀请到Garfield,为大家分享自动驾驶中基于Transformer的单目BEV感知!如果您有相关工作需要分享,请在文末联系我们!
>>点击进入→自动驾驶之心【BEV感知】技术交流群
后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!
基于多视角摄像头的3D目标检测在鸟瞰图下的感知(Bird's-eye-view Perception, BEV Perception) 吸引了越来越多的注意力。一方面,将不同视角在BEV下统一与表征是很自然的描述,方便后续规划控制模块任务;另一方面,BEV下的物体没有图像视角下的尺度(scale)和遮挡(occlusion)问题。如何优雅的得到一组BEV下的特征描述,是提高检测性能的关键。量产级自动驾驶需要可扩展的三维世界推理。当自动驾驶汽车和其他交通代理在道路上移动时,大多数时候推理不需要考虑高度,使鸟瞰图 (Birds-Eye-View) 足以表示。
传统的自动驾驶堆栈的架构如上图所示
上图展示了一个传统的自动驾驶堆栈(为简单起见,此处省略了本地化等许多方面)。在此图中,圆圈代表功能模块,并根据它们所在的空间进行颜色编码。绿色模块出现在 2D 中,蓝色模块出现在 BEV 中。只有相机感知发生在 2D 空间中,或者更准确地说,是获取机载相机图像的透视空间。它依靠具有大量手工制作规则的传感器融合将 2D 检测提升到 3D,可选择借助雷达或激光雷达的 3D 测量。
在这里,之所以把这些东西定义为传统,至少有两个原因。首先,相机感知仍然发生在透视空间中,与最近的单目 3D 物体检测趋势相反,来自多模式传感器的结果以后期融合方式融合(与早期融合相反,早期融合将传感器数据输入神经网络以进行数据驱动关联和几何推理)。
对于相机感知,转向 BEV 将是非常有益的。首先,直接在 BEV 中执行相机感知可以直接与来自其他模式(例如雷达或激光雷达)的感知结果相结合,因为它们已经在 BEV 中表示和使用。BEV 空间中的感知结果也很容易被预测和规划等下游组件使用。其次,纯粹依靠手工制定的规则将 2D 观察提升到 3D 是不可扩展的。BEV 表示有助于过渡到早期融合pipelines,使融合过程完全由数据驱动。最后,在纯视觉系统(没有雷达或激光雷达)中,在 BEV 中执行感知任务几乎成为强制,因为在传感器融合中没有其他 3D 提示可用于执行此视图转换。
这里也推荐自动驾驶之心出品的BEV感知系列课程:卷感知还要看BEV!首个详细入门BEV感知的学习路线(纯视觉+多传感器融合)
单目BEV(Bird's Eye View)感知是指利用一台单独的摄像机来获取BEV图像,对车辆周围环境进行感知和理解。它是自动驾驶、智能辅助驾驶等领域中常用的感知方法之一,具有以下一些优点:
提供更全面的视角:相较于前置摄像头等单向摄像头的拍摄角度,单目BEV感知可以提供更全面的视角。因为它在顶部高处拍摄,能够捕捉到车辆周围更广阔的区域,并能够提供更多的特征信息,包括车辆、人行道、街道名称、草坪、游泳池等特征,而这些特征对于自主驾驶和场景理解非常重要。
提高辨识度:BEV图像能够对场景进行透视变换,将平面上的车辆或物体映射到图像上,从而提高了辨识度。并且相对于车辆摄像头等其他感知方法,BEV感知所获取的图像场景更为独特,因此具有较高的判别性。
降低成本:相对于使用多个摄像头的方法,单目BEV感知能够降低整个系统的成本。因为多个摄像头需要更多的硬件开销,并且需要进行多个摄像头间的图像校准和融合,增加了系统的复杂度和成本。
适用广泛:BEV相机拍摄的图像可以提供更全面的观察角度,因此被广泛应用于无人驾驶、自动驾驶、智能停车、交通管理等场景中。综上所述,单目BEV感知在自动驾驶领域中非常重要,具有提供全面视角、提高辨识度、降低系统成本等优点,随着计算机视觉技术的不断发展和进步,其应用范围和意义也将不断扩大和深入。
在过去的一年里,单目 BEV 感知主要出聚焦于以下三种方法:
IPM:这是基于平坦地面假设的简单基线。Cam2BEV 可能不是第一项这样做的工作,而是一项相当近期的相关工作。它使用 IPM 进行特征变换,并使用 CNN 校正不在 2D 路面上的 3D 物体的变形。
Lift-splat:在 BEV 上使用单深度估计和 splat 提升到 3D。这一趋势由 Lift-Splat-Shoot 发起,许多后续工作如 [BEV-Seg](https://arxiv.org/abs/ 2006.11436)、CaDDN 和 FIERY。
MLP:使用 MLP 对视图转换进行建模。主要的代表方法有VPN、Fishing Net、HDMapNet。
Transformers:使用基于自注意力的Transformer对视图转换进行建模。或者更具体地说,基于 cross-attention 的 transformer 模块。自 2020 年年中以来,并且至少到 2021 年底,Transformers 席卷了Computer Vision领域,这一趋势开始显示出最初attention。
在这篇评论博文中,我将重点关注最新的趋势——使用 Transformers 进行视图转换。
Transformers 的一般架构大家了解的一般也比较多了,因此我们在此不再重点介绍。由于global的attention机制,Transformers 更适合执行view转换的工作。目标的domain中的每个位置都具有相同的距离来访问源域中的任何位置,克服了 CNN 中卷积层局部受限的receptive fields。
视觉Transformer是一种基于自注意力机制的神经网络模型,被广泛用于计算机视觉领域中的图像处理任务。与传统的卷积神经网络(CNNs)不同,视觉Transformer在不使用卷积操作的情况下对图像进行处理。
视觉Transformer模型由多个层次组成,每个层次都包括多头自注意力模块和前馈神经网络模块。自注意力模块是模型的核心组件,它能够自适应地关注输入的不同区域,并学习到区域之间的关系。前馈神经网络模块则用于对每个位置的特征进行非线性变换和扩展。
与传统的CNNs相比,视觉Transformer具有以下几个优点:
更好的全局视野:自注意力机制能够关注整个图像,而不是像卷积神经网络一样只能关注固定大小的局部区域。因此,视觉Transformer在处理图像中的长程依赖性问题时表现更好。
更好的可解释性:由于自注意力机制能够对不同位置之间的关系进行建模,因此视觉Transformer模型的特征映射可以被解释为输入图像中的不同部分之间的关系。这使得模型的预测结果更容易被理解和解释。
更好的灵活性:视觉Transformer模型可以适用于不同大小的输入图像,而不像卷积神经网络那样需要预定义的固定大小的卷积核。这使得视觉Transformer更适合处理尺寸不一的图像数据,如遥感图像和医学图像等。
目前,视觉Transformer已被应用于多个计算机视觉任务,如图像分类、目标检测和图像分割等。在许多任务中,视觉Transformer已经取得了与或超过传统CNNs的性能,并成为了计算机视觉领域中的研究热点之一。
CV 中 Transformers 的许多最新进展实际上只利用了 self-attention 机制,例如被大量引用的 ViT([An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale](https ://arxiv.org/abs/2010.11929), ICLR 2021) 或 Swin Transformer (Hierarchical Vision Transformer using Shifted Windows, Arxiv 2021/03)。它们充当对骨干特征提取器的增强。然而,考虑到在大规模生产车辆上典型的资源受限嵌入式系统中部署通用 Transformer 架构的困难,self-attention 相对于得到良好支持的 CNN 的增量收益可能很难证明是合理的。在我们看到 self-attention 在 CNN 上的一些突破性优势之前,将 CNN 用于工业应用(例如量产自动驾驶)将是一个明智的选择。
另一方面,交叉注意力有更可靠的案例。将交叉注意力应用于计算机视觉的一项开创性研究是 DETR(End-to-End Object Detection with Transformers,ECCV 2020)。DETR 最具创新性的部分之一是基于称为对象查询的固定数量槽的交叉注意解码器。不同于原始的 Transformer 论文,其中每个查询被一个接一个地输入解码器(自动回归),这些查询被并行(同时)输入到 DETR 解码器中。查询的内容也是学习的,在训练前不必指定,除了查询的数量。这些查询可以看作是一个空白的、预先分配的模板来保存对象检测结果,交叉注意力解码器负责填充空白。
如上图所示,DETR 的 Cross-Attention Decoder 部分可以看作是一个跨域生成器 (source)
这激发了使用交叉注意力解码器进行视图转换的想法。输入视图被送入特征编码器(基于自注意力或基于 CNN),编码后的特征作为 K 和 V。目标视图格式的Q可以学习,只需要光栅化为Q 的值可以与网络的其余部分一起学习。
在接下来的介绍中,我们将回顾这方面的一些最相关的工作。
PYVA (Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation, CVPR 2021) 是第一个明确提到交叉注意解码器可用于视图转换以将图像特征提升到 BEV 空间的人之一。与早期的单目 BEV 感知工作类似,PYVA 对转换后的 BEV 特征执行道路布局和车辆分割。
PYVA 首先使用 MLP 将透视空间中的图像特征 X 提升到(声称的)BEV 空间中的 X'。第二个 MLP 将 X' 映射回图像空间 X'',并使用 X 和 X'' 之间的循环一致性损失来确保此映射过程保留尽可能多的相关信息。PYVA使用的Transformer是一个cross-attention模块,query Q映射到BEV空间中的BEV特征X',V和K都是透视空间中的输入X(如果我们忽略两者的区别 X 和 X”在透视空间中)。请注意,在 BEV 空间中没有对 X' 的显式监督,并且在 BEV 空间中受到下游任务损失的隐式监督。在 PYVA 中,似乎是 MLP 完成了 View Transform 的繁重提升,而在 BEV 中交叉注意力被用来增强提升的特征。然而,由于在 BEV 空间中没有对生成的查询的明确监督,从技术上讲,很难将这两个组件的贡献分开。对此进行消融研究有助于澄清这一点。
NEAT (Neural Attention Fields for End-to-End Autonomous Driving, ICCV 2021) 在使用基于 MLP 的迭代注意力将图像特征提升到 BEV 空间之前,使用 Transformers 增强图像特征空间中的特征。本文的目标是可解释的、高性能的、端到端的自动驾驶,但我们在这里只关注可解释的中间 BEV 表示的生成。
如上图所示NEAT的结构。Encoder 块中使用的 Transformer 是基于自注意力的。作者还承认,“可以在不改变输出维度的情况下从我们的编码器中移除转换器,但我们将其包括在内,因为它根据我们的消融研究提供了改进”。正如我们上面所讨论的,配备自注意力模块的编码器可以被视为一个美化的主干,它不是本研究的重点。
最有趣的部分发生在神经注意域 (NEAT) 模块中。对于给定的输出位置(x,y),MLP用于将输出位置和图像特征作为输入,生成与输入特征图像具有相同空间维度的注意力图。然后使用注意力图对原始图像特征进行点积,以生成给定输出位置的目标 BEV 特征。如果我们遍历所有可能的 BEV 网格位置,那么我们可以将 NEAT 模块的输出平铺到 BEV 特征图。
这个 NEAT 模块与交叉注意力机制非常相似。主要区别在于 Q 和 K 之间的相似性测量步骤被 MLP 取代。我们在这里忽略了其他一些次要细节,例如 Softmax 操作和值 V 的线性投影。在数学上,我们有以下用于 MLP、交叉注意力和 NEAT 的公式。
Decoder部分还使用 MLP 生成查询位置 (x, y) 的所需语义。如果我们将 NEAT 输出平铺到 BEV 特征图中,MLP 将特定位置的特征和位置坐标作为输入,相当于在 BEV 特征图上进行 1x1 卷积,将 (x, y) 连接到特征图 . 此操作与 CoordConv(NeurIPS 2018) 非常相似。这是将 BEV 特征图用于下游 BEV 感知任务的相当标准的做法。我们甚至可以超越 1x1 卷积,通过堆叠 3x3 卷积进一步提高性能,以增加 BEV 空间中的感受野。
总之,NEAT 使用交叉注意的变体(MLP 来代替相似性测量)将相机图像提升到 BEV 空间。
STSU (Structured Bird’s-Eye-View Traffic Scene Understanding from Onboard Images, ICCV 2021) 遵循 DETR 的做法,使用稀疏查询进行对象检测。STSU 不仅可以检测动态物体,还可以检测静态道路布局。由于作者相同,本文follow了 BEV Feature Stitching 。
STSU 使用两组查询向量,一组用于中心线,一组用于对象。最有趣的是它对结构化道路布局的预测。车道分支包括几个预测头。
检测的head来预测是否存在由某个查询向量编码的车道。
控制的head来预测 R 贝塞尔曲线 控制点的位置。
关联的head来预测用于聚类的嵌入向量。
关联分类器接受2个嵌入向量并判断中心线对是否关联。
贝塞尔曲线非常适合中心线,因为它允许我们使用固定数量的 2D 点对任意长度的曲线进行建模。这也是这份工作取得如此大成就的原因之一。
DETR3D (3D Object Detection from Multi-view Images via 3D-to-2D Queries, CoRL 2021) 遵循 DETR 的做法,也使用稀疏查询进行对象检测。与 STSU 类似,但 DETR3D 侧重于动态对象。查询在 BEV 空间中,它们使 DETR3D 能够直接在 BEV 空间中操作预测,而不是对图像特征进行密集转换。
BEV 感知优于 mono3D 的一个优势是在相机重叠区域,在该区域中,对象更有可能被相机视野裁剪。Mono3D 方法必须根据来自每个摄像机视点的有限信息来预测每个摄像机中的裁剪对象,并依靠全局 NMS 来抑制冗余框。DETR3D 专门评估了图像边界处的此类裁剪对象(约占整个数据集的 9%),发现 DETR3D 比 mono3D 方法有显着改进。Tesla AI Day 也报道了这一点。
DETR3D 使用多种技巧来提高性能。首先是对象查询的迭代细化。本质上,BEV 中的 bbox 中心预测被重新投影回具有相机变换矩阵(内部和外部)的图像,并且对多相机图像特征进行采样和集成以优化查询。这个过程可以重复多次以提高性能。第二个技巧是使用预训练的 mono3D 网络主干来提高性能。对于基于 Transformers 的 BEV 感知网络,初始化似乎非常重要。
Translating Images into Maps 注意到,无论图像像素的深度如何,图像中的垂直扫描线(图像列)与穿过 BEV 图中相机位置的极光之间存在 1–1 的对应关系。这类似于 OFT (BMVC 2019) 和 PyrOccNet (CVPR 2020) 的想法,其中 沿投射回 3D 空间的射线在像素位置涂抹特征。
在列方向使用axial cross-attention Transformer,在行方向使用卷积,显着节省了计算量。
在 2021 年的 Tesla AI Day 上,Tesla 揭示了为 Tesla FSD 提供动力的神经网络的许多复杂内部工作原理。最有趣的构建块之一是一个被称为“图像到 BEV 变换 + 多相机融合”的构建块。这个块的中心是一个 Transformer 模块,或者更具体地说,是一个 cross-attention 模块。
虽然特斯拉提到他们用的是multi-headed self-attention,但是他描述的很明显是一个cross-attention机制,而且他slides右边的图表也指向了原来的cross-attention block。
这个视图转换中最有趣的部分是 BEV 空间中的查询。它是从 BEV 空间中的栅格(空白、预分配模板,如 DETR 中)生成的,并与位置编码 (PE) 连接。还有一个 Context Summary 与位置编码拼贴。该图没有显示上下文摘要是如何生成和与位置编码一起使用的细节,但我认为有一个全局池可以折叠透视空间中的所有空间信息,还有一个平铺操作可以将这个 1x1 张量平铺在预定义的BEV 网格。
在BEV任务中,Transformer和MLP是两种常用的网络结构。它们都可以用于实现对BEV图像的处理和特征提取,但具有不同的特点和适用场景。
Transformer是一种基于自注意力机制的网络结构,旨在处理序列数据,其主要优点是能够根据输入数据的内部关系来计算其特征表示。因此它非常适合处理具有明显空间结构的BEV图像数据。Transformer模型通常由多个encoder和decoder模块组成,每个模块都包含了多头自注意力和前向神经网络等子模块,可以对输入数据进行有效地编码和解码。此外,Transformer还具有较高的并行性,能够处理大规模的数据集。
MLP是多层感知机的缩写,通常用于处理结构化数据和图像数据。它通过一系列全连接层对输入数据进行非线性变换和处理,从而得到高层次的特征表示。相比之下,MLP的结构比较简单,但通常具有更高的表达能力。在BEV图像处理任务中,MLP可以作为特征提取器,从BEV图像中提取出关键的特征,同时还可以与其他结构(例如卷积层)结合使用,以更好地适应不同的任务需求。
总的来说,Transformer适用于处理具有明显空间结构的BEV图像数据,而MLP适用于提取高层次特征并与其他结构组合使用以适应不同的任务需求。
随着自动驾驶技术的发展和普及,BEV(Bird's Eye View)将会变得越来越重要。BEV在自动驾驶中的应用将会越来越广泛,成为一个核心技术之一。通过BEV,车辆可以全方位地观察周围环境,更为精准地规划路线和行驶路径,并最终实现高度自动驾驶。同时,其精度和分辨率将会得到进一步提高。通过不断地改进计算机视觉技术、图像判断技术和深度学习算法,BEV技术将会更加精细和高分辨,能够提取更多的环境信息和细节。进一步的, BEV的智能的解析和理解将会得到更好的支持。随着自动驾驶技术的发展,系统对于环境信息的解析和理解能力需要不断提高。未来的BEV技术将会结合更多的智能科技,比如机器学习、人工智能等,以更好地理解和识别环境中的各种物体和障碍物。BEV技术的应用场景将会越来越多样化。BEV技术不仅可以应用于自动驾驶,还可以广泛应用于交通管制、城市管理、路况监控等领域。例如,在城市管理中,BEV技术可以用来监控城市道路建设和交通拥堵情况,为城市规划和交通调控提供数据支持。
BEV技术在未来将会得到广泛应用和发展,而随着核心技术的不断加强,它将会在自动驾驶领域等多个领域中发挥越来越重要的作用。
国内首个自动驾驶学习社区
近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;
添加汽车人助理微信邀请入群
备注:学校/公司+方向+昵称