#自动驾驶数据闭环最前沿论文

近几年,自动驾驶技术的发展日新月异。从ECCV 2020的NeRF问世再到SIGGRAPH 2023的3DGS,三维重建走上了快速发展的道路!再到自动驾驶端到端技术的问世,与之相关的仿真闭环开始频繁出现在大众视野中,新兴的三维重建技术由此在自动驾驶领域也逐渐焕发新机。2023年8月特斯拉发布FSD V12;2024年4月商汤绝影发布面向量产的端到端自动驾驶解决方法UniAD;2024年7月理想夏季发布会宣称端到端正式上车,快系统4D One Model、慢系统VLM,并首次提出『重建+生成』的世界模型测试方案

可以说,端到端+仿真闭环是当下自动驾驶发展的主流路线。但是仿真闭环提了很多年,到底什么是仿真闭环?仿真闭环的核心又是什么?三维重建又在闭环中起到什么样的作用?业内也一直在讨论,百花齐放。无论如何,闭环的目的是明确的,降低实车测试的成本和风险、有效提高模型的开发效率进而优化系统性能、测试各种corner case并优化整个端到端算法。

今天就和大家盘一盘自动驾驶中新兴的三维重建技术相关算法。

MARS: An Instance-aware, Modular and Realistic Simulator for Autonomous Driving(CICAI 2023)

  • 论文链接:https://arxiv.org/abs/2307.15058v1
  • 代码链接:https://github.com/OPEN-AIR-SUN/mars

清华AIR提出的首个开源自动驾驶NeRF仿真工具!如今自动驾驶汽车在普通情况下可以平稳行驶,人们普遍认为,逼真的传感器仿真将在通过仿真解决剩余的corner case方面发挥关键作用。为此,我们提出了一种基于神经辐射场(NeRFs)的自动驾驶仿真器。与现有的工作相比,我们有三个显著的特点:

  • Instance-aware:前景目标和背景,单独建模,因此可以保证可控性
  • Modular:模块化设计,便于集成各种SOTA的算法进来
  • Realistic:由于模块化的设计,不同模块可以灵活选择比较好的算法实现,因此效果SOTA。

UniSim: A Neural Closed-Loop Sensor Simulator(CVPR 2023)

  • 论文链接:https://arxiv.org/abs/2308.01898v1
  • 项目主页:https://waabi.ai/unisim/

Waabi和多伦多大学在CVPR 2023上的工作:严格测试自动驾驶系统对于实现安全的自动驾驶汽车(SDV)至关重要。它要求人们生成超出世界上安全收集范围的安全关键场景,因为许多场景很少发生在公共道路上。为了准确评估性能,我们需要在闭环中测试这些场景中的SDV,其中SDV和其他参与者在每个时间步相互作用。以前记录的驾驶日志为构建这些新场景提供了丰富的资源,但对于闭环评估,我们需要根据新的场景配置和SDV的决定修改传感器数据,因为可能会添加或删除参与者,现有参与者和SDV之间的轨迹将与原始轨迹不同。本文介绍了UniSim,这是一种神经传感器模拟器,它将配备传感器的车辆捕获的单个记录日志转换为现实的闭环多传感器模拟。UniSim构建神经特征网格来重建场景中的静态背景和动态参与者,并将它们组合在一起,以在新视角仿真LiDAR和相机数据,添加或删除参与者以及新的位置。为了更好地处理外推视图,我们为动态目标引入了可学习的先验,并利用卷积网络来完成看不见的区域。我们的实验表明,UniSim可以在下游任务中模拟具有较小域间隙的真实传感器数据。通过UniSim,我们演示了在安全关键场景下对自主系统的闭环评估,就像在现实世界中一样。UniSim的主要贡献如下:

  • 高度逼真(high realism): 可以准确地模拟真实世界(图片和LiDAR), 减小鸿沟(domain gap )
  • 闭环测试(closed-loop simulation): 可以生成罕见的危险场景测试无人车, 并允许无人车和环境自由交互
  • 可扩展 (scalable): 可以很容易的扩展到更多的场景, 只需要采集一次数据, 就能重建并仿真测
  • 知乎解读:https://zhuanlan.zhihu.com/p/636695025
  • 一作直播:https://www.bilibili.com/video/BV1nj41197TZ

EmerNeRF: Emergent Spatial-Temporal Scene Decomposition via Self-Supervision

  • 论文链接:https://arxiv.org/abs/2311.02077v1
  • 代码链接:https://github.com/NVlabs/EmerNeRF

加利福尼亚大学的工作:本文提出了EmerNeRF,这是一种简单而强大的学习动态驾驶场景时空表示的方法。EmerNeRF以神经场为基础,通过自举同时捕获场景几何、外观、运动和语义。EmerNeRF依赖于两个核心组件:首先,它将场景划分为静态和动态场。这种分解纯粹源于自监督,使我们的模型能够从一般的、野外的数据源中学习。其次,EmerNeRF将动态场中的感应流场参数化,并使用该流场进一步聚合多帧特征,从而提高了动态目标的渲染精度。耦合这三个场(静态、动态和流)使EmerNeRF能够自给自足地表示高度动态的场景,而无需依赖GT标注或预先训练的模型进行动态目标分割或光流估计。我们的方法在传感器仿真中实现了最先进的性能,在重建静态(+2.93 PSNR)和动态(+3.70 PSNR)场景时明显优于以前的方法。此外,为了支持EmerNeRF的语义泛化,我们将2D视觉基础模型特征提升到4D时空中,并解决了现代变形金刚中的普遍位置偏差问题,显著提高了3D感知性能(例如,职业预测精度平均相对提高了37.50%)。最后,我们构建了一个多样化且具有挑战性的120序列数据集,用于在极端和高度动态的环境下对神经场进行基准测试。总结来说,本文的主要贡献如下:

  • EmerNeRF是一种新颖的4D神经场景表示框架,在具有挑战性的自动驾驶场景中表现出色。EmerNeRF通过自监督执行静态动态分解和场景流估计;
  • 一种简化的方法,可以解决ViT中位置嵌入图案的不良影响,该方法可立即应用于其他任务;
  • 我们引入NOTR数据集来评估各种条件下的神经场,并促进该领域的未来发展;
  • EmerNeRF在场景重建、新视角合成和场景流估计方面实现了最先进的性能。

NeuRAD: Neural Rendering for Autonomous Driving

  • 论文链接:https://arxiv.org/abs/2311.15260v3
  • 代码链接:https://github.com/georghess/neurad-studio

Zenseact的工作:神经辐射场(NeRF)在自动驾驶(AD)领域越来越受欢迎。最近的方法表明,NeRF具有闭环仿真的潜力,能够测试AD系统,并作为一种先进的训练数据增强技术。然而,现有的方法通常需要较长的训练时间、密集的语义监督或缺乏可推广性。这反过来又阻止了NeRFs大规模应用于AD。本文提出了NeuRAD,这是一种针对动态AD数据量身定制的鲁棒新型视图合成方法。我们的方法具有简单的网络设计,对相机和激光雷达进行了广泛的传感器建模,包括滚动快门、光束发散和光线下降,适用于开箱即用的多个数据集。我们在五个流行的AD数据集上验证了它的性能,全面实现了最先进的性能。

DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes

  • 论文链接:https://arxiv.org/abs/2312.07920v3
  • 项目主页:https://pkuvdig.github.io/DrivingGaussian/

北大&谷歌的工作:本文提出了DrivingGaussian模型,这是一个用于环视动态自动驾驶场景的高效和有效的框架。对于具有运动目标的复杂场景,DrivingGaussian首先使用增量静态3D高斯对整个场景的静态背景进行顺序和渐进的建模。然后利用复合动态高斯图来处理多个运动目标,分别重建每个目标并恢复它们在场景中的准确位置和遮挡关系。我们进一步使用激光雷达先验进行 Gaussian Splatting,以重建具有更多细节的场景并保持全景一致性。DrivingGaussian在动态驱动场景重建方面优于现有方法,能够实现高保真度和多相机一致性的逼真环绕视图合成。总结来说,本文的主要贡献如下:

  • 据我们所知,DrivingGaussian是基于复合Gaussian Splatting的大规模动态驾驶场景的第一个表示和建模框架;
  • 引入了两个新模块,包括增量静态3D高斯图和复合动态高斯图。前者逐步重建静态背景,而后者用高斯图对多个动态目标进行建模。在激光雷达先验的辅助下,所提出的方法有助于在大规模驾驶场景中恢复完整的几何形状;
  • 综合实验表明,Driving Gaussian在挑战自动驾驶基准测试方面优于以前的方法,并能够为各种下游任务进行角情况仿真;

Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting(ECCV 2024)

  • 论文链接:https://arxiv.org/abs/2401.01339v2
  • 代码链接:https://github.com/zju3dv/street_gaussians

浙大&理想在ECCV 2024上的工作:本文旨在解决自动驾驶场景中动态城市街道的建模问题。最近的方法通过将跟踪的车辆姿态结合到车辆动画中来扩展NeRF,实现了动态城市街道场景的照片级逼真视图合成。然而,它们的训练速度和渲染速度都很慢。为此本文引入了Street Gaussians,这是一种新的显式场景表示,可以解决这些限制。具体来说,动态城市场景被表示为一组配备语义逻辑和3D高斯的点云,每个点云都与前景车辆或背景相关联。为了仿真前景目标车辆的动力学,每个目标点云都使用可优化的跟踪姿态进行优化,并使用4D球谐模型进行动态外观优化。显式表示允许轻松组合目标车辆和背景,这反过来又允许在半小时的训练内以135 FPS(1066×1600分辨率)进行场景编辑操作和渲染。该方法在多个具有挑战性的基准上进行了评估,包括KITTI和Waymo Open数据集。实验表明在所有数据集上,所提出的方法始终优于最先进的方法。

GaussianPro: 3D Gaussian Splatting with Progressive Propagation

  • 论文链接:https://arxiv.org/abs/2402.14650v1
  • 代码链接:https://github.com/kcheng1021/GaussianPro

中科大&港大的工作:3DGS的出现最近在神经渲染领域带来了一场革命,促进了实时速度的高质量渲染。然而,3DGS在很大程度上依赖于运动结构(SfM)技术产生的初始化点云。当处理不可避免地包含无纹理曲面的大规模场景时,SfM技术总是无法在这些曲面上产生足够的点,也无法为3DGS提供良好的初始化。因此,3DGS存在优化困难和渲染质量低的问题。在这篇论文中,受经典多视图立体(MVS)技术的启发,我们提出了GaussianPro,这是一种应用渐进传播策略来指导3D Gaussian致密化的新方法。与3DGS中使用的简单分割和克隆策略相比,我们的方法利用场景现有重建几何的先验和补丁匹配技术来生成具有精确位置和方向的新高斯分布。在大规模和小规模场景上的实验验证了我们方法的有效性,我们的方法在Waymo数据集上显著超过了3DGS,在PSNR方面提高了1.15dB。

LidaRF: Delving into Lidar for Neural Radiance Field on Street Scenes

  • 论文链接:https://arxiv.org/abs/2405.00900v2

加州大学欧文分校的工作:真实仿真在自动驾驶等应用中起着至关重要的作用,神经辐射场(NeRF)的进步可以通过自动创建数字3D资产来实现更好的可扩展性。然而,由于共线相机的大运动和高速下的稀疏样本,街道场景的重建质量会受到影响。另一方面,实际使用通常要求从偏离输入的相机视图进行渲染,以准确模拟车道变换等行为。在这篇论文中,我们提出了几个见解,可以更好地利用激光雷达数据来提高街道场景的NeRF质量。首先,我们的框架从激光雷达中学习几何场景表示,将其与隐式基于网格的表示融合用于辐射解码,然后提供显式点云提供的更强几何信息。其次提出了一种鲁棒的遮挡感知深度监督方案,该方案允许通过累积来利用密集的激光雷达点。第三本文从激光雷达点生成增强训练视图,以进一步改进。我们的见解转化为在真实驾驶场景下大大改进的新视图合成。

Gaussian: Self-Supervised Street Gaussians for Autonomous Driving

  • 论文链接:https://arxiv.org/abs/2405.20323v1

UC Berkeley&北大&清华的工作:街道场景的真实感3D重建是开发自动驾驶仿真的关键技术。尽管神经辐射场(NeRF)在驾驶场景中的效率很高,但3DGS因其更快的速度和更明确的表示而成为一个有前景的方向。然而,大多数现有的街道3DGS方法需要跟踪的3D车辆边界框来分解静态和动态元素以进行有效的重建,这限制了它们在自由场景中的应用。为了在没有标注的情况下实现高效的3D场景重建,我们提出了一种自监督街道高斯(S3Gaussian)方法,用于从4D一致性中分解动态和静态元素。我们用3D高斯分布来表示每个场景,以保持其明确性,并进一步用时空场网络来压缩4D动力学模型。我们在具有挑战性的Waymo Open数据集上进行了广泛的实验,以评估我们方法的有效性。我们的S3Gaussian展示了分解静态和动态场景的能力,并在不使用3D标注的情况下实现了最佳性能。

Dynamic 3D Gaussian Fields for Urban Areas

  • 论文链接:https://arxiv.org/abs/2406.03175v1
  • 代码链接:https://github.com/tobiasfshr/map4d(待开源)

ETH和Meta的工作:本文提出了一种高效的神经3D场景表示方法,用于大规模动态城市地区的新视图合成(NVS)。由于其有限的视觉质量和非交互式渲染速度,现有工作品不太适合混合现实或闭环仿真等应用。最近,基于光栅化的方法以令人印象深刻的速度实现了高质量的NVS。然而,这些方法仅限于小规模、均匀的数据,即它们无法处理由于天气、季节和光照引起的严重外观和几何变化,也无法扩展到具有数千张图像的更大、动态的区域。我们提出了4DGF,这是一种神经场景表示,可扩展到大规模动态城市区域,处理异构输入数据,并大大提高了渲染速度。我们使用3D高斯作为高效的几何支架,同时依赖神经场作为紧凑灵活的外观模型。我们通过全局尺度的场景图集成场景动力学,同时通过变形在局部层面建模关节运动。这种分解方法实现了适用于现实世界应用的灵活场景合成。在实验中,我们绕过了最先进的技术,PSNR超过3dB,渲染速度超过200倍。

StreetSurf: Extending Multi-view Implicit Surface Reconstruction to Street Views

  • 论文链接:https://arxiv.org/abs/2306.04988v1
  • 代码链接:https://github.com/pjlab-ADG/neuralsim

上海AI Lab和商汤的工作:本文提出了一种新的多视图隐式表面重建技术,称为StreetSurf,该技术很容易应用于广泛使用的自动驾驶数据集中的街景图像,如Waymo感知序列,而不一定需要LiDAR数据。随着神经渲染研究的迅速发展,将其整合到街景中开始引起人们的兴趣。现有的街景方法要么主要关注新视图合成,很少探索场景几何,要么在研究重建时严重依赖密集的LiDAR数据。他们都没有研究多视图隐式表面重建,特别是在没有激光雷达数据的情况下。我们的方法扩展了现有的以目标为中心的神经表面重建技术,以解决由非以目标为核心、长而窄的相机轨迹捕获的无约束街景所带来的独特挑战。我们将无约束空间划分为近距离、远景和天空三个部分,具有对齐的长方体边界,并采用长方体/超长方体哈希网格以及路面初始化方案,以实现更精细和更复杂的表示。为了进一步解决无纹理区域和视角不足引起的几何误差,我们采用了使用通用单目模型估计的几何先验。再加上我们实施了高效细粒度的多级光线行进策略,我们使用单个RTX3090 GPU对每个街道视图序列进行训练,仅需一到两个小时的时间,即可在几何和外观方面实现最先进的重建质量。此外,我们证明了重建的隐式曲面在各种下游任务中具有丰富的潜力,包括光线追踪和激光雷达模拟。

AutoSplat: Constrained Gaussian Splatting for Autonomous Driving Scene Reconstruction

  • 论文链接:https://arxiv.org/abs/2407.02598v2

多伦多大学和华为诺亚的工作:逼真的场景重建和视图合成对于通过仿真安全关键场景来推进自动驾驶系统至关重要。3DGS在实时渲染和静态场景重建方面表现出色,但由于复杂的背景、动态对象和稀疏视图,在建模驾驶场景方面遇到了困难。我们提出了AutoPlat,这是一个采用Gaussian Splatting实现自动驾驶场景高度逼真重建的框架。通过对表示道路和天空区域的高斯分布图施加几何约束,我们的方法能够对包括车道变换在内的具有挑战性的场景进行多视图一致的模拟。利用3D模板,我们引入了反射高斯一致性约束来监督前景对象的可见面和不可见面。此外,为了模拟前景对象的动态外观,我们估计了每个前景高斯的残差球面谐波。在Pandaset和KITTI上进行的大量实验表明,AutoPlat在各种驾驶场景中的场景重建和新颖视图合成方面优于最先进的方法。

DHGS: Decoupled Hybrid Gaussian Splatting for Driving Scene

  • 论文链接:https://arxiv.org/abs/2407.16600v3

长安汽车的工作:现有的GS方法在实现驾驶场景中令人满意的新视图合成方面往往不足,主要是由于缺乏巧妙的设计和所涉及元素的几何约束。本文介绍了一种新的神经渲染方法,称为解耦混合GS(DHGS),旨在提高静态驾驶场景新型视图合成的渲染质量。这项工作的新颖之处在于,针对道路和非道路层的解耦和混合像素级混合器,没有针对整个场景的传统统一差分渲染逻辑,同时通过提出的深度有序混合渲染策略仍然保持一致和连续的叠加。此外,对由符号距离场(SDF)组成的隐式道路表示进行训练,以监控具有微妙几何属性的路面。伴随着辅助传输损耗和一致性损耗的使用,最终保留了具有不可察觉边界和高保真度的新图像。在Waymo数据集上进行的大量实验证明,DHGS的性能优于最先进的方法。




#BEV+Transformer VS Occupancy Prediction

传统的 3D 场景理解方法集中在 3D 目标检测上,难以描述真实世界物体,3D 占用网络可更全面地实现 3D 场景感知。

自动驾驶在动静态障碍物感知领域的发展大概分为三个阶段:1)2D图像空间检测障碍物,映射到鸟瞰空间做多相机和时序融合;2)直接在BEV空间中完成动态障碍物的3D检测和静态障碍物的识别建模;3)直接在3D空间中感知占用关系,为系统规划可行驶空间。

论文和算法

综述论文:《A Survey on Occupancy Perception for Autonomous Driving: The Information Fusion Perspective》。MonoScene:首个单目 3D 语义占用预测算法,是后续算法的 baseline。

TPVFormer:以环视图像为输入,提出三视角表示法和 TPVFormer 模型,实现 3D 占用预测。SurroundOcc:从多个相机的 RGB 图像中实现 3D 语义占用预测。

OccFormer:使用双路 transformer 结构处理相机数据生成的 3D 体素特征。VoxFormer:支持单帧或多帧图像数据输入,特点是轻量级,对小目标检测效果好,但远距离性能需提升。

OccupancyDETR:由目标检测网络和 3D 占用解码器模块组成,对小目标检测性能好,速度快,计算资源消耗少,但对某些类别的预测效果不好。FB - OCC:由 FB - BEV 算法衍生而来,设计了视图变换模块,并对模型预训练技术进行精心设计,为参加比赛设计,略显笨重。BEVDet - Occ:从 BEVDet 衍生到 Occupancy Prediction 任务,但论文暂无。SimpleOccupancy:采用自监督的方式实现 3D 占用预测。SparseOcc:相关解读文章链接为https://zhuanlan.zhihu.com/p/709576252和https://zhuanlan.zhihu.com/p/691549750。SelfOcc:希望仅使用视频序列采用自监督学习的方式实现 3D 语义占用预测,以降低模型训练难度。OccNeRF:采用自监督学习方式实现基于多相机数据输入的 3D 语义占用预测。RenderOcc:从多视图图像中提取 NeRF 风格的 3D 体积表示,减少对昂贵的 3D 占用标注的依赖。SGN:提出新型的端到端基于纯视觉的 3D 占用预测框架 SGN,采用密集 - 稀疏 - 密集的设计。FlashOcc:通过用 2D 卷积替换 3D 卷积和用通道 - 高度变换替换占用预测来提升现有模型,速度快,计算资源消耗少,方便部署。POP3D:相关信息包括论文、代码和数据集。FastOcc:暂未开源。Co - Occ:提出基于激光 - 相机数据的多模态 3D 占用预测算法。OccGen:提出一种 noise - to - occupancy 的生成式 3D 占用预测算法,代码 coming soon。Cam4DOcc:基于相机和毫米波雷达的多模态 3D 感知框架,实现 3D 目标检测、语义占用预测多任务感知。MonoOcc:提出一个单目 3D 占用预测算法框架,通过辅助语义损失和图像条件交叉注意力模块改进效果,采用蒸馏模块。HyDRa:基于相机和毫米波雷达的多模态 3D 感知框架,实现 3D 目标检测、语义占用预测多任务感知。PanoOcc:通过基于纯视觉的 3D 全景分割解决自动驾驶感知任务分治的限制,实现仅限摄像头的 3D 场景理解的统一占用表示。GaussianFormer:暂时只放出 demo。ViewFormer:开源了可视化工具,可以对点云目标检测、Occ 预测结果等进行可视化。HTCL:相关信息包括论文和代码。Panoptic - FlashOcc:在 FlashOcc 的基础上实现了全景占用,是目前速度和精度最优的全景占用预测网络。COTR:相关信息包括论文和代码。

3D 占用预测算法的发展历程

早期阶段:传统的 3D 场景理解方法大多数集中在 3D 目标检测上,难以全面描述真实世界物体。引入 3D 占用网络:特斯拉在 2022 年提出 3D 占用网络(Occupancy Network),借鉴机器人领域的占用网格建图思想,通过预测 3D 空间中的占用概率来实现 3D 空间表示,更全面地实现 3D 场景感知。算法不断涌现:MonoScene:首个单目 3D 语义占用预测算法,成为后续算法的 baseline。TPVFormer:以环视图像为输入,提出三视角表示法和 TPVFormer 模型。SurroundOcc:从多个相机的 RGB 图像中实现 3D 语义占用预测。OccFormer:使用双路 transformer 结构处理相机数据生成的 3D 体素特征。VoxFormer:支持单帧或多帧图像数据输入,具有轻量级等特点。OccupancyDETR:由目标检测网络和 3D 占用解码器模块组成。FB - OCC:由 FB - BEV 算法衍生而来,对视图变换模块和模型预训练技术进行设计。其他算法:如 SimpleOccupancy、SparseOcc、SelfOcc、OccNeRF、RenderOcc、SGN、FlashOcc 等算法不断提出,各自具有不同的特点和创新。多模态和自监督学习的发展:出现了基于激光 - 相机数据的多模态 3D 占用预测算法(如 Co - Occ),以及采用自监督学习方式的算法(如 SelfOcc、OccNeRF 等),以降低模型训练难度。近期发展:不断有新的算法提出,如 Cam4DOcc、MonoOcc、HyDRa、PanoOcc、GaussianFormer、ViewFormer、HTCL、Panoptic - FlashOcc、COTR 等,算法在性能、精度、速度等方面不断提升,应用场景也逐渐扩展。

数据集

SemanticKITTI:下载地址为https://opendatalab.com/OpenDataLab/SemanticKITTI。Occ3D:基于 Waymo 和 nuScenes 数据集构建。OpenOccupancy:基于 nuScenes 数据集构建。OpenOcc:基于 nuScenes 数据集构建。SSCBench:基于 KITTI - 360、nuScenes、Waymo 等数据集构建。OpenScene:具有 Occupancy Flow 标签。LightwheelOcc:合成数据集。

两者的主要区别

传感器依赖方面的区别

参考文献

自动驾驶3D占用预测(Occupancy Prediction)算法调研mp.weixin.qq.com/s/M1J8aFOS2GZ32JRCpraQcQ

Occupancy任务| 自动驾驶感知的最后一道护城河!mp.weixin.qq.com/s/4tpoKA7rDpcF4oATpxfBPg




#FAST-LIVO2

港大强势登场:快速、直接的LiDAR-惯性-视觉里程计多传感器使用的挑战

视觉SLAM利用成本较低的CMOS传感器和镜头,能够建立精确的数据关联,从而实现一定水平的定位精度。丰富的颜色信息进一步增强了语义感知,通过利用这种增强的场景理解,深度学习方法能够用于提取稳健的特征以及过滤动态物体。视觉SLAM的局限性:

缺乏直接的深度测量,需要通过如三角测量或深度过滤等操作来同时优化地图点,这引入了显著的计算开销,往往限制了地图的精度和密度

测量噪声在不同尺度下的变化

对光照变化的敏感性

无纹理环境对数据关联的影响

LiDAR SLAM使用LiDAR传感器直接获取精确的深度测量,与视觉SLAM相比,LiDAR SLAM在定位和建图任务中表现出更高的精度和效率。尽管如此,LiDAR SLAM也存在显著的缺点:

  • 重建的点云地图虽然详细,但缺乏颜色信息,从而减少了它们所包含的信息量
  • 在几何约束不足的环境中(如狭窄的隧道或单一且延伸的墙面),LiDAR SLAM的性能往往会大幅下降

高效且准确的LiDAR-惯性-视觉里程计(LIVO)和建图仍然是一个具有挑战性的问题:

  1. 整个LIVO系统需要处理LiDAR测量数据(每秒数百到数千个点)以及高频率、高分辨率的图像。为了充分利用这些大量数据,特别是在有限的机载资源下,需要极高的计算效率
  2. 许多现有系统通常采用LiDAR-惯性里程计(LIO)子系统和视觉-惯性里程计(VIO)子系统,各自需要从视觉和LiDAR数据中提取特征以减少计算负荷。然而,在缺乏结构或纹理的环境中,这一特征提取过程往往导致特征点的不足。此外,为了优化特征提取,还需要进行广泛的工程调整,以适应LiDAR扫描模式和点密度的变化;
  3. 为了减少计算需求并实现摄像头和LiDAR测量的更紧密集成,需要一个统一的地图来同时管理稀疏点和观察到的高分辨率图像测量。然而,设计和维护这样一个地图是一个特别具有挑战性的任务,考虑到LiDAR和摄像头的异构测量数据
  4. 为了确保重建的彩色点云的准确性,姿态估计需要达到像素级的精度。实现这一标准带来了相当大的挑战:合适的硬件同步、LiDAR和摄像头之间外部参数的严格预校准、曝光时间的精确恢复,以及能够在实时中达到像素级精度的融合策略。

本文介绍的FAST-LIVO2是一种高效的LIVO系统,紧密集成了LiDAR、图像和IMU测量,通过顺序更新的误差状态迭代卡尔曼滤波器(ESIKF):

  • 利用IMU传播的先验,系统状态首先通过LiDAR测量更新,然后通过图像测量更新,两个更新过程都利用基于单一统一体素地图的直接方法。
  • 在LiDAR更新过程中,系统将原始点注册到地图上以构建和更新几何结构;在视觉更新过程中,系统直接将LiDAR地图点重新利用为视觉地图点,而无需从图像中提取、三角化或优化任何视觉特征。
  • 地图中的选定视觉地图点附有先前观察到的参考图像补丁,然后投影到当前图像中,通过最小化直接光度误差来对齐姿态(即稀疏图像对齐)。
  • 为了提高图像对齐的准确性,FAST-LIVO2动态更新参考补丁,并使用LiDAR点提供的平面先验。
  • 为了提高计算效率,FAST-LIVO2使用LiDAR点来识别当前图像中可见的视觉地图点,并在没有LiDAR点的情况下按需进行体素光线投射。
  • FAST-LIVO2还实时估算曝光时间,以应对光照变化。

整体系统

图2展示了系统流程,系统包含四个部分:ESIKF、局部建图、LiDAR测量模型和视觉测量模型。

异步采样的LiDAR点首先通过扫描重组,在摄像头采样时间点上重新组合成扫描数据。然后,通过顺序更新的ESIKF紧密结合LiDAR、图像和惯性测量(IMU)。在此过程中,系统状态首先通过LiDAR测量进行更新,然后通过图像测量进行更新,这两个过程都基于单一的统一体素地图并采用直接方法。为了构建ESIKF更新中的LiDAR测量模型,计算了帧到地图的点到平面残差。为了建立视觉测量模型,从地图中提取当前视野中的视觉地图点,利用可见体素查询和按需光线投射;在提取之后,识别并剔除视觉地图点中的离群点(例如被遮挡的点或深度不连续的点);然后计算帧到地图的图像光度误差以进行视觉更新。

用于视觉和LiDAR更新的局部地图是一个体素地图结构:LiDAR点用于构建和更新地图的几何结构,而视觉图像将图像补丁附加到选定的地图点(即视觉地图点)上,并动态更新参考补丁。更新后的参考补丁会在独立线程中进一步细化其法线向量。

具有顺序状态更新的误差状态迭代卡尔曼滤波器符号和状态转移模型

系统假设三个传感器(LiDAR、IMU和摄像头)之间的时间偏移是已知的,并且可以通过校准或提前同步来获得。将IMU坐标系(记作I)作为机体坐标系,并将第一个机体坐标系作为全局坐标系(记作G)。此外,假设这三个传感器是刚性连接的,且其外参已经预先校准。然后,第i个IMU测量时刻的离散状态转移模型为:

51c自动驾驶~合集22_自动驾驶

其中, 是IMU的采样周期,状态 、输入 、过程噪声  和函数 

其中,、 和  分别表示IMU在全局坐标系中的姿态、位置和速度, 是全局坐标系中的重力向量, 是相对于第一个帧的逆曝光时间, 是建模为随机游走的高斯噪声, 和  是IMU的原始测量值, 和  分别是  和  中的测量噪声, 和 

扫描重组

通过扫描重组,将高频、顺序采样的LiDAR原始点云重新组合成与摄像头采样时刻同步的扫描数据,如图3所示。这确保了摄像头和LiDAR数据以相同的频率(例如10 Hz)进行同步,从而允许在同一时间点更新状态。

传播

在ESIKF框架中,状态和协方差从时间 (接收到上一个LiDAR扫描和图像帧的时刻)传播到时间 (接收到当前LiDAR扫描和图像帧的时刻)。这种前向传播通过设置过程噪声  为零,来预测每个IMU输入  在  和  之间的状态。将传播状态记作  和协方差记作 ,它们将作为随后的更新的先验分布。此外,为了补偿运动畸变进行反向传播,确保点在LiDAR扫描结束时刻 

顺序更新

IMU传播得到的状态  和协方差  提供了时间点  系统状态 

51c自动驾驶~合集22_自动驾驶_02

将上述先验分布记作 ,并将LiDAR和摄像头的测量模型表示为:

51c自动驾驶~合集22_自动驾驶_03

其中, 和 

标准的ESIKF将使用所有当前测量数据(包括LiDAR测量  和图像测量 )来更新状态 。然而,LiDAR和图像测量是两种不同的感知方式,它们的数据维度不匹配。此外,图像测量的融合可以在图像金字塔的各个层次上进行。为了处理维度不匹配并为每个模块提供更多灵活性,提出了一种顺序更新策略。该策略理论上等同于使用所有测量值的标准更新,前提是给定状态向量  的LiDAR测量  和图像测量 

为了引入顺序更新,将当前状态 

公式(5)表明,总条件分布  可以通过两次顺序贝叶斯更新得到。第一步仅融合LiDAR测量  与IMU传播的先验分布  以获得分布 :

51c自动驾驶~合集22_自动驾驶_04

第二步然后融合摄像头测量  与 

51c自动驾驶~合集22_自动驾驶_05

有趣的是,两个融合步骤(6)和(7)遵循相同的形式:

51c自动驾驶~合集22_自动驾驶_06

为了进行公式(8)中的融合,无论是LiDAR还是图像测量,详细介绍先验分布  和测量模型  如下。对于先验分布 ,将其表示为  且 。在LiDAR更新的情况下(即第一步), 和  是从传播步骤中获得的状态和协方差。在视觉更新的情况下(即第二步), 和 

为了得到测量模型分布 ,将状态在第κ次迭代中的估计表示为 κ,其中 。通过在 κ

其中 κκ, κ 是残差,κ 是集成的测量噪声,κ 和 κ 分别是 κκ 对 κ 和 

然后,将先验分布  和测量分布  代入后验分布(8),并执行最大似然估计(MLE),可以通过ESIKF框架中的标准更新步骤获得δ κ(从而获得 κ)的最大后验估计(MAP):

收敛的状态和协方差矩阵然后作为后验分布 

ESIKF的顺序更新的具体实现详见算法1。在第一步(第6-10行),通过迭代从LiDAR测量中更新误差状态,直到收敛。收敛的状态和协方差估计,再次记作  和 ,用于更新地图的几何结构,然后在第二步视觉更新中(第13-23行)在图像金字塔的每个层次上进一步细化,直到收敛。优化后的状态和协方差,分别记作  和 ,用于传播后续IMU测量并更新地图的视觉结构。

局部建图地图结构

地图采用了自适应体素结构,该结构由哈希表和每个哈希条目的八叉树组成(见图2)。哈希表管理根体素,每个根体素的固定尺寸为0.5 × 0.5 × 0.5米。每个根体素封装了一个八叉树结构,用于进一步组织不同大小的叶体素。一个叶体素表示一个局部平面,存储一个平面特征(即平面中心、法线向量和不确定性),以及位于该平面上的一组LiDAR原始点。这些点中的一些附有三层图像补丁(补丁尺寸为8 × 8),称之为视觉地图点。收敛的视觉地图点仅附有参考补丁,而未收敛的点附有参考补丁和其他可见补丁。叶体素的大小可变,使其能够适应不同结构的环境。

为了防止地图尺寸无限增长,仅保留一个局部地图,范围为LiDAR当前所在位置周围长度为L的区域,如图4中的二维示例所示。最初,地图是以LiDAR起始位置p0为中心的立方体。LiDAR的探测区域表示为以其当前位置为中心的球体,其半径由LiDAR的探测范围决定。当LiDAR移动到新位置p1,使得探测区域触及地图边界时,我们将地图从边界向外移动距离d。随着地图的移动,超出局部地图范围的区域所占用的内存将被重置,用于存储移动进来的新区域。这种环形缓冲区方法确保我们的局部地图维持在固定大小的内存中。地图移动检查在每次ESIKF更新步骤后进行。

几何结构的构建与更新

在ESIKF中的LiDAR更新之后,将扫描中的所有点注册到全局坐标系中。对于每个注册的LiDAR点,确定其所在的哈希表中的根体素。如果该体素不存在,用新点初始化该体素并将其索引到哈希表中。如果已在地图中找到相应的体素,将该点添加到现有的体素中。在分配完扫描中的所有点后,按如下方式进行几何构建和更新。

对于新创建的体素,确定其包含的所有点是否位于同一平面上,这通过奇异值分解来判断。如果是,计算平面中心点q = p̄、平面法线n以及平面的协方差矩阵Σn,q,后者用于表征由姿态估计不确定性和点测量噪声引起的平面不确定性。如果包含的点不在同一平面上,则体素将继续细分为八个更小的八叉树节点,直到确定这些点位于同一平面上,或达到最大层数(例如3)。在后一种情况下,叶体素中的点将被丢弃。因此,地图只包含被确定为平面的体素(无论是根体素还是子体素)。

对于已有的新点被添加的体素,评估这些新点是否仍然与现有的点位于同一平面上。如果不是,将如上所述进行体素细分。如果是,则更新平面参数(q,n)和协方差Σn,q,如上所述。一旦平面参数收敛,该平面将被视为成熟平面,平面上的新点将被丢弃。此外,成熟平面的估计平面参数(q,n)和协方差Σn,q将被固定。

位于平面上的LiDAR点(无论在根体素还是子体素中)将用于生成后续部分中的视觉地图点。对于成熟平面,最近的50个LiDAR点将作为生成视觉地图点的候选点,而对于未成熟平面,所有LiDAR点都是候选点。视觉地图点生成过程将从这些候选点中选择一些作为视觉地图点,并将图像补丁附加到这些点上用于图像对齐。

视觉地图点的生成与更新

为了生成和更新视觉地图点,选择了地图中当前帧视野中可见的候选LiDAR点,以及在当前图像中表现出显著灰度梯度的点。将在视觉更新后将这些候选点投影到当前图像中,并为每个体素的局部平面保留深度最小的候选点。然后,将当前图像划分为每个包含30×30像素的网格单元。如果某个网格单元中没有投影到该处的视觉地图点,将使用灰度梯度最高的候选点生成新的视觉地图点,并将当前图像补丁、估计的当前状态(即帧姿态和曝光时间)以及由LiDAR点计算的平面法线附加到该点上。附加到视觉地图点的补丁具有三个相同尺寸的层(例如11×11像素),每层是上一层的二分采样,形成一个补丁金字塔。如果某个网格单元中已有视觉地图点投影到该处,会在以下两种情况下向现有的视觉地图点添加新补丁(金字塔的所有三层):(1)距离上次补丁添加已超过20帧,或(2)当前帧中的像素位置与上次补丁添加时的像素位置偏离超过40像素。因此,地图点可能具有以均匀分布的视角观测到的有效补丁。与补丁金字塔一起,我们还将估计的当前状态(即姿态和曝光时间)附加到地图点上。

参考补丁更新

由于视觉地图点可能具有多个补丁,需要选择一个参考补丁用于视觉更新中的图像对齐。根据光度相似性和视角对每个补丁f进行评分:

其中,NCC(f ,g) 表示归一化互相关系数,用于衡量补丁f和g在补丁金字塔最高层(即分辨率最高的层)的相似性,f̄ 和ḡ 为相应补丁的均值;c 表示法线向量n与视角方向p/∥p∥的余弦相似度,当补丁正对地图点所在的平面时,c的值为1。总分S由补丁f与其他补丁gi的平均相似性(NCC)和法线向量的余弦相似度c加权求和得到,tr(Σn)表示法线向量协方差矩阵的迹。

在所有附加到视觉地图点的补丁中,得分最高的那个将被更新为参考补丁。上述评分机制倾向于选择

与大多数其他补丁外观相似(NCC高)的参考补丁,这一技术用于MVS 避免选择动态物体上的补丁

视角正交于平面的参考补丁,从而保持纹理细节的高分辨率。

法线优化

每个视觉地图点被假定位于一个小的局部平面上。现有工作假设补丁中的所有像素具有相同的深度,这一假设通常并不成立。使用由LiDAR点计算得出的平面法线来初始化平面,随后进一步细化法线以提高图像对齐的准确性。

在视觉地图点生成期间,LiDAR点附近的局部平面法线n被初始化为体素地图中平面的法线向量。随后在独立线程中进行进一步优化。在这些独立线程中,局部平面法线和附加补丁的姿态状态根据光度误差优化目标:

其中n和ξ分别表示法线和图像位姿。所有补丁的法线和姿态都被优化。被优化后的法线成为平面法线的最终估计。由于图像对齐中的姿态状态在全局坐标系中是已知的,法线的优化也会同步进行。这一优化过程通常在20ms内完成。

LiDAR测量模型LiDAR 测量模型构建

通过计算每个扫描点到其最近平面的距离来构建LiDAR测量模型。对于一个给定的LiDAR点(在全局坐标系下表示为),如果它位于一个平面上,则该点到平面的距离可以近似表示为点到平面法线的垂直距离。因此,平面残差可定义为:

51c自动驾驶~合集22_自动驾驶_07

在ESIKF框架中,LiDAR测量模型通过最小化所有平面残差的平方和来估计位姿增量,这个过程会通过迭代逐步优化系统状态。

配准过程

为了在扫描与地图之间找到最佳配准,需要迭代计算扫描中的所有LiDAR点与地图中各平面之间的残差,并利用这些残差更新位姿估计。在每次迭代中,地图中的每个平面都会被重新计算,法线n和点q也会更新。这一过程可以通过以下步骤实现:

  1. 初始配准:首先,使用上一次迭代的位姿估计结果将LiDAR点转换到全局坐标系下,并计算其到当前位姿的平面残差。
  2. 残差计算:计算所有LiDAR点到其各自平面的残差,并构建测量残差向量。对于每个残差向量,我们都需要求解最优的位姿增量,以最小化这些残差。
  3. 迭代优化:采用迭代最小二乘法来优化位姿增量,直到残差的平方和收敛至某个阈值以下。每次迭代中,使用更新后的位姿重新计算残差,并继续优化。

在LiDAR测量更新的最后一步,将优化后的位姿用于更新系统的状态估计。

测量不确定性

为了更精确地反映测量中的噪声和不确定性,还将平面残差的协方差纳入到ESIKF更新中。假设测量噪声是高斯分布的,其协方差矩阵为。协方差的大小取决于LiDAR点测量的准确性和地图中平面的几何形状。测量不确定性的引入使得ESIKF能够更准确地估计系统状态,并提高整体系统的鲁棒性。

视觉测量模型可见体素查询

在每次ESIKF更新之前,首先从体素地图中提取当前帧视野中的可见视觉地图点。这个过程通过对所有包含视觉地图点的体素进行光线投射来完成。具体来说,对于每个体素,确定其是否被当前摄像头观察到,并对观察到的体素进行可见性查询。如果体素内的视觉地图点被认为是可见的(即未被遮挡),这些点将被提取用于随后的图像对齐过程。

光度误差计算

在提取出可见的视觉地图点后,将这些点的图像补丁与当前帧中的相应区域进行匹配。将地图中的视觉地图点投影到当前帧中,并计算其与当前图像中的像素之间的光度误差。

在ESIKF框架中,通过最小化光度误差来优化位姿增量。这一优化过程通过迭代求解每个视觉地图点的光度残差来更新系统状态。

图像金字塔与多分辨率匹配

为了提高图像对齐的稳健性和计算效率,使用图像金字塔进行多分辨率匹配。具体来说,将每个图像补丁构建为多层金字塔,每一层的分辨率是上一层的一半。在优化过程中,首先在金字塔的较低分辨率层次上进行粗略对齐,然后逐渐过渡到较高分辨率的层次进行精细对齐。这种逐层递进的对齐方法能够有效应对大范围的初始误差,并减少局部极小值问题。

曝光时间补偿

光照变化会显著影响图像对齐的准确性。为了减轻这一影响,引入了曝光时间补偿机制。在每次视觉更新中,我们根据实时估算的曝光时间调整图像的光度值。通过这一补偿机制,能够在不同光照条件下获得更加一致的光度测量值,从而提高图像对齐的准确性。

图像对齐中的平面先验

为了进一步提高图像对齐的精度,在图像对齐过程中引入了来自LiDAR测量的平面先验。具体来说,假设视觉地图点位于某个局部平面上,并使用LiDAR测量中的平面法线来初始化该平面。在图像对齐过程中,平面先验能够为姿态估计提供额外的几何约束,减少由于图像纹理不足或光照变化带来的误差。

通过结合这些方法,视觉测量模型能够在ESIKF框架中提供更加稳健和精确的姿态估计。特别是,通过直接光度误差方法、多分辨率匹配、曝光时间补偿和平面先验的结合,我们的系统能够在不同的环境条件下实现高精度的视觉-惯性融合。

实验效果总结一下

FAST-LIVO2系统在多个方面展示了其在实时SLAM应用中的卓越性能:

通过顺序更新的ESIKF框架,系统有效地解决了LiDAR和视觉测量之间的维度不匹配问题,并通过直接方法显著提高了计算效率。

通过在统一的体素地图上结合视觉和LiDAR信息,实现了更高精度的图像对齐和地图构建。

此外,系统在各种苛刻环境下的实验结果表明,其在精度、稳健性和计算负荷方面均优于现有的其他SLAM系统。特别是在无人机机载导航、空中测绘和3D模型渲染等实际应用中,FAST-LIVO2展示了其在实时操作和高精度建图中的巨大潜力。

未来的工作将着重于进一步优化系统的计算效率以及扩展其在更广泛应用场景中的适用性。




 #探索自动驾驶端到端算法模型的鲁棒性研

近年来,随着深度学习技术取得越来越重大的进展,自动驾驶技术在当今社会变得越来越重要。在典型的自动驾驶系统当中包括不同的功能子模块,比如感知、规划、控制等等。虽然这类方法相对简单,但是可能会存在着累计误差等问题。端到端自动驾驶模型作为一种先进的技术解决方案,将原始传感器数据直接映射到驾驶决策上,大大简化了自动驾驶系统的部署和设计过程。

尽管端到端的算法模型展现出了出色的表现性能,但该类算法也面临着重大的安全挑战。复杂和动态的驾驶环境会给模型引入许多的不确定性,使得算法模型容易受到恶意的攻击。虽然目前已经有大量的研究工作集中在探讨自动驾驶系统中各个任务的鲁棒性,特别是感知任务,但这些研究工作更多强调了环境条件和对抗性输入等弱点,这些弱点可能会误导感知系统,从而进一步导致决策上的失误。此外,尽管端到端自动驾驶模型展现出了卓越的性能、并且具有革命性的创新效果,但学者们对这类算法的鲁棒性研究却非常有限,目前还主要集中在基于回归的模型上,缺乏更全面的自然鲁棒性评估和闭环系统评估。

针对上述提到的相关问题,我们构建了RobustE2E基准用于深入分析端到端自动驾驶对各种噪声干扰的鲁棒性。我们评估了五种传统的对抗性攻击,通过在白盒设置中在任务之间的接口处引入对抗性噪声来引入一种新颖的模块化攻击,并在两个具有代表性的端到端自动驾驶模型的黑盒设置中评估了四大类自然损坏(共17种类型,涵盖五个严重程度级别)。我们的评估从开环模型级别扩展到闭环仿真环境和真实汽车,其中观察到了出现的规划错误。

我们的研究结果表明,即使是最先进的端到端自动驾驶模型,在受到微小扰动的情况下,也会遭遇规划崩溃,其中感知任务的性能会经历最为显著的下降。同时,由于自动驾驶系统中各个子模块之间存在的错误累计效应,会进一步加剧其固有的脆弱性。

论文链接:https://www.mdpi.com/2079-9292/13/16/3299

模块攻击

为了有效评估端到端自动驾驶模型的鲁棒性,我们设计了一种新颖的白盒对抗攻击方法,称之为模块攻击。我们在整个端到端的算法模型的管道中注入和优化噪声,具体的细节如下。

模块噪声设计

首先从输入的原始图像开始,设计一组对抗噪声,其表达方式如下所示。其中表示噪声注入的阶段索引,对应于模型推理的每个阶段,表示模型中包含的子任务总数。噪声被策略性地注入到图像和潜在特征表示中,因此噪声注入的特征选择至关重要。

我们在发生任务指定信息交换的接口处识别候选特征,即在模块交互接口处从上游模块流向下游模块的所有特征信息都包含在特征中。然后,我们通过在模型的计算图中追踪每个候选特征来确定需要扰动的特征集,该特征集合我们用进行表示。如果某个特征在后续阶段仍然相关,则将其包含在特征集合中。整个过程可以用下面的公式进行表示

其中代表着模型计算图中存在的特征集合,我们将策略扰动特征定义为。很明显,是的一个子集,表示中跨各个模块在计算图中持续存在的特征。这允许针对所有相关任务更新每个阶段的噪声。一旦策略扰动特征被确定下来,我们设计了对抗性噪声模板来初始化每一批数据中的噪声,如下所示

其中,代表张量模板函数用于生成与指定特征具有相同维度和形状的空张量,代表用于填充模板的均匀分布。这些模板是后续噪声初始化和更新的基础。

攻击策略

我们假设自动驾驶是一项复杂的智能任务,需要评估整个系统的稳定性,同时考虑每个子模块的漏洞。我们在噪声初始化、噪声传播和存储以及迭代更新等方面来解释了我们设计的攻击策略。

我们按照模型的推理过程依次初始化每个阶段的噪声。对于集合中的属于阶段的所有特征,相应的对抗噪声模板为。我们将噪声模板投影到受特征扰动约束的中作为初始噪声,并聚合阶段的所有特征噪声以获得:

其中表示扩展后跨相关维度的串联操作,表示投影操作。在进行噪声的初始化之后,我们得到噪声存储集合。这些扰动在每个处理阶段被策略性地注入到潜在特征表示中。这个注入的过程可以用下面数学公式进行表示

其中表示具有参数的第个子模块,表示的直接输入特征。模型的状态被统称为,捕捉注入噪声在多个阶段的累积影响。噪声在注入后,噪声将一直被存储直到整个自动驾驶任务完成。然后,我们在每个子任务之后制定攻击的目标函数:

其中,与任务的训练损失函数保持一致。为了优化对抗噪声,我们采用了基于梯度的方法用于最大化,同时确保不可感知性并且逃避检测机制。

其中表示扰动约束的超参数,同时表示迭代次数。这里,在更新之后,噪声也会被投射回相应特征噪声的中。在每次迭代的过程中,噪声都会传播,直到规划阶段结束并进行相应更新。然后将最终的噪声注入模型以完成模块攻击,整个过程可以用如下的伪代码进行表示。

RobustE2E基准

我们提出了RobustE2E基准,这是一个在一致设置下的用于端到端自动驾驶的综合鲁棒性评估基准。RobustE2E基准为研究人员们提供了一个有价值的工具,可以帮助他们更深入地了解各种扰动对端到端自动驾驶鲁棒性的影响,同时有助于开发更为稳健的算法以及在现实场景中部署可靠、安全的自动驾驶模型。RobustE2E基准测试涵盖对抗稳健性和自然稳健性,考虑了2个端到端自主模型、6种渐进式对抗攻击方法和17种自然破坏类型,并包含闭环案例研究。整个测试基准的整体框架如下图所示

RobustE2E测试基准整体框架图

鲁棒性评估方法

端到端的自动驾驶模型容易受到现实环境中各类噪声的干扰。我们将这些干扰分为对抗性攻击和自然破坏,并利用它们来全面评估端到端自动驾驶模型的稳健性。此外,我们将评估扩展到闭环案例研究。

对抗攻击

为了衡量模型在最坏情况下的鲁棒性,我们使用6种白盒对抗攻击作为评估方法。具体来说,我们采用、、、、和模块攻击来生成对抗噪声。这些攻击方法的强度和目标各不相同,提供了更全面的评估标准。我们对上述六种攻击方法进行了调整,并在两种模型上实施了这些方法。前四种方法对视觉输入施加了轻微的扰动,而模块攻击则在模型推理过程的不同阶段注入了有针对性的噪声。由于没有针对中间特征扰动幅度的经验指导,我们选择应用与图像相同的扰动约束。

自然破坏

为了模拟自然破坏的影响,我们利用了17种不同的黑盒自然破坏。具体而言,自然破坏可以分为以下四类,同时每种类型的自然破坏的严重程度等级从1到5不等,总共有80种不同的设置方式

噪声:例如高斯噪声、散粒噪声和脉冲噪声

模糊:例如玻璃模糊、散焦模糊、运动模糊和变焦模糊

天气:例如雾、霜、雪和雨

数字失真:例如溅射、对比度、亮度、饱和度、图像压缩和像素化

闭环案例研究

在闭环案例当中我们分别研究了模拟环境和实际环境,详细情况如下:

模拟环境中的闭环评估:在开环测试中无法衡量对抗性攻击对自动驾驶的系统性影响。因此,我们将对抗性攻击扩展到闭环模拟环境。模型的规划结果被转换成控制信号(油门、刹车、转向角),完成驾驶操作并影响模拟器的环境,从而创建一个闭环系统

现实世界中的闭环评估:我们使用基于英伟达Jetson Nano的自动驾驶汽车JetBot进行了闭环测试,用于展示对抗性噪声对真实自动驾驶系统的潜在危害。我们模拟了黑客渗透JetBot软件的场景,从而能够在软件层对端到端模型进行攻击。由于JetBot的硬件限制,我们使用了一个简单的端到端回归模型,该模型输出预期坐标,然后转换为车辆控制信号。我们进行了有针对性的攻击以模拟恶意劫持,使用输出坐标构建攻击的目标函数,用于向右偏差和加速攻击。

实验结果&评价指标

我们的鲁棒性评估实验是在nuScenes数据集上进行的,其中下图的表1和表2分别展示了UniAD和ST-P3算法模型在对抗性攻击和自然破坏下的主要评估结果

UniAD算法模型的鲁棒性评估结果

对于UniAD算法模型而言,跟踪任务的关键指标Amota从较高的平均值0.576大幅下降到0.148。虽然后续模块的性能也有所下降,但程度远小于跟踪模块。地图模块最为稳健,其中最重要的车道IOU指标平均仅下降了5.32%。运动和占用预测的误差较大,即使是出色的建图任务也无法弥补轨迹模块的脆弱性。由于感知和预测误差,最终的规划结果受到很大影响。攻击后,预测轨迹与实际预期轨迹之间的平均L2误差达到1.72米,而原来的为1.08米。在真实道路上,这个距离可能会引发严重的安全事故。

ST-P3算法模型的鲁棒性评估结果

ST-P3的子任务较少,但整体趋势还是比较相似的。感知层的IoU大幅下降了19.69%,最终导致规划L2误差从平均1.58m增加到2.88m。

下图展示了注入噪声的算法模型和原始算法模型的性能对比。

同一场景中任务攻击前后的可视化结果对比

通过上图可以看出,自车的规划路线出现严重错误,例如急转弯导致侵占草坪。此外,该模型在各种任务中都会出错,例如遗漏周围的车辆并错误预测后方静止车辆的动作。

除此之外,我们也在仿真环境中进行了闭环的实验。我们汇总了6次实验的平均结果,表明攻击后模型的性能指标从88.175下降到29.545,具体的实验结果如下图所示。

此外,下图展示了在模拟仿真环境中的短途路线上的实时噪声注入导致自我车辆在特定位置发生碰撞,并与正常驾驶的帧进行比较。在攻击过程中,车辆摇晃并最终向左转向,与迎面驶来的车辆迎头相撞。

同时,我们也人工构建了一个测试区域,用于进行真实世界鲁棒性的评估实验,该构建的测试区域包括一条大型外环路和中间的多个交叉路口和T型路口,道路上设有交通信号灯。我们在汽车上攻击预训练模型,随机选择汽车的起点,可视化的实验结果如下图所示。可以看出,由于我们的攻击,车辆在右转路口转向右侧树林区域。

结论

本文提出了一种针对端到端自动驾驶的新型对抗性攻击,同时构建了RobustE2E基准来评估端到端自动驾驶对各种噪声的鲁棒性。希望这项研究能够提高人们对端到端自动驾驶稳健性问题的认识,并为增强端到端自动驾驶的关键和敏感模块提供宝贵的指导,以促进其在现实世界中的部署。




#All in端到端的小鹏

继理想、蔚来对智能驾驶业务的组织架构调整之后,近期小鹏也对组织架构进行了大调整。和理想、蔚来一样,小鹏这轮的调整也是根据智驾技术路线的变化,把组织架构拆散后再次重装,新的组织架构聚焦端到端模型。

小鹏这次调整的重心是技术开发部,技术开发部是小鹏的算法研发部门,涵盖感知、规划、控制、定位的算法研发。调整之后,技术开发部被拆成了三个部门,分别是AI端到端、AI应用、AI能效。

其中,AI端到端部门负责端到端模型的研发,AI应用部门负责交付。这次调整相当于算法团队一分为二,一部分去做模型,一部分去做交付。

这也是蔚小理三家对智驾组织架构调整的相同之处。

在这轮由技术路线引发的研发组织架构的变革中,蔚来、理想率先调整,反而在无图城区NOA阶段的优等生华为小鹏的调整动作比较慢,其中原因是多样的。

华为小鹏在无图城区NOA“扎”的深,趟过深水区,对城区场景的认知和理解比较深刻。端到端模型作为新技术,目前的性能是“上限很高、下限也很低”,如何在技术切换的同时保持给用户良好的性能体验,需要非常谨慎的权衡决策。

否则端到端模型的“下限”很容易就给企业造成巨大的负面舆情,任何一个企业都不想因为算法性能的bug上热搜。技术品牌的树立是一件非常艰难的事,扑街却是非常容易。

另外,做组织架构调整也意味着内部“革命”,权力的重新分配,而且“革命”的对象就是规则时代的功臣干将。研发的核心岗位都被规则时代的干将占据了,这些人里面很多并不懂AI,甚至有些排斥,因为这是要革自己的命。如何处置和安排规则时代的功臣是个难题,这可能是企业调整慢的一个原因。

这些人在无图城区NOA竞争过程中曾立下赫赫战功,现在却因为技术路线变化,要适应新技术,否则就容易被淘汰。对这些干将来说,非常残酷。研发团队的士气和氛围,也是企业需要权衡的。

反倒是无图城区NOA阶段的后进生们,没有这些包袱,能够轻装上阵率先调整。

目前,随着小鹏调整落地,只剩华为还没有对组织架构调整。

端到端模型的竞争已经开打,国内企业的老传统,营销先于技术。一些新势力已经掀起一轮声势浩大的营销战,力图在端到端模型上弯道超车。

不过,拿端到端模型DEMO做营销PR的意义其实也不大,按一位科技大佬的说法:量产交付给用户使用才是王道。

量产交付才是硬考验。国内端到端模型的竞争,要看谁第一个量产上车交付给用户使用。



#代客泊车c++开源项目

用了15天时间,做了一个可以回放停车场数据集,以及将数据集内的车辆,行人,车位,拓扑路线转化成决策规划可用的语义地图的形式。可以再这个仿真环境用开发自己的决策规划c++代码。

51c自动驾驶~合集22_自动驾驶_08

在自动驾驶中,按照场景,可以分成行车和泊车两种,行车一般指的是在道路上,高架上,城区里等有明显车道线,路标,以及红绿灯的场景下进行无人驾驶。而泊车特指在地面停车场或者地下车库里的自动驾驶。当然,现在常说的行泊一体,就是把这个种场景用的的算法进行统一。对于行车场景,有很多可选的开源项目和数据集,可以用来验证自己的算法,但是对于泊车场景,这类数据集就很少了。如果想要验证自己的泊车算法,就比较难了,尤其是停车场里有行人,有车辆,自行车等等,而且没有明显的车道线,没有数据集,就无法全面验证自己的算法。

那天,我发现了一个用于泊车的数据集,就想着,把这个数据集拿来做一个仿真项目,可以用来验证自己的代课泊车算法。之前文章介绍过这个数据集:

停车场环境,基于CNN和Transformer的轨迹预测模型ParkPredict+

第一步:解析数据集的格式

数据集地址:https://sites.google.com/berkeley.edu/dlp-dataset

作者提供的数据集是json格式的,我就一段一段复制下来,让GPT帮我解释,解释完我理解了,它也记住了这些格式,后续可以让它给我写数据回放的代码。

51c自动驾驶~合集22_自动驾驶_09

这里耗费了我很多时间,也尝试了不同的思路,试了将python代码嵌入到c++工程中的方式,遇到问题,放弃了。也尝试了用python脚本播放数据集,用c++工程接收,两个线程之间进行通讯的方式,太复杂,也放弃了。最后,决定用c++重写了数据回放的代码。这个开源项目险些在这一步就放弃了,还好在GPT的帮助下,完成了这一步的工作。

数据集的格式如下:

  • 组件定义
  • 场景 (Scene):代表一个连续的视频录制。包含指向该录制中的所有帧、代理和障碍物的指针。
  • 帧 (Frame):录制中的一个离散时间步。包含在这个时间步可见的所有实例列表。指向前一帧和后一帧。
  • 代理 (Agent):在场景中移动的对象。包含对象的尺寸、类型和轨迹(由实例列表构成)。
  • 实例 (Instance):代理在某个时间步的状态。包括位置、方向、速度和加速度。指向代理轨迹中的前一个和后一个实例。
  • 障碍物 (Obstacle):在录制中从未移动过的车辆。
  • 数据集统计
  • 场景数:30

  • 帧数:317,873

  • 代理数:5,188

  • 实例数:15,383,737

  • 关系

  • 场景 (Scene):包含多个帧 (Frame),包含多个代理 (Agent),包含多个障碍物 (Obstacle)

  • 帧 (Frame):包含在这个时间步可见的实例 (Instance),有前一帧和后一帧的关系

  • 代理 (Agent):包含在不同时间步的多个实例 (Instance),每个实例表示代理在某个时间步的状态

  • 实例 (Instance):关联代理 (Agent),有前一个实例和后一个实例的关系


第二步:编写数据回放的代码

原作者有回放数据的开源代码,但是是python写的,我需要用c++去实现一下。其实也不算是我写的,我需要设计一个大体的框架,然后让gpt去写。因为我上一步中,已经把数据集的格式给gpt了,所以在它可以很快就写出数据回放的代码。其实也不快,这一步都花费了一周时间,它可以不一个函数写的很好,但是你让它给你写完整的一个类,它很有可能会乱写。经过耐心的沟通,和反复的修改,终于完成了数据回放的代码,效果如下,可以逐帧播放数据集,显示出了拓扑路线,停车位,静态车,动态车,行人所有的元素。

51c自动驾驶~合集22_自动驾驶_10

数据回放的代码完成后,我又在可视化上花费了好多天,尝试了各种方式,因为考虑的太多了,想着以后可能需要界面交互,比如在界面上选择一个车位作为目标车位。所以我想着用QT,用Dear Imgui,用FLTK等等,后来忽然发觉,我陷入了美化可视化界面的泥潭中无法自拔,一周时间都过去了。最后想了个方法,做了一个可视化类,做成单例模式,用opencv可视化,这样,在工程中的任何地方,都可以插入可视化的代码,方便前期的开发和调试。等到后期,也可以方便的把可视化代码移除,非常解耦。

回放的主代码如下:

void ParkSimulation::run() {
  loadData();
  findStartFrame();
  // common::GridMapMetaInfo map_info(280, 160, 0.5);
  common::GridMapMetaInfo map_info(300, 300, 0.5);


  semantic_map_manager::AgentConfigInfo config;
  config.obstacle_map_meta_info = map_info;
  config.surrounding_search_radius = 150;


  semantic_map_manager::SemanticMapManager semantic_map_manager;
  semantic_map_manager.setConfig(config);


  semantic_map_manager::MapAdapter mapAdapter(&semantic_map_manager);


  planning::EudmServer planner;


  while (!currentFrameToken.empty()) {
    auto start_time = std::chrono::steady_clock::now();
    auto it = frames.find(currentFrameToken);
    if (it == frames.end()) {
      break;
    }
    const auto& frame = it->second;
    env->loadFrame(frame);
    // 输出当前帧的信息
    std::cout << "\n=============================================\n";
    std::cout << "Current Frame: " << frame.frame_token
              << " ,Timestamp: " << frame.timestamp << std::endl;


    // 移动到下一帧
    currentFrameToken = frame.next;
    auto end_time = std::chrono::steady_clock::now();
    std::cout << "ParkSimulation::run() cycle time: "
              << std::chrono::duration_cast<std::chrono::milliseconds>(
                     end_time - start_time)
                     .count()
              << " ms" << std::endl;


    mapAdapter.run(env);
    planner.run(&semantic_map_manager);
  }


  std::cout << "Simulation finished." << std::endl;
  // 清理环境对象
  delete env;
}


第三步:构建语义地图

EPSILON是港科大开源的一个非常优秀的自动驾驶开源系统,这里基于Epsilon的语义地图模块,进行了修改和适配,用于提供管理栅格地图,碰撞检查等功能。这里的工作量主要在于,数据读取和回放模块,存储了各种元素,需要将这些元素转换成语义地图接收的格式。

一些转换函数如下:

void GetSimulationDataFromStatic(Environment* env);
  void GetSimulationDataFromDynamic(Environment* env);
  void GetPolygonFromSimulationData(const StaticObstacle& obs,
                                    common::PolygonObstacle* poly);
  void GetVehicleFromSimulationData(const DynamicObstacle& obs,
                                    common::Vehicle* vehicle);
  void GetLanRawFromRoute(const std::vector<std::pair<double, double>>& route,
                          common::LaneRaw* p_lane);
  common::WaypointsGraph GetGraphFromSimulationData(
      const std::unordered_map<std::string, Route>& routes);
  void GetParkingSpotsFromSimulationData(
      std::unordered_map<std::string, std::vector<ParkingSpot>>& sim_spots,
      common::ParkingSpots* parking_spots);

完成数据转换后,我需要将这些转换后的元素进行可视化,确保转换的没有问题。结果如下,分别时模拟的激光雷达扫到的障碍物,栅格地图,停车场地图以及车辆和行人和拓扑路线。

绿色为模拟的激光雷达扫到的障碍物边界。

51c自动驾驶~合集22_自动驾驶_11

黑色代表停车车位里的车辆,白色是可通行的区域

51c自动驾驶~合集22_自动驾驶_12

整个停车场如下,包含了拓扑路线,黄色路线为指定起点和终点,在拓扑图上搜索得到的路径,黑色方块是行人,橙色是动态车辆,黑色框代表车位。

51c自动驾驶~合集22_自动驾驶_13

第四步:开始开发预测、决策、规划模块

有了这个仿真框架,就可以开发代客泊车的相关算法了,仿真里提供了各种动态车辆和行人,也提供了车位,对于预测模块,可以用来对车辆进行意图预测,预测它是要直行还是倒车入库。对于决策模块,可以在这种高动态场景下,验证决策算法的合理性。

工程的main函数如下,非常简洁:

int main() {
  // 创建对象
  park::ParkSimulation simulation(
      "./data/DJI_0012_scene.json", "./data/DJI_0012_agents.json",
      "./data/DJI_0012_frames.json", "./data/DJI_0012_instances.json",
      "./data/DJI_0012_obstacles.json", "./data/parking_map.yml", 0,
      1200  // startFrameIndex, endFrameIndex
  );


  simulation.run();


  return 0;
}


预测和决策和规划模块,这里还没开始,敬请不期待,烂尾警告。

感谢开源项目EPSILON,感谢开源项目ParkPredict+。

题外话1

目前整个项目,我自己动手写的代码,占得比例非常少,我主要是设计整体的框架,设计具体类的功能,至于具体的代码,都是GPT写的。目前GPT4还会胡诌,需要我监督和不断的交流改错,那如果以后GPT5,6,7,8进化了,不需要我监督和设计框架,也就不需要我写代码了。以后,会写代码这个技能,会不会都不算一个技能了?

记得几年前,用到opencv可视化的时候,被它的坐标和一些可视化转换,搞得头昏脑涨,花了几天时间才学会怎么用,现在呢,我一个描述,gpt就给我写出来了,我不理解原理,它可以给我讲明白。

转行到现在,写了几年代码了,从一开始的恐惧代码,到后来不再害怕写代码,到后来体会到了通过写代码去驱动机器人完成一些功能的快乐,再到现在,一句话就能得到可用的代码,甚至都不用检查这段代码。

题外话2

以前做测试的时候,觉得工作没前途,转行做机器人,后来觉得自动驾驶里用的才是前沿的技术,就转行去做自动驾驶了。我自认为自己非常热爱学习,学习动力很足,自动驾驶行业技术迭代很快,所有很适合我。但是随着行业的发展,我感觉有点理解不了了。总是觉得,这行业不是很踏实,总是在炫技,炫技的目的不是为了提升用户体验,而是为了让资本看到,看吧,我这新技术无敌了,上限非常高,给我们投资吧。如果有那一天,靠着显卡和数据,就可以让自动驾驶成为一个成熟可用的产品,程序员会不会变成工业革命时候被迫下岗的纺织工人。

感觉写代码逐渐没有乐趣了,当你发挥自己的创意,解决了一个问题,你会被鄙视,因为你只是写if else解决了亿万个corner case中的一个而已。这些case,显卡和数据集也可以解决。

如果人人都能写代码了,那写代码这个技能,就无有用了。如果端到端模型,如果端到端的方法成为了自动驾驶的最终解,那也不用算法工程师了,都去踩自行车发电吧。




#3DGS与NeRF如何辅助机器人遥控操作

本研究介绍了一种用于机器人遥控操作的新型辐射场可视化技术,研究者提出了一种在线训练辐射场的方法,能够实时从多个摄像头获取数据,支持多种辐射方法,包括NeRF和3DGS。该系统与现有的ROS遥控操作系统集成,并通过传统的工具和VR头显进行展示。通过与基于网格重建的基线方法进行定量比较,并进行用户研究,验证了不同可视化方法的效果。

NeRF和3DGS等辐射场方法已经彻底改变了计算机图形学和新视点合成领域。它们能够生成逼真的新视角图像,并捕捉复杂的体积效果和高光场景,使其成为机器人远程操作环境中理想的可视化工具。直接使用摄像机进行远程操作能够提供高保真度的图像,但代价是机动性较差。相比之下,基于重建的方法则能提供较高的场景控制性,但图像保真度相对较低。本研究采用在线辐射场取代机器人远程操作流程中的传统重建可视化方案,提供了具有逼真质量的高操作性场景。本研究使用来自多个摄像机的实时数据的辐光场的在线训练,支持各种辐射场方法,包括NeRF和3DGS,并对这些方法进行可视化,在虚拟现实场景进行展示。为了实现与现有设备的无缝集成,该方法在多种配置下与多个机器人进行了测试,并使用传统工具和VR头显进行了展示。

本研究还将相关结果定量地与网格重建方案进行比较,并进行用户研究以比较不同的可视化方法。

本研究的主要贡献如下:

●实时多摄像头数据融合:开发了一种创新性的在线训练框架,该框架能够实时从多个摄像头捕获数据,并将其融合为辐射场,从而为遥控操作提供高保真度和高机动性的三维场景表示;

●多样化辐射场方法的集成与优化:研究不仅涵盖了现有的神经辐射场(NeRF)技术,还引入了3DGS等新型辐射场渲染技术,并通过系统优化,实现了对这些先进方法的深度集成和支持;

●跨平台可视化工具的开发:设计并实现了一套兼容多种现有遥控操作平台的可视化工具集,包括对辐射场方法的虚拟实景(VR)场景展示,极大地增强了用户界面的沉浸感和直观性;

●推动遥控操作与辐射场技术的融合:本研究不仅在遥控操作领域提出了新的技术解决方案,还为辐射场技术在机器人学中的进一步应用开辟了新的研究方向。

理想的远程操作系统应向操作员提供场景的高保真、可操作和真实的表示。该系统应与机器人类型无关,并能够根据任务最佳地呈现环境数据——传感器数据流或重建数据。如图1所示, 一般遥操作可视化系统分为三个部分:机器人、重建方法、可视化。传感器和姿态数据从各种机器人组件(红色)流向重建方法(绿色),以创建在可视化器(蓝色)中显示给用户的场景表示。这种方法支持辐射场重建,如NeRF和3DGS,生成相对于固定位置的环境表示,通过可视化工具(RViz和VR可视化器)呈现给操作者。通过相对于固定点构建表示,即使机器人在空间中移动,也可以显示和对齐额外的数据。

▲图1|遥操作可视化系统

换言之,可以将该系统简化为三个组件:机器人及其传感器、重建方法和可视化系统。

本研究介绍了一个基于现有远程操作框架的系统,扩展基于辐射场三维重建方法的可能性,并提供了在屏幕和虚拟现实中可视化这些方法的手段,如图2中的紫色虚线框所示。该系统经过多种机器人测试,包括一个简单的静态配置、一个能够探索更大环境的移动四足机器人以及一个附带机械臂的四足机器人。机器人收集到的数据首先被用于现有的网格重建系统,作为基线处理,然后新增了一个支持NeRFs和3DGS辐射场的ROS节点。这些重建方法可以在多个可视化工具中使用,如屏幕上的2D RViz窗口以及VR头显中的2.5D和3D视图。根据部署和任务的不同,该系统的每个组件都可以交换或重新配置。

▲图2|Radiance Field VR场景与2.5D手持视差观看器(左)和完全沉浸360度(右)

■2.1 机器人及其传感器

在本文所提出的系统中,机器人的主要目的是捕捉环境信息,并帮助用户了解场景。为实现这一目标,系统使用的数据主要来自以下三种形式:ROS的TF系统提供的姿态信息、机载相机捕获的彩色图像、以及包含深度和颜色信息的RGBD图像。

为了确保系统具有通用性,能够适应不同机器人的部署,这些数据源必须易于配置。图2和图3中的“机器人”框左侧展示了输入的数据源,其中红线表示图像数据,橙色表示点云数据,黄色表示来自TF系统的姿态信息。

▲图3|遥操作可视化系统数据流

最简单的机器人配置是一个固定在地面上的装置,如连接在桌子上的机械臂。这种机器人在扫描目标物体或大规模场景时,机动性有限。但机器人基座是固定的全局框架,因此能够提供更加精确的姿态信息。这种配置虽然在场景规模和视角上有所限制,但在重建精度方面具有极强的可靠性。对于需要捕捉更大、更复杂场景的应用,可以使用移动机器人。这类机器人能够在环境中移动,并从不同角度获取数据。然而,由于机器人与固定的全局框架之间的相对位置不确定,因此需要通过同步定位与地图构建(SLAM)系统,如CompSLAM,来对其在环境中的位置进行定位。由于移动机器人依赖于机载传感器,而这些传感器在运动过程中可能会产生漂移,导致姿态信息不总是可靠。尽管移动机器人覆盖的范围更广,但姿态精度可能会受到影响。一种既能确保高姿态精度,又具备机动性的方法是将机械臂安装在移动平台上。在这种配置下,机器人可以在场景中移动以获得不同的视角,主要依靠机械臂的运动来收集数据,而基座保持静止。因为基座是固定的,机械臂末端执行器的运动可以通过精确的关节传感器进行测量,避免了视觉或激光雷达定位可能带来的误差。这样既能覆盖更大的场景,又能保持数据的高精度。

■2.2 重建方法

一旦机器人捕获相应数据后,随即将这些数据传递到一个重建系统中。该阶段的目的是将多个数据流整合为一个单一的数据流,供操作员来控制机器人。这一过程会涉及到创建一个几何和纹理上都高度保真的表示模型。本文比较了场景重建问题的两种主要解决方案:通过Voxblox进行的网格重建和通过NerfStudio进行的辐射场重建。在图2和图3中,这两个ROS节点在“重构方法”部分以绿色标示。Voxblox节点使用传入的姿态数据和点云生成输出网格,而NerfStudio节点则从姿态和图像数据中生成渲染的辐射场。由于网格重建难以捕捉复杂的体积场景,并且在快速重建和高保真度之间存在权衡,为此在机器人远程操作中使用辐射场重建方法更为合适,而辐射场重建主要是通过轻量级的机器学习算法来学习场景的表示。

为了确保与新方法的兼容性,系统中的辐射场训练节点可以配置为使用NerfStudio支持的几乎所有方法。为保证这种兼容性,NerfStudio节点中的自定义组件数量被尽量减少,只要所选方法不依赖于自定义数据集(如语义模型)或自定义DataLoader即可适配。

该节点支持NerfStudio的3DGS方法——Splatfacto,这是一种资源开销最小的方案。在初始化时,系统会为这个自定义数据集分配一个预设大小的缓冲区,用于存储所有训练所需的图像。接下来,节点会为每个相机订阅一组主题,以捕获其图像(无论是RGB还是RGBD),并记录其特征和姿态信息。如果所有相机都包含深度信息,那么系统将分配一个特殊缓冲区来存储深度图像,以便与深度监督模型集成。每张传入的图像都会经过筛选,以确保其不模糊,并且基于TF帧之间的平均距离,姿态差异足够明显。如果相机分辨率不同,所有图像将调整为最大相机的分辨率,并在批处理时统一缩小。在实验中,图像在训练前会以1440p存储,并将720p图像缩放至相应大小。根据当前的姿态数据和最新的CameraInfo消息,系统会存储每张图像在相应相机中的内参和外参。如果图像已被校正,系统将自动将相机的畸变参数设置为零,以避免重复校正。

为了确保与其他方法的兼容性,本研究使用了一个自定义的ROS变体覆盖DataLoader,该变体跳过了通常执行的缓存和整理过程,使用ROS Datasets函数来确保只提取最新的图像进行训练。还有一个特殊的评估DataLoader,它接受图像序列ID列表,以确保在多次运行中使用相同的图像。这在跨预录ROS包数据进行对比时尤其有用。此外,本方法还使用自定义的DataParser来设置ROS Dataset,并通过helper Sensor类管理ROS订阅者。Sensor对象负责管理图像和CameraInfo消息的订阅,并在每次捕获时同步姿态。

使用这个辅助类可以注册多个相机,每个相机以不同速率捕获数据。Sensor对象只会更新相关的数据条目,并将相应的相机参数传递给系统的其余部分。图3展示了整个数据流,其中所有自定义组件以紫色标示,Sensor辅助类以黄色标示。完成设置后,节点会捕获若干图像以创建初始批次,然后切换到在线训练模式。一旦节点进入在线训练模式,它将继续接收新图像直到达到指定的缓冲区大小,并启动一个ActionServer,使任何ROS进程都可以请求渲染数据。渲染请求包含视图姿态,发送到服务器后会返回渲染图像以及估计的场景深度。这些渲染图像随后会被发送到其中一个可视化器,供远程操作员进行交互。此外,请求与唯一的客户端ID关联,允许多个可视化器在ROS网络中使用单个辐射场节点请求不同的渲染数据。

■2.3 可视化系统

系统的最后一个阶段是可视化器,它的作用是根据从重建方法获得的数据,为操作员提供一个准确的世界表示。在图2和图3中,这一部分以蓝色标示。本研究开发了自定义的Radiance Field RViz插件用于2D可视化,并利用VR场景实现2.5D和3D可视化。为了进行基线方法比较,还使用了Voxblox的RViz插件来展示网格重建的结果。

◆Rviz

RViz 是 ROS 的可视化套件,能够可视化各种传感器数据流,如点云、机器人模型和图像。此外,它还提供工具,帮助用户直接通过系统发送命令,例如设置姿态目标。RViz 支持第三方插件,这使得诸如 Voxblox 之类的重建方法可以实现自定义查看器,从而将新的环境数据与现有的机器人和远程操作系统无缝集成。

为了将在线生成的辐射场与ROS无缝集成,本研究开发了一个辐射场RViz插件。该插件作为RViz OpenGL场景中的自定义相机,每当相机移动(动态模式)或处在基于移动帧的渲染流状态(连续模式)时,都会向Radiance Field节点发送渲染请求。动态模式最适合从静止角度观看场景,例如用于导航的俯视图或检查的特写视图。相比之下,连续模式更适用于移动的基础框架,比如第三人称驾驶,或在需要观察新传入数据时使用。

在任何模式下,渲染速度通常主要取决于输出图像的分辨率,这可以通过视图面板中的设置进行调整。为了在动态模式下提供更快的响应,渲染首先以最终分辨率的10%进行预览,接着再发送50%的中等分辨率图像,最后再发送完整的高分辨率图像。

这种分步渲染方法使用户能够更快速地浏览场景,同时保持良好的视觉反馈。

RViz 和辐射场提供的深度数据可用于使渲染图像在场景元素中实现真实的遮挡效果,或以剪切模式显示,如图4所示。这通过将渲染中捕获的真实世界深度转换为OpenGL的z深度(一个从0到1的非线性比例)来实现。然后,这个转换后的深度可以与RViz的Ogre引擎(同样基于OpenGL)为特定相机视角使用的z深度相匹配。结果是,RViz中的所有对象(如机器人、传感器可视化、网格和姿态)都能准确地被遮挡,从而提供更逼真的可视化效果。这种方法旨在让操作员更好地理解环境中的深度,同时更容易在场景中定位RViz组件。在大型或室内场景中,还提供了一种剪切模式,在该模式下,渲染的图像始终显示在RViz元素的背后,使这些元素更容易被识别和定位。

▲图4|RViz插件基于场景深度遮挡机器人的示例(左),并将机器人渲染在最外图层(右)

此外,由于3DGS和NeRF都执行体积渲染,可能会因为遮挡或未探测到的噪声导致自我定位困难。为了解决这个问题,插件允许创建一个轴对齐的边界框,通过限制光线积分来裁剪场景,如图5所示,边界框用于去除噪声背景以及会阻挡操作员视野的后墙(见图8)。这些渲染图像都是全新的视角,因为机器人要么由于墙壁的存在,要么由于机械臂活动范围的限制,无法捕获到这些视角。

▲图5|轴对齐的边界框可用于裁剪背景(左)或移除墙壁(右),从而实现新颖的视图和更清晰的操作

◆VR

在测试中发现,即使是在合理设置图层覆盖的情况下,操作员在观看2D屏幕时也很难感知深度。为了解决这一问题,本研究将该系统移植到了Meta Quest 3 VR头显上,并使用Unity场景来展示机器人数据。这一研究利用VR扩展了现有遥控系统的能力,以实现更大的沉浸感和更高的易用性。

VR 机器人数据:为了建立与基线方案的对比,将若干RViz特性(如TF同步的机器人模型、姿态发布和传感器可视化,包括LiDAR、RGBD点云和图像)集成到VR头显中,如图6所示。用户可以通过头显和手部交互发送姿态目标,从而直接从VR界面发送机器人命令。系统还扩展了基于移动GPU的网格生成,实时流式传输Voxblox重建结果。这样,用户在沉浸式的3D环境中可以访问与RViz相同的传感器信息。为了保持轻便,VR场景经过优化,能够在头显上本地运行,只通过TCP连接与ROS处理消息传输。这使得头显可以直接连接到机器人的ROS网络,无需基站PC或任何头显电缆。

▲图6|远程操作员使用VR系统,桌面上是Voxblox网格,左边是Radiance Field Viewer,实时LiDAR数据覆盖在网格重建上

VR 辐射场:为了使用辐射场渲染,本研究设计了一个2.5D手持查看器,让用户可以查看渲染的虚拟世界。这个查看器利用深度数据创建视差效果,使VR头显在显示渲染图像时能有更强的纵深感。类似于RViz相机,该查看器可以在用户移动头部时请求新的渲染,并与场景中的机器人数据同步。请求通过TCP连接直接发送,渲染结果实时传输到GPU着色器进行视差渲染。为了增强沉浸感,查看器还提供了360°球形渲染,让用户仿佛身临其境。它还包括图像缩放、分辨率调整和来自机器人实时摄像头的画面等控制功能。图7展示了手持辐射场查看器的使用情况以及球形渲染模式的视图。类似于 RViz 插件,辐射场的深度数据也用于动态遮挡场景,使得接近的3D对象(如机器人或点云)能够显示在辐射场渲染图像的前面。

▲图7|Radiance Field VR场景与2.5D手持观看器(左)和360°球形渲染(右)

研究者进行了三部分实验:

首先,在静态机械臂、移动底盘和移动机械臂上捕获数据,以确保机器人无关的操作并比较不同的重建方法。每个数据集都使用Voxblox、NeRF和3DGS进行处理,并评估了光度质量。其次,测试在线操作时,测量了重建和渲染的时间。最后,为了验证观赏体验,进行了用户研究,比较了RViz网格和NeRF渲染图像与其VR对应版本的效果。

■3.1 数据集设置

静态机械臂:使用静态的弗兰卡Panda机械臂和英特尔Realsense 435i RGBD相机进行测试。机械臂固定在金属桌上,桌子的两侧有墙壁,将扫描区域缩小到20cm×20cm。这一区域的第三面由于安装位置的限制无法探索,前方的扫描范围被限制在90°的方位角内。扫描了三个目标物体:一个毛绒玩具驴子、一个基准立方体和一个木块。毛绒玩具用于测试高频细节,基准立方体用于检查纹理准确性,木块用于验证三维几何重建。

移动底盘:使用Anybotics Anymal在大型实验室环境中进行测试。实验室的规模大约为15m×10m,由前置和后置的1440p RGB相机进行拍摄。使用CompSLAM进行定位,并以机器人绕着的木基座为中心进行扫描。基座上放置了一个玻璃碗,用于测试每个系统的透明和镜面反射重建能力。

移动机械臂:DynaArm连接到Anybotics Anymal上,并在手腕上安装了额外的英特尔Realsense L515相机。捕获的目标是一个黄色的配电柜,柜子中间有一根金属棒,里面有一个带屏幕和开关的盒子。测试区域大约为1m×1m,从正面拍摄。

Anymal用手臂扫描2米远的区域,然后移动并捕捉盒子内部。当手臂移动到盒子内部时,照明条件会有轻微变化,以测试系统对动态颜色的适应能力。

■3.2 重建质量

为了确保平台具备机器人无关性,进行了三种不同的部署。所有三种设置均使用相同的参数进行训练,分别应用了Voxblox、Nerfacto和Splatfacto,其中Nerfacto和 Splatfacto是NerfStudio的默认NeRF和3DGS方法。根据峰值信噪比(PSNR)、结构相似性指数(SSIM)和学习的感知图像补丁相似性(LPIPS)对每种方法进行了评估。PSNR用于测量场景中的伪影,SSIM测量特征如光照和对比度的相似性,而LPIPS测量图像补丁的网络激活,近似人类对相似性的判断。图8展示了真实图像、基准 Voxblox 重建、NeRF和3DGS 重建结果,表1则展示了光度比较,其中每个数据集表现最佳的方法用粗体显示。

▲图8|静态臂(左)、移动基座(中)和移动臂(右)的比较

▲表1|不同机器人结构和重建方法的光度比较

静态机械臂:由于Panda臂数据的姿态几乎完美,能够产生非常高纹理保真度的结果。图8中基准立方体的标记清晰可见。由于缺乏运动,场景的外围视图受限,导致NeRF重建质量较低。然而,小型场景使3DGS重建的质量非常高,因为场景初始化良好,高斯分布密集地覆盖了整个空间,几乎没有多余部分。在所有指标(PSNR、SSIM 和 LPIPS)中,3DGS重建的表现是NeRF的两倍。尽管捕获的区域表现尚可,但Voxblox还是生成了一个不完整的网格,在所有指标中得分最低。

移动底盘:辐射场技术,尤其是NeRF,在距离场景中心较远的区域容易出现射线稳定性问题,导致噪声增加。而Voxblox网格技术,在捕捉远距离数据时也会遇到困难,常常生成不完整的重建结果。在训练过程中,NeRF方法通过姿态优化平滑了噪声,获得了最佳结果。

移动机械臂:配电柜在NeRF和3DGS重建中产生了最高质量的LPIPS结果,代表了人类感知的最高质量。Voxblox成功重建了大部分场景,但未能捕获支撑梁和部分门。此外,在进入柜子时光照会发生变化,导致网格颜色不均匀。辐射场通过视图相关的着色捕获了这些变化,如表1所示,3DGS在PSNR和SSIM上优于NeRF,可能是因为其与球面谐波的颜色匹配效果更好。

■3.3 性能表现

在线机器人遥控操作需要快速的重建和可视化,为此,研究者们在RTX 4090上比较了每种方法的重建和渲染时间。为了确保运行和比较的可重复性,首先记录了数据,并将图像的序列ID存储在一个文件中。然后在执行过程中使用这些序列ID创建数据集,确保每次运行中使用相同时间戳的相同图像。

首先,研究人员测量了每次迭代的时间。对于Voxblox,这是将新批次与网格集成的时间;对于辐射场方法(Radiance Fields),这是一次迭代的训练时间。Voxblox在1cm体素大小下,每批整合时间为1.2秒。对于NeRF和3DGS,迭代时间分别为35.644毫秒和34.651毫秒。此外,为了公平比较,训练辐射场方法直到它们匹配最终的Voxblox PSNR(16.94dB)。其中,NeRF花费了7.027秒,而3DGS花费了6.996秒。辐射场方法不仅生成了更高质量的结果,而且处理速度几乎快了20倍。

▲表2|不同方法之间的时间比较

其次,作者考虑了渲染时间。在Voxblox显示不断更新的网格时,其渲染速率被限制为每秒30帧。相比之下,NeRF 和 3DGS 在渲染一个完整的1024×1024图像时表现不同:NeRF 需要1020.13 毫秒(0.98 FPS),而3DGS仅需6.63毫秒(151 FPS)。在不同分辨率下,3DGS 的渲染时间稳定在约6.23毫秒,而NeRF在更高分辨率下的渲染时间显著增加。这一关系如图9所示。对于需要快速渲染的应用场景,显式表示如网格和3DGS是首选,因为它们能够更好地适应更高的分辨率和更大的屏幕。

▲图9|在不同分辨率百分比下,NeRF和3DGS对1024x1024图像的渲染时间对比:NeRF的渲染时间呈指数增长,而3DGS的渲染时间几乎不变(由于NeRF渲染时间的快速增加,数据以对数尺度显示

■3.4 用户研究

本研究针对用户体验进行了调研,调研涉及20名参与者,以比较不同的可视化系统。参与者来自对机器人系统较为熟悉且经常使用 RViz 的群体,年龄在22到32岁之间,平均年龄为26岁,包含5名女性和15名男性,且只有5人之前使用过VR系统。他们评估了图8中的移动手臂数据集,并将2D的RViz Voxblox和NeRF场景与VR对应版本进行了比较,结果见图10。选择这个数据集是因为它具有最高的光度评分(见表1),因此质量最佳。为了避免混淆,由于Radiance Fields、NeRF和3DGS 都通过相同的用户界面呈现,因此每次只向用户展示一种方法。选择NeRF进行比较是因为它在LPIPS中得分高于3DGS,LPIPS最能接近人类感知的质量 。在测试的分辨率下,NeRF和3DGS之间的渲染时间差异不明显。

在感知方面,NeRF比Voxblox重建更受欢迎,VR NeRF的评分略高于RViz 版本。这与表1中的光度比较结果一致,Radiance Fields生成的结果质量高于网格。值得注意的是,尽管VR系统显示的数据与RViz相同,但VR系统始终提高了感知质量。这是由于VR系统的沉浸感增加的深度帮助了几何感知,而头戴式光学器件提高了纹理质量。此外,VR 头显的光学系统使得低分辨率图像看起来更大、高分辨率更高,从而降低了系统的渲染延迟。

在遥操作任务中,Voxblox的3D网格在VR和RViz中更受欢迎,因为用户能够更容易地看到机器人与环境的相对位置。然而,在操控任务中,RViz的NeRF比Voxblox更受欢迎, VR系统的表现大致相同。在这些任务中,感知能力和读取细节的能力至关重要,NeRF系统在这些方面表现更佳,许多VR用户表示,他们更愿意使用3D NeRF来获得理想的设置。未来可以通过利用3DGS的显式表示,直接展示3D中的高斯体,而无需2.5D观察器来解决这一问题。

最后,尽管许多用户第一次尝试VR,但VR系统在可用性方面优于RViz对应系统。Voxblox系统更易于操作和探索,因为直接的3D表示更为直观。RViz NeRF的叠加和手持查看器需要时间适应,但在识别场景中的物体方面表现更好。

▲图10|使用移动臂数据集和VR Voxblox(绿)、VR NeRF(蓝)、RViz NeRF(橙)、RViz Voxblox(红)四种观看模式的用户研究结果。平均值用黑色虚线表示,而中位数用黄色实线表示。在不同条件下,VR系统比2D系统更受青睐,而NeRF在感知和操作方面更受青睐,Voxblox在运动和可用性方面更受青睐

本研究展示了通过集成多摄像机的辐射场可视化组件、引入动态支持的新重建方法以及VR技术,为机器人远程操作领域带来的显著进展。实验结果证明了该系统在不同应用场景下的有效性和通用性。首先,系统展示了其对不同机器人部署的适应性,从静态手臂到配备多个摄像头的移动基地。在每种设置中,辐射场生成的重建质量都优于网格。其次,3DGS的渲染速度显著提高,使其能够与在线网格渲染媲美,且所需时间更少,质量相同。最后,用户研究表明,参与者对辐射场的质量优于传统网格的偏好明显,尤其在操作任务中更受欢迎。VR 系统提供了更好的体验,表明在VR 环境中使用直接3DGS辐射场将是理想的远程操作解决方案。



#如何评价最新的Mamba

深度学习作为一项重要技术,引发了人工智能(AI)的一场非凡革命,导致了人类生活方式的巨大变化。作为最具代表性的架构,Transformers已经为众多高级模型提供了支持,特别是包含数十亿个参数的大型语言模型(LLM),成为深度学习的基石。尽管取得了令人瞩目的成就,但Transformer仍然面临着固有的局限性,特别是注意力计算的二次计算复杂性导致的耗时推理。最近,一种名为Mamba的新型架构从经典状态空间模型中汲取灵感,成为构建基础模型的有前景的替代方案,在保持序列长度接近线性可扩展性的同时,为Transformers提供了可比的建模能力。这引发了越来越多的研究,积极探索Mamba在各个领域取得令人印象深刻的性能的潜力。鉴于这种快速发展,迫切需要进行系统审查,巩固现有的Mamba授权模型,全面了解这种新兴的模型架构。因此,在本次调查中,我们对最近的曼巴相关研究进行了深入调查,主要从三个方面进行:基于曼巴的模型的进展、使曼巴适应各种数据的技术以及曼巴可以擅长的应用。具体来说,我们首先回顾各种代表性深度学习模型的基础知识以及Mamba-1和2的细节作为估计。然后,为了展示Mamba对人工智能的意义,我们全面回顾了有关Mamba模型架构设计、数据适应性和应用的相关研究。最后,我们讨论了当前的局限性,并探索了各种有前景的研究方向,为未来的研究提供了更深入的见解。

本文简介

在过去的二十年里,深度学习作为最突出的人工智能(AI)技术,在医疗保健、自主系统、推荐系统和金融服务等各个领域带来了革命。这一时期见证了众多深度神经网络(DNN)的出现,这些网络极大地改变了人类的生活方式,为个人提供了巨大的便利。一个值得注意的例子是U-Net,这是一种视野内的强大深度学习模型,广泛应用于医学成像,用于检查MRI和CT等放射学扫描。其应用有助于疾病的识别和诊断,展示了其在这一关键医疗保健领域的有效性。此外,图神经网络(GNN)用于处理图结构数据以支持智能服务,例如向用户推荐个性化内容、产品或服务的推荐系统。此外,循环神经网络(RNN)在机器翻译中被广泛采用,因为它们能够捕获准确翻译所必需的顺序和上下文信息,使来自不同语言背景的个人能够有效地交流和包含彼此的想法、观点和信息。

在各种深度学习架构中,Transformers最近脱颖而出,并在广泛的应用领域确立了其主导地位。例如,作为最具代表性的大型基础模型,像ChatGPT这样的大型语言模型(LLM)从根本上建立在Transformer架构上。通过将模型规模扩展到数十亿,并在各种数据源的混合上进行训练,这些基于Transformer的模型展示了人类水平的智能,在语言理解、常识推理和内容学习方面具有令人印象深刻的能力。这一显著的成功得益于注意力机制,它使基于Transformer的模型能够专注于输入序列的相关部分,并促进更好的上下文理解。然而,注意力机制也引入了显著的计算开销,该开销随着输入大小的平方而增加,这给处理纵向输入带来了挑战。例如,计算成本的快速增长使Transformers处理大量序列变得不切实际或不可行,从而限制了它们在文档级机器翻译或长文档摘要等任务中的适用性。

最近,一种有前景的架构,结构化状态空间序列模型(SSM),已经出现,可以有效地捕获序列数据中的复杂依赖关系,成为Transformer的强大竞争对手。这些模型受经典状态空间模型的启发,可以被认为是递归神经网络和卷积神经网络的融合。它们可以通过递归或卷积运算高效计算,实现序列长度的线性或近线性缩放,从而显著降低计算成本。更具体地说,作为最成功的SSM变体之一,Mamba实现了与Transformer相当的建模能力,同时保持了序列长度的线性可扩展性,将其推向了焦点领域。Mamba首先引入了一种简单而有效的选择机制,通过基于输入对SSM参数进行参数化,使模型能够过滤掉不相关的信息,同时无限期地保留必要和相关的数据。然后,Mamba提出了一种硬件感知算法,通过扫描而不是卷积来定期计算模型,在A100 GPU上实现了高达3倍的计算速度。如图1所示,Mamba对复杂和长度顺序数据的强大建模能力,以及近乎线性的可扩展性,使其成为一种新兴的基础模型,有望彻底改变各种研究和应用领域,如计算机视觉、自然语言处理、医疗保健等。例如,Zhu等人提出了Vim,它比DeiT快2.8倍,在提取高分辨率图像的特征时节省了86.8%的GPU内存。Dao和Gu展示了SSM和注意力变体之间的联系,并提出了一种新的架构,该架构改进了选择性SSM,使语言建模速度提高了2-8倍。

51c自动驾驶~合集22_自动驾驶_14

在Mamba强大的长序列建模能力及其高效性的推动下,出现了大量文献,重点是在各种下游任务中使用和改进Mamba。鉴于与曼巴相关的研究大幅增加,对现有文献进行全面回顾并考虑未来研究的潜在方向至关重要。因此,在这项调查中,我们从几个角度对曼巴进行了全面的回顾,为新来者提供了对曼巴内部运作的基本了解,同时帮助经验丰富的从业者了解其最新发展。具体来说,剩下的调查组织如下:在第2节中,我们回顾了各种代表性深度神经网络的背景知识,包括RNN、Transformers和状态空间模型,而Mamba的详细信息在第3节中介绍。接下来,我们在第4节中从块设计、扫描模式和内存管理的角度总结了基于Mamba的研究的最新进展。然后,第5节介绍了使Mamba适应各种数据的技术,包括顺序和非顺序数据。此外,第6节介绍了Mamba模型的代表性应用,第7节介绍了挑战和未来方向。最后,我们在第8节总结了整个调查。

与我们的调查同时,发布了几项相关调查,纯粹关注状态空间模型和视觉曼巴。与这些调查不同,本文主要关注曼巴的相关研究。它从一个新的角度系统地分析了现有文献,以探索Mamba架构的演变以及基于Mamba的模型中使用的数据自适应方法。

Mamba

为了解决传统SSM在上下文感知能力方面的上述缺点,[55]提出了Mamba作为一种潜在的替代方案,有望成为通用的序列基础模型骨干。最近,Mamba-2[提出了结构化空间状态对偶性(SSD),建立了一个将结构化SSM和各种形式的注意力联系起来的稳健理论框架,使我们能够将最初为变压器开发的算法和系统优化转移到SSM。在本节中,我们将对曼巴和曼巴-2进行简洁明了的介绍。

传统的SSM在建模文本和其他信息密集型数据方面的效果有限,阻碍了它们在深度学习方面的进展。在追求赋予SSM Transformer建模能力的过程中,Gu和Dao引入了三种基于结构化状态空间模型的创新技术,即基于高阶多项式投影算子(HiPPO)的内存初始化、选择机制和硬件感知计算,如图3所示。这些技术旨在增强SSM在长距离线性时间序列建模中的能力。特别是,初始化策略建立了一个连贯的隐藏状态矩阵,有效地促进了长距离记忆。然后,选择机制使SSM能够获取内容感知表示。最后,Mamba设计了两种硬件感知计算算法,并行联想扫描和内存重构,以提高训练效率。

51c自动驾驶~合集22_自动驾驶_15

HiPPO-based Memory Initialization:从序列数据中建模和学习是当代机器学习的基本挑战,是各种任务的基础,包括语言建模、语音识别和视频处理。对复杂和长期的时间依赖性进行建模的一个基本组成部分在于内存,包括存储和整合来自先前时间步骤的信息的能力。与RNN类似,保留和忘记历史隐藏状态(即矩阵A)在SSM中起着至关重要的作用,以实现令人满意的性能。在之前的结构化状态空间序列模型(SSM)中,有人建议进行特殊的初始化,特别是在复值模型的情况下。事实证明,这些特殊的初始化在各种情况下都是有益的,包括数据可用性有限的情况。同样,Mamba主要关注隐藏状态矩阵A的初始化,以捕获复杂的时间依赖关系。这是通过利用HiPPO理论和创新的勒让德尺度(LegS)来实现的,确保全面考虑完整的历史背景,而不是有限的滑动窗口。具体来说,HiPPO LegS为所有历史数据点分配了统一的权重,可以表示为:

51c自动驾驶~合集22_自动驾驶_16

基于HiPPO理论,Mamba为复杂和真实的情况引入了两种简单的初始化方法,即S4D-Lin和S4D-real,如

51c自动驾驶~合集22_自动驾驶_17

Selection Mechanism:由于时间不变性的特性,传统的状态空间模型对于基于特定模型输入(即内容感知建模能力)产生个性化输出是必不可少的。为了给SSM提供类似于注意力机制的能力,Mamba设计了一种时变选择机制,根据模型输入对权重矩阵进行参数化。这种创新使SSM能够过滤掉无关的信息,同时无限期地保留相关细节。形式上,选择机制涉及将区间D和矩阵B、C设置为输入x的函数,可以表示为:

51c自动驾驶~合集22_自动驾驶_18

51c自动驾驶~合集22_自动驾驶_19

51c自动驾驶~合集22_自动驾驶_20

Hardware-aware Computation:该选择机制旨在克服线性时不变模型的局限性。尽管如此,它还是对高效训练提出了挑战:SSM的卷积核变得依赖于输入,导致无法执行并行计算。为了解决这个问题,Mamba使用了两种计算技术,即并行关联扫描(也称为并行前缀和)和内存重新计算。首先,并行关联扫描利用线性关联计算的特性和现代加速器(GPU和TPU)的并行性,以内存高效的方式执行选择性SSM的计算。更具体地说,并行关联扫描将模型训练的计算复杂度从降低到。扫描的核心是在给定的输入上构建一个平衡的二叉树,并从根开始来回扫描。换句话说,并行关联扫描首先从叶子遍历到根(即,向上扫描),在树的内部节点处创建部分和。然后,它反转遍历,从根向上移动到树上,使用部分和构建整个扫描(即向下扫描)。另一方面,Mamba利用传统的重新计算方法来减少训练选择性SSM层的总体内存需求。特别是,在并行关联扫描的前向传递过程中,Mamba与大小为BLDN的干扰中间状态保持距离,以防止内存扩展。相反,它在反向过程中重新计算这些中间状态以进行梯度计算。通过这样做,重新计算避开了在GPU内存单元之间读取元素的必要性。除了优化扫描操作的内存需求外,Mamba-1还扩展了重新计算的使用,以提高整个SSM层的效率。这种优化包括投影、卷积和激活,这些通常需要大量的内存资源,但可以快速重新计算。

Mamba-2: State Space Duality

Transformers在各个领域的深度学习成功中发挥了至关重要的作用,激发了各种技术的发展,如参数高效微调[95]、灾难性遗忘缓解[96]和模型量化[195],旨在从各个角度提高模型性能。为了使状态空间模型能够访问并受益于最初为Transformer开发的有价值的技术,Mamba-2[29]引入了一个名为结构化状态空间对偶性(SSD)的综合框架,该框架在SSM和不同形式的注意力之间建立了理论联系。公式化:

51c自动驾驶~合集22_自动驾驶_21

基于SSD,Mamba-2通过块分解矩阵乘法算法开发了一种更具硬件效率的计算方法。具体来说,通过矩阵变换将状态空间模型视为半可分矩阵,Mamba-2将计算分解为矩阵块,其中对角块表示块内计算。相比之下,非对角块表示通过SSM的隐藏状态分解的块间计算。这种方法使Mamba-2的训练过程比Mamba-1的并行联想扫描快2-8倍,同时保持与Transformer的竞争力。

Mamba Block

在本小节中,我们总结了Mamba-1和Mamba-2的区块设计。图4显示了这两种架构的比较。Mamba-1的动机是以SSM为中心的观点,其中选择性SSM层的任务是从输入序列X到Y进行映射。在这种设计中,(a,B,C)的线性投影是在创建X的初始线性投影之后应用的。然后,输入令牌和状态矩阵通过选择性SSM单元,利用并行关联扫描产生输出Y。之后,Mamba-1使用跳过连接来鼓励特征重用和模型训练过程中经常出现的所有退化问题。最后,通过将该块与标准归一化和残差连接交织堆叠,构建了Mamba模型。

51c自动驾驶~合集22_自动驾驶_22

至于Mamba-2,它引入了SSD层,旨在创建一个从[X,A,B,C]到Y的映射。这是通过在块的开头用单个投影同时处理[X,A,B,C]来实现的,类似于标准注意力架构并行生成Q,K,V投影的方式。换句话说,Mamba-2块通过去除连续的线性投影简化了Mamba-1块。与Mamba-1中的并行选择性扫描相比,这使得SSD结构的计算速度更快。此外,在跳跃连接后添加了一个归一化层,旨在提高训练稳定性。

Advancements in Mamba Models

状态空间模型和Mamba最近得到了探索,并成为一种有前景的替代方案,作为基础模型骨干。虽然Mamba在自然语言处理方面表现出了熟练程度,但它仍然遇到了挑战,例如记忆丧失、对各种任务的泛化,以及基于Transformer的语言模型捕获复杂模式的能力较差。为了克服这些挑战,已经做出了大量努力来改进曼巴结构。现有的研究主要集中在修改块设计、扫描模式和内存管理方面。本节将从这三个方面介绍几种重要技术,相关研究总结见表1。

51c自动驾驶~合集22_自动驾驶_23

Block Design

曼巴block的设计和结构对曼巴模型的整体性能有重大影响,使其成为新兴的研究热点。如图5所示,基于构建新曼巴区块的不同方法,现有研究可分为三类:a)整合方法旨在将曼巴区块与其他知名模型整合,以在有效性和效率之间取得平衡;b) 替代方法试图利用Mamba块来替代高级模型框架中的主要层;c)修改方法侧重于修改经典曼巴块内的组件。

51c自动驾驶~合集22_自动驾驶_24

Scanning Mode

并行关联扫描操作是Mamba模型中的一个关键组成部分,旨在解决选择机制引起的计算问题,加速训练过程,减少内存需求。它通过利用时变SSM的线性特性在硬件级别设计核融合和重新计算来实现这一点。然而,Mamba的单向序列建模范式阻碍了对各种数据(如图像和视频)的全面学习过程。为了缓解这一问题,几项研究侧重于设计高效的扫描方法,以提高模型性能并促进Mamba模型的训练过程。如图6所示,专注于开发扫描模式技术的现有研究可分为两类:1)平面扫描方法从令牌序列的平面角度处理模型输入;以及2)立体扫描方法跨维度、通道或比例扫描模型输入。

51c自动驾驶~合集22_自动驾驶_25

Memory Management

与RNN一样,状态空间模型中隐藏状态的记忆有效地存储了之前步骤的信息,因此在SSM的整体功能中起着至关重要的作用。虽然Mamba引入了基于HiPPO的内存初始化方法,但SSM单元的内存管理仍然存在挑战,包括在层之间传输隐藏信息和实现无损内存压缩。为此,一些开创性的研究提出了不同的解决方案,包括内存初始化、压缩和连接。例如,Ezoe和Sato试图通过在模型再训练期间使用平衡截断方法来改进选择性SSM的初始化过程。此外,DGMamba引入了一种隐藏状态抑制方法,以增强状态空间模型中隐藏状态的领域泛化能力。这种方法可以消除这些隐藏状态的负面影响,从而缩小不同领域隐藏状态之间的差距。同样,DenseMamba提出了一种密集连接方法,以增强SSM中各层之间隐藏信息的传播。该策略旨在通过有选择地将浅层的隐藏状态集成到深层来减轻内存退化,并为输出生成保留详细信息。

Adapting Mamba to Diverse Data

Mamba架构代表了选择性状态空间模型的扩展,它具有循环模型的基本特性,使其非常适合作为操作文本、时间序列、语音等序列的通用基础模型。与此同时,最近的开创性研究将Mamba架构的利用扩展到了序列数据之外,包括图像和图形等领域,如图7所示。这些研究旨在利用Mamba在捕获长期依赖关系方面的卓越能力,同时利用其在学习和推理过程中的效率。因此,在本节中,我们的目标是研究使Mamba适应各种类型数据的新兴技术。

51c自动驾驶~合集22_自动驾驶_26

51c自动驾驶~合集22_自动驾驶_27

Sequential Data

序列数据是指以特定顺序收集或组织的数据,其中数据点的顺序具有重要意义。为了探索利用Mamba作为序列数据任务基础模型的潜力,我们在以下部分进行了全面的回顾,涵盖了各种序列数据,包括自然语言、视频、时间序列、语音和人体运动。

Non-Sequential Data

非序列数据与顺序数据的不同之处在于不遵循特定的顺序。其数据点可以按任何顺序组织或访问,而不会显著影响数据的含义或解释。这种固有顺序的缺失给循环模型带来了困难,例如专门用于捕获数据中时间依赖性的RNN和SSM。令人惊讶的是,代表SSM的Mamba在最近的发展中在有效处理非连续数据方面取得了显著的成功。在本节中,我们将回顾有关Mamba如何有效处理非连续数据(包括图像、图形和点云)的相关研究。

Multimodal Data

整合多种模态,如语言(顺序数据)和图像(非顺序数据),为人工智能感知和场景理解提供了有价值和互补的信息。最近,多模态大型语言模型(MLLM)受到了广泛的研究关注,MLLM固有了大型语言模型的高级功能,包括强大的语言表达和逻辑推理。虽然Transformers一直是该领域的主导方法,但Mamba已经成为一个强大的竞争对手,在对齐混合源数据和实现序列长度的线性复杂度缩放方面表现出了令人印象深刻的性能,这使得Mamba成为Transformers多模态学习的有前景的替代品。例如,Qiao等人提出VL Mamba,探索利用Mamba的高效架构来解决视觉语言任务,利用预先训练的Mamba模型进行语言理解,并结合连接器模块将视觉补丁与语言标记对齐。Wang等人提出了文本控制运动Mamba,它利用Mamba基于文本查询动态捕获全局时间信息,以增强对人类运动的理解。此外,Fusion-Mamba和Sigma试图融合来自不同模态(如热、深度和RGB)的互补信息。Fusion-Mamba专注于改进对象检测,而Sigma旨在增强语义分割。

应用Natural Language Processing

在自然语言处理领域,最近出现了一些基于Mamba的模型作为基于Transformer的语言建模模型的替代品,特别是在涉及广泛上下文的应用中,如问答系统和文本摘要。

Computer Vision

除了NLP应用外,基于Mamba的模型在计算机视觉领域也显示出潜力,如疾病诊断和运动识别与生成等代表性应用。

Speech Analysis

语音信号本质上由数千个样本组成。虽然这种宽泛的时间背景提供了丰富的声学特征,但它也带来了巨大的计算需求。为了有效地处理语音信号,几种基于Mamba的模型已成功应用于各种语音应用,特别是语音分离和标记以及语音增强。

Drug Discovery

蛋白质设计、分子设计和基因组分析在推进药物发现和生物技术方面至关重要。利用基于MAMBA的模型显著降低了这些域中长序列建模的复杂性。具体来说,PTM-Mamba]和ProtMamba是基于Mamba架构的蛋白质语言模型。PTM-Mamba使用双向门控Mamba块和结构化状态空间模型,有效地处理长序列,同时减少计算需求。ProtMamba被设计为具有同源性意识但无比对,足以处理数百个蛋白质序列的广泛背景。这两种模型即使在大数据集的情况下也能保持高效率和准确性,为蛋白质设计提供了关键工具。与此同时,生成式分子设计旨在模拟具有特定分布的定制特性的分子。然而,目前的模型缺乏优化高保真神谕所需的效率,直接导致成功率低。Saturn应用Mamba架构,利用其线性复杂性和计算效率在药物发现方面超越了22个竞争模型。此外,了解基因组对于深入了解细胞生物学至关重要。基因组建模的挑战包括捕捉远距离标记之间的相互作用,考虑上游和下游区域的影响,并确保DNA序列的互补性。Caduceus和MSAMamba都利用了Mamba模型,在应对这些挑战方面表现出色。Caduceus是一种DNA基础模型,它通过BiMamba和MambaDNA组件增强了Mamba架构,用于双向建模并确保反向补体等效性,在长期基因组任务中显著优于现有模型。同样,MSAMamba通过沿序列维度实施选择性扫描操作,解决了基于变换器的DNA多序列比对模型的局限性。这种设计将以前方法的训练上下文长度延长了八倍,从而可以对广泛的DNA序列进行更全面的分析。

Recommender Systems

推荐系统广泛应用于电子商务和社交网络,旨在捕捉用户不断变化的偏好及其过去行为之间的相互依赖关系。尽管基于变换器的模型在推荐系统中表现出了有效性,但由于注意力机制的平方复杂性,它们面临着计算效率的挑战,尤其是在处理较长的行为序列时。最近,几个基于Mamba的模型已被应用于分析个性化推荐的长期用户行为。例如,Mamba4Rec率先使用选择性状态空间模型进行高效的顺序推荐,在保持推理效率的同时提高了模型性能。同样,RecMamba探讨了Mamba在终身顺序推荐场景(即序列长度≥2k)中的有效性,实现了与基准模型相当的性能,同时将训练时间缩短了70%,内存成本降低了80%。此外,EchoMamba4Rec将双向Mamba模块与频域滤波集成在一起,以准确捕捉用户交互数据中的复杂模式和相互依赖关系。它展示了优于现有模型的性能,提供了更精确和个性化的建议。此外,Mamba4KT专为智能教育中的知识追踪而设计,利用Mamba模型来捕捉练习和学生知识水平之间的持久相关性。随着教育数据集的扩展,这种方法为提高知识追踪研究中的预测准确性、模型效率和资源利用率提供了一条有前景的途径。

Robotics and Autonomous Systems

机器人和自主系统的主要目标是开发能够适应全面视觉环境并执行复杂动作的模型。目前用于机器人技术的多模态大语言模型(MLLM)在两个主要方面面临着重大挑战:1)处理需要高级推理的复杂任务的能力有限,2)微调和推理任务的计算费用巨大。由于其在推理速度、内存利用率和整体效率方面的优势,基于Mamba的模型正在成为自主和智能系统的有前景的基础,有望实现卓越的性能和巨大的可扩展性潜力。例如,RoboMamba将视觉编码器与Mamba集成在一起,创建了一个端到端的机器人MLLM。该方法通过协同训练将视觉数据与语言嵌入对齐,用视觉常识和机器人特定的推理增强模型,同时确保高效的微调和推理能力。同样,Jia等人介绍了MaIL,这是一种使用Mamba作为骨干的模仿学习(IL)策略架构。MaIL弥合了处理观测序列的效率和性能之间的差距。对真实机器人实验的广泛评估表明,MaIL为传统、大型和复杂的基于Transformer的IL策略提供了一种有竞争力的替代方案。

未来挑战

Mamba-based Foundation Models

Hardware-Awareness Computation

Trustworthy Mamba Models

Applying Emerging Techniques from Transformer to Mamba

结论

Mamba是一种新兴的深度学习架构,由于其强大的建模能力和计算效率,在语言生成、图像分类、推荐和药物发现等各个领域都取得了显著的成功。最近,人们越来越努力地开发基于Mamba的深度学习模型,这些模型具有更强大的表示学习能力和更低的计算复杂度。鉴于曼巴的快速进展,迫切需要一个系统的概述。为了弥合这一差距,在本文中,我们对Mamba进行了全面的回顾,重点介绍了它的架构进步、数据适应性和应用领域,为研究人员提供了对Mamba最新发展的深入了解和概述。此外,鉴于曼巴研究仍处于起步阶段,我们还讨论了当前的局限性,并为未来的研究提出了有前景的方向。