#自动驾驶感知技术

1 智能汽车概述

1.1 汽车新四化

从工业1.0的机械化、2.0的电气化到3.0的机电一体化,汽车工业每次都发生重大变革;以CPS为标志的工业4.0时代,将使汽车在未来10~20年中发生革命性的变化。

w~自动驾驶合集14_自动驾驶

工业4.0时代,传统汽车产业正在迎来一场全新的技术变革,即 “新四化”:电动化(低碳化)、智能化、网联化及共享化,传统汽车企业面临新的机遇和挑战。

1.2 智能网联汽车

智能网联汽车(Intelligent & Connected Vehicles,简称“ICV””)是指搭载先进的车载传感器、控制器、执行器等装置,并融合现代通信与网络技术,实现车与X(人、车、路、云端等)”智能信息交换、共享,具备复杂环境感知、智能决策、协同控制”等功能,可实现“安全、高效、舒适、节能””行驶,并最终可实现替代人来操作的新一代汽车。

w~自动驾驶合集14_自动驾驶_02

1.3 SAE J3016自动驾驶分级标准

w~自动驾驶合集14_自动驾驶_03

按照动态驾驶任务,监视和判断,失效应对几项任务由驾驶员还是自动化系统完成,以及自动化系统运行的典型工况,可以将自动驾驶汽车分为L0-L5级别。 

三个主要参与者:驾驶员,驾驶自动化系统以及其他车辆系统和组件。

• 动态驾驶任务 DDT (Dynamic driving task):指汽车在道路上行驶所需的所有实时操作和决策行为,动态驾驶任务又可以分为车辆控制,监视和判断两项任务

• 车辆控制:包括通过方向盘来对车辆进行横向运动操作、通过加速和减速来控制车辆;

• 监视和判断 OEDR (Object and event detection and response):对车辆周围物体和事件检测感知、认知,对车辆周围环境的监测和执行对应判断。

• 失效应对 (DDT Fallback) :当系统性的失效发生或者出现超过系统原有的运行设计范围之外的情况时,给出最小化风险的解决方法。

• 典型工况 ODD (Operational Design Domain) 指自动驾驶系统被设计的起作用的条件及适用范围,包括天气环境、道路情况(直路、弯路的半径)、车速、车流量等条件。

PS1:L4级和L5级自动驾驶都是无人驾驶 。

PS2: 需要将多辆智能汽车传感器的感知数据通过车联网融合在一起,实现感知盲区消除,这样的智能车网联化等级应该满足至少L2级。

2 环境感知定义

2.1 智能网联汽车系统架构

环境感知、智能决策、控制执行是智能网联汽车的关键技术,下图为智能网联汽车“三横两纵”技术架构。

w~自动驾驶合集14_自动驾驶_04

三横:车辆/设施关键技术(环境感知、智能决策、执行控制)、信息支撑关键技术(V2X车联网、电子架构与计算平台、信息安全)、基础支撑关键技术(高精度地图、高精度定位、标准法规与测试评价)

两纵:车载平台、基础设施

2.2 环境感知定义及对象

环境感知技术是通过各种传感器对车辆行驶环境进行动态感知和认知,为车辆提供数字化的已知驾驶环境信息,为决策模块提供输入,是实现自动驾驶功能的必要基础。

w~自动驾驶合集14_自动驾驶_05

根据感知传感器来源的不同分为自主式环境感知和协同式环境感知。

w~自动驾驶合集14_自动驾驶_06

环境感知的对象:智能网联汽车环境感知的对象就是智能传感器检测的对象和V2X通信技术传递信息,主要包括车辆的行驶路径、车辆周围的交道参与者、驾驶状态和驾驶环境等。

  • 行驶路径。行驶道路分为结构化道路和非结构化道路。结构化道路主要检测行驶车辆行驶路径的两侧车道线和各种车道标线;非结构化道路的行驶路径主要检测车辆的可行驶区域。
  • 车辆周围的交通参与者。车辆周围的交通参与者主要包括行驶车辆周围的其他车辆、行人,地面上可能影响车辆通过和安全行驶的其他各种移动或静止物体,各种交通标志和交通信号灯等。
  • 驾驶状态。驾驶状态主要包括驾驶员自身状态、车辆自身行驶状态和车辆周围其他车辆行驶状态。
  • 驾驶环境。驾驶环境主要包括路面状况、道路交通拥堵情况和天气状况等。
  • 智能网联汽车最主要的感知对象有车辆、行人交通标志、交通信号灯和车道标线其中车辆和行人既有运动状态,也有静止状态。对运动的对象,除了要识别以外,一般还要进行跟踪。

3 各类传感器介绍

  • 视觉传感器一般进行短程目标探测,多用于特征感知和交通检测;
  • 超声波雷达主要对近距离目标进行检测,适用于泊车;
  • 远程毫米波雷达的信号能够透过雨、雾、灰尘等视线障碍物对远距离目标进行检测,适用于前向避险;
  • 中程毫米波雷达和短程毫米波雷达主要对中、短程目标进行检测,适用于侧向和后向避险;
  • 激光雷达多用于三维环境建立和目标检测。

w~自动驾驶合集14_自动驾驶_07

w~自动驾驶合集14_自动驾驶_08

智能网联汽车需要从技术上对环境感知传感器进行判断和选择,筛选主要有以下条件:

(1)扫描范围,决定了传感器对被感知的目标做出反应的时间;

(2)分辨率,传感器可以为智能网联汽车提供的环境细节;

(3)视场角分辨率,决定智能网联汽车需要多少传感器来覆盖感知的区域;

(4)感知目标数量,能够区分3D环境中的静态目标和动态目标的数量,并且确定需要跟踪的目标数量;   

(5)刷新率,决定传感器信息更新的频率;

(6)可靠性和准确性,传感器在不同环境条件下的总体可靠性和准确性;

(7〉成本、尺寸和软件兼容性,这是环境感知传感器量产的技术条件之一;

(8)生成的数据量,它决定了车载计算单元的计算量,现在传感器偏向智能佞感器,不仅仅是感知,还会分辨信息,把对车辆行驶影像最重要的数据传输给车载计算单元,从而减少其计算负荷。

4 环境感知经典算法概述

摄像头感知算法2D感知算法

  • 物体检测: R-CNN系列, YOLO系列,CenterNet系列
  • 物体跟踪: DeepSORT,CenterTrack
  • 语义分割:FCN, U-Net,DeepLab,Mask-RCNN

3D感知算法

单目算法和双目算法

  • 物体检测和深度估计

激光雷达感知算法

点云物体检测

  • Point视图: PointNet++, Point-RCNN,3D SSD
  • BEV视图: VoxelNet,SECOND,PIXOR,AFDet
  • Range视图: LaserNet,RangeDet
  • 多视图融合: PointPillar, SIENet, PV-CNN,MV3D,RSN

点云语义分割

  • 语义分割: RangeNet++,SqueezeSeg,RandLA-Net
  • 实例分割: LiDARSeg,SGPN
  • 全景分割: Panoptic-PolarNet,Panoptic RangeNet, 4D Panoptic Seg

5 自动驾驶仿真软件的功能

5.1 背景介绍

智能交通系统顶级会议IEEE ITSC 2015 主旨演讲(《Technological Relevancy Between Autonomous Driving and Online Game》 自动驾驶与网络游戏的技术关联 Keynote speaker: Prof. Tsuguo Nobe ) 提出以下观点:自动驾驶跟大型网络游戏的技术非常相似。

w~自动驾驶合集14_自动驾驶_09

5.2自动驾驶仿真软件平台背后的科学问题

w~自动驾驶合集14_自动驾驶_10

5.3自动驾驶仿真软件的数学本质

自动驾驶仿真软件的数学本质是对道路交通系统进行数学建模。

w~自动驾驶合集14_自动驾驶_11

5.4自动驾驶仿真软件发展特点:专业化和协同化

w~自动驾驶合集14_自动驾驶_12

PS1:自动驾驶仿真软件需要对车车之间的交互行为进行模拟;

PS2:自动驾驶仿真软件为自动驾驶算法提供训练和测试环境;

PS3:高精度地图是仿真软件的重要支撑;

PS4:行人、道路的仿真都属于环境仿真模块;

 





#自动驾驶~电动汽车节能驾驶

这是电车全面且系统的综述

w~自动驾驶合集14_自动驾驶_13

蓬勃发展的自动驾驶研究大部分追求安全和通行效率。然而,自动驾驶带来的另一个好处是,全面自动化的驾驶可以通过控制技术实现节能,特别是对于自动驾驶电动汽车。在碳中和和交通电气化的背景下,电动汽车的节能驾驶(亦称生态驾驶)显得尤为意义非凡。自动控制的车辆往往能比人类司机更稳定的进行节能驾驶,且由于与周围车辆或基础设施互联的信息,自动驾驶能比人类获得更多信息,从而提前做出决策与规划,施行节能驾驶控制。本文对自动驾驶电动汽车进行了全面且系统的节能驾驶综述,旨在为对该领域感兴趣或从事该领域的研究人员提供有价值的思路和可行的详细解决方案。

文章来源:IEEE Transactions on Transportation Electrification, 09 November 2023, early access
作者:Wei Li, Haitao Ding, Nan Xu, Jianwei Zhang
作者单位:吉林大学汽车仿真与控制国家重点实验室
原文链接:https://doi.org/10.1109/TTE.2023.3331727

意义

全球变暖以及碳排放引发的一系列环境恶化问题引起了世界各国政府的关注。截至 2022 年 9 月,占全球碳排放量 83% 的 136 个国家已锁定未来几十年的碳中和和净零排放目标。交通电气化被广泛认为是交通部门实现碳中和和提高能源效率的关键途径,因为依赖化石燃料的内燃机车辆 (ICEV) 不环保并且与生俱来的能源效率低。不少国家制定了淘汰电动汽车的目标和时间表,旨在促进电动汽车的快速普及,以取得更好的经济和环境效果。

现阶段,电池技术尚不成熟,里程焦虑是电动汽车普及的一大障碍。生态驾驶作为一项旨在提高车辆能源效率、减少排放的技术,近年来在电动汽车领域受到广泛关注和研究。该技术获取路线信息(例如与前车的车头时距、道路坡度、交通灯的信号相位和配时等),然后计算并执行能量最优的运动轨迹。特别地,生态驾驶具有成本低的特点,提高能源效率的潜力巨大,甚至可以减少能源使用47.5%。值得注意的是,由于电能节省与减排呈正相关关系,电动汽车生态驾驶技术在经济和生态方面都具有良好的效果。因此,电动汽车生态驾驶技术是提高能源效率、促进交通电气化的关键途径。尽管一些研究发表了与ICEV相关的生态驾驶综述,但据我们所知,很少有研究对电动汽车的生态驾驶进行全面的综述。电动汽车和内燃机汽车不仅在技术上存在显着的区别(如不同的经济速度、制动能量回收、动力总成等),而且在生态驾驶技术对它们的影响方面也存在显着差异。因此,有必要对电动汽车的生态驾驶进行单独广泛、系统的总结,这也是本文的研究范围。本文的主要贡献和创新点如下:

  • 对电动汽车生态驾驶进行了广泛而系统的综述,以填补该领域的研究空白。
  • 通过对大量文献进行统计分析,量化多因素、不同场景下的能源增益。
  • 通过对文献的分析和总结,寻找有价值和高潜力的电动汽车生态研究方向, 并介绍不同的可执行研究方法。旨在为有兴趣或正在从事该领域的学者提供有价值的思路和可行的解决方案,以推动交通电气化的发展,实现碳中和的目标。

#生态驾驶的主要影响因素

本文利用下列电动汽车能耗模型的公式,探讨其根本节能机制:

w~自动驾驶合集14_自动驾驶_14

根据式(1-7),根本因素包括速度、加速度、制动力、空气阻力、环境温度和辅助设备等。下面将从生态驾驶角度对这些影响因素进行详细分类和分析。

最优行驶速度

无论是电动汽车还是内燃机汽车,最佳能量效率的速度始终是所有车辆所固有的。一般来说,每公里能耗随着行驶速度的增加而减少,达到最佳点,然后随着速度的提高而增加,呈现出U形曲线。我们的目的是调查所有可用的文献以发现电动汽车的最佳行驶速度范围,并添加ICEV进行比较,如图1所示。根据箱线图的分布,统计电动汽车的最佳行驶速度范围为43.26至60 km/h,而ICEV的最佳行驶速度范围为43.26至60 km/h是 60-80 公里/小时。尽管不同类型的电动汽车和内燃机汽车的最佳速度存在差异,但大量研究表明,电动汽车的最佳速度通常远低于内燃机汽车。根本原因是电机的高效转速范围低于内燃机[21]。

w~自动驾驶合集14_自动驾驶_15

图1: 电动汽车与内燃机汽车的最经济速度(数据来源于大量文献,具体参考论文原文)

w~自动驾驶合集14_自动驾驶_16

图2: 相比于不同的非最经济车速,电动汽车在最经济车速下的节能率. (数据来源于大量文献,具体参考论文原文)

加速度

正加速度

能量消耗与正加速度呈现明显的线性关系。在高加速阶段,能量消耗将变得非常高。Galvin等通过测功机测试了8款市售电动汽车的能耗与正加速度之间的关系。如图3所示,结果表明,高加速度值会严重影响所有八辆电动汽车的能耗,可能导致超过十倍的能量耗散,这与Zhang等人的研究一致 。在这种情况下,应尽可能选择较小的加速度,以提高能量效率。

w~自动驾驶合集14_自动驾驶_17

图3:八种电动汽车在45 km/h车速下能耗与正加速度的关系图.

减速与制动能量回收

电动汽车的一个本质特征是再生制动系统可以在减速阶段将电机用作发电机为电池充电时重新捕获动能[51],这也是电动汽车更节能的自然原因之一比石油车辆。对制动能量回收产生的能量增益进行定量分析,可以帮助驾驶员更清楚地了解其意义。

为此,我们从三个方面统计了制动能量回收对能源效率的影响。如图4所示,再生制动平均可以回收整个制动过程动能的57.48%。与无再生制动相比,再生能量产生20.37%的能量增益,占总驱动能量的19.44%。

w~自动驾驶合集14_自动驾驶_18

图4: 三个方面统计的制动能量再生的能量增益百分比:再生制动效率、与无再生制动相比,有再生制动的节能率、制动能量回收占总行驶能量的百分比。(数据来源于大量文献,具体参考论文原文)

队列(车队)

一组以小间隔行驶的跟随车辆(称为队列行驶,或车队行驶)可以减少空气动力阻力,有助于节省能源,特别是对于重型车辆。此外,队列行驶还具有另一种隐含的节能能力,即整个车队的所有车辆可以合作而不是竞争来实现均匀运动,从而有助于运动的和谐,提高移动效率和能源效率。

减少空气阻力

一个关键问题是确定哪些因素可以减少空气阻力,这是应用生态驾驶策略的基础。Hussein 和 McAuliffe 等人分析了不同车距对气动阻力和节能的影响。在较短的车辆间距下进行队列行驶可以降低整体空气动力阻力,从而提高能源效率。值得注意的是,在安全性和能源效率之间的权衡中,应调整各优化项的比例因子,以保证车辆之间的最小安全距离为优先,进而达到最佳的节能性能。Zabat 等人测试了队列尺寸的影响。结果表明,随着车辆数量的增加,整个排的气动阻力能耗可以进一步降低。Lee等人发现,将相同或更小尺寸的车辆分配到大型车辆的前后位置更有利于减少能源消耗。换句话说,具有钟形图案的队列配置有助于更大的节能潜力。

同质化移动

一组合作车辆通过互联和自动化车辆技术的信息共享形成一个队列。该队列可以采用分层策略,控制领先车辆以实现节能的速度曲线,并保证其余车辆跟随领先车辆。或者,排中的每辆车都可以优化共同的目标函数以达成共识。马等人的结论是,队列可以减少走走停停带来的交通波动,协调交通,从而能够产生全路网的节能效果。

环境温度

车辆的能耗还受到行驶时环境温度的影响。电动汽车和内燃机汽车的一个明显区别是电动汽车对低温极其敏感。其根本原因在于寒冷环境会降低电池的可用能量,增加电池的内部阻抗,并且在寒冷环境下也会发生阻碍电池性能的退化。因此,方程(1)中的放电效率受到影响。此外,相关研究人员还得出了一致的结论:电动汽车的能源效率与环境温度之间呈现出不对称的“U”型关系,其中低温条件下的能源效率远低于高温条件下的能源效率。为了确定电动汽车的最佳环境温度,我们从大量文献中提取和处理数据,并对数据进行处理。如图5所示,根据统计数据的正态分布,平均最佳能源效率出现在环境温度约为19.44°C时。

w~自动驾驶合集14_自动驾驶_19

图5:能量最高效的环境温度统计图。(数据来源于大量文献,具体参考论文原文)

#生态驾驶的主要场景

跟车与换道场景

由于视野有限(通常被前车遮挡)、异质性(例如反应时间不一致)和自私,人类驾驶员在跟随其他车辆时通常无法做出合理的速度规划。著名的环路实验放大了不稳定速度模式造成的交通拥堵。即使是微小的速度波动也会变得更加剧烈,然后均匀的运动就无法持续。最后,出现拥堵簇并向后传播,即走走停停的交通波。因此,不稳定的驾驶模式往往会扰乱交通流量并浪费更多能源,如第 2 节所述。解决方案是预测道路事件。例如,如果自我车辆在行驶时通过Vehicle to everything(V2X,一种车辆无线通信技术)获得前车的意图和周围环境的信息,那么自我车辆就能够规划其速度推进,抑制速度振荡,提高能源效率。

此外, 据我们所知,无论是电动汽车、内燃机汽车还是其他车辆,通过变道或协作跟车和变道来节能的研究都很有限。因此,本节还介绍了其他车型的相关研究,以使研究人员对该领域有更全面的了解。表 3 总结了这些有限的研究和节能方面的结果。然而,由于变道产生更多的动作维度,我们预计变道以及协作式跟车和变道算法的广泛部署将具有相当大的节能潜力。在此基础上,如果能够在电动汽车跟车和变道过程中更详细地阐述制动能量再生,并提出一种新颖的算法,对于电动汽车的生态驾驶这个领域具有重要意义。

表3: 车道变换以及协同跟车和车道变换的研究总结。

w~自动驾驶合集14_自动驾驶_20

 丘陵道路场景

研究表明,丘陵路线的能源效率比平坦路线低约15%至20%。丘陵道路与平坦道路的区别在于,在上坡阶段,车辆需要提供更大的动力来克服重力因素造成的坡度阻力;在下坡阶段,重力势能转化为动能,在大坡度的情况下需要制动以防止速度过快。研究证明,上坡方向坡度阻力消耗的能量大于下坡方向制动回收的能量。因此,在上坡时尽可能利用原始动能克服坡度阻力是一种更加节能的方式。具体节能机理在于,车辆在即将上坡或刚刚上坡时,通过调整车速和扭矩,实现经济行驶。在预测车辆能够顺利通过坡峰后,利用车辆原有的动能来克服坡度阻力,从而达到降低能耗的目的。下坡阶段,可利用重力势能适当提高速度,减少制动力矩过大造成的能量耗散。

 信号交叉口场景

信号交叉口的生态驾驶策略在此特定领域称为生态接近和离开(EAD)。在城市主干道上行驶时,红绿灯处反复启停,频繁加速、制动导致能量消耗,行驶效率和舒适度较低,对乘客造成不适。EAD的基本原理在于,在能够提前获取交通信号状态信息的情况下(例如通过车辆到基础设施技术),车辆将有可能通过生态系统及时改变其速度,顺利通过交通信号交叉口。由此可见,EAD对能源效率、出行效率和舒适度之间存在正向互动提升。之前的 EAD 研究主要集中于仅通过信号相位和定时 (SPaT) 数据生成最佳速度剖面。然而近年来,最先进的EAD算法也考虑了前车或周围车辆,这更符合实际交通状况。表 5 总结了已发表的信号交叉口电动汽车生态驾驶研究。

表5:在信号交叉口处的生态驾驶研究总结

w~自动驾驶合集14_自动驾驶_21

无线充电车道场景

电动汽车无线充电是一项新兴技术,可以提供一种新的充电模式。特别是,动态无线充电车道可以在保持电动汽车移动性的同时提供能源供应。第一个商用动态无线充电交通系统由韩国科学技术院开发,并用于首尔大公园的电车系统。随后几年,韩国陆续建立了三套实用的无线充电系统。2015年,犹他州立大学修建了动态无线充电测试跑道,以推动这项技术的进步。由于无线充电的便利性以及相关充电技术的逐渐成熟,近年来,一些国家和汽车制造商开始加速电动汽车无线充电的发展。例如,中国政府于2021年出台政策,明确支持无线充电的发展。汽车集团 Stellantis 最近启动了“未来竞技场”计划,开发无线充电车道,并倾向于将其扩展到电动卡车和公共汽车。丰田正在开发“相邻取消线圈”技术来设计更先进的无线充电设施。

虽然这项技术仍处于发展的早期阶段,但它为电动汽车生态驾驶的研究开辟了新途径。考虑电动汽车无线充电的生态驾驶研究有限。这些研究主要集中在电动汽车通过附近配备无线充电车道的信号交叉口时,因为电动汽车在交通信号灯附近缓慢移动有助于充电。

#生态驾驶的执行算法

第 2 节和第 3 节分别回顾了生态驾驶的主要因素和场景。需要注意的是,对于第3节中涉及两种或多种情景的一些研究,我们选择最重要的情景进行分类,以量化不同情景的节能潜力。本节根据这些因素和场景详细回顾了生态驾驶技术的实现方法,包括多种场景的解决方案。此外,还将讨论它们的机制、优缺点。

 最优控制

对于最优控制问题(OCP),其原理是找到一条可接受的控制轨迹 u : [ta, tb] → Ω ⊆ R m 生成相应的状态轨迹 x : [ta, tb] → R n 使得成本函数 J(u) 被最小化。由于最优控制具有很强的普适性,生态驾驶几乎可以定义为任何场景下的最优控制问题。Sciarretta 等人提出了最优控制问题的一般表述,可以覆盖几种不同的场景,只需很少的调整或无需调整。Han等人将ICEV和EV的节能驾驶表述为各种复杂性的最优控制问题。他们还提出了对三种不同生态驾驶情况下的状态约束的分析处理,包括(i)信号交叉口(ii)道路速度限制(iii)预期跟车,并描述了最佳解决方案的性质以及新的和有趣的内容见解。

如上所述,最优控制的优势在于其较强的普适性。然而,如果问题过于复杂(例如约束太多),最优控制的公式也会非常复杂,往往需要巨大的计算能力,因此最优解可能无法实时获得,不适用于机载实施。一般来说,解决计算复杂度问题有两种方法:庞特里亚金最小原理(PMP)和近似模型重构方法。PMP给出了最优性的必要条件,并通过哈密顿函数将OCP转化为边值问题(BVP)。如果 OCP 公式满足某些模式,则可以通过 PMP 导出纯解析且本质上非常快速的解决方案。通常采用两种方法来简化公式以满足某些模式:线性化能量成本或忽略车辆动力学中的空气动力阻力。显然,这两种方法都会降低模型的精度,因此PMP导出的解析解并不是全局最优的。Shen等人采用前一种方法(即,线性化能量成本)使生态驾驶的 OCP易于分析处理。该算法在三种不同的现实场景(自由流动的高速公路巡航、跟车和信号交叉口)的数值模拟中得到了验证。优化结果表明,与其他全局最优算法相比,该算法的性能不是最优的,但节省了大量的计算时间。Did等人忽略了空气动力阻力来推导生态驾驶OCP问题的解析解。由于是在城市条件下,车速较低,所以这个假设是合理的。然而,如果车辆在高速公路上高速行驶,则该假设不适用。

另一方面,通过近似模型的重构方法将 OCP 转换为决策变量少得多的非线性程序序列。具体来说,通过近似模型重构方法将控制阶段分为三个阶段:(i)以恒定速率加/减速,(ii)巡航,以及(iii)再次以恒定速率加/减速以逼近最佳速度计算负担较小的轨迹。

采用近似模型的重构方法非常适合信号交叉口场景,其中车辆在交叉口前面加速/减速、巡航穿过交叉口以及通过交叉口后加速/减速。类似地,对于重构方法,获得较少计算负担的代价是只能获得近似最优解。综上所述,生态驾驶 OCP 通常需要在算法复杂度和解决方案质量之间进行权衡。

 动态规划

动态规划(DP)算法的核心基于贝尔曼最优原理。贝尔曼最优性原理是,最优策略可以通过分段的方式构建,首先为涉及最后阶段的“尾部子问题”构建最优策略,然后将最优策略扩展到涉及最后两个阶段的“尾部子问题”阶段,并以这种方式继续,直到构建整个问题的最优策略。DP适用于处理始发地、目的地、轨迹固定的场景,例如:固定坡度道路或特定的多个信号交叉口道路等,并且能够导出最优解。Xu等人利用DP解决了排长在固定距离内的节能速度优化问题,并计算了最优全局解。

DP的一个显著优点是它可以在满足所有复杂约束的同时保证解的全局最优性。然而,DP的缺点在于其计算负担相当大,并且很难在车辆计算单元上进行实时计算,因为它需要遍历整个轨迹。为了解决这个问题,一种方法是在称为“云”的在线高性能计算平台上实现计算密集型计算。另一种考虑实时计算的方法是降低分辨率,以便在可接受的误差条件下获得解。

此外,还可以应用DP的两种更复杂的变体来降低计算复杂度,即迭代动态规划(IDP)和自适应动态规划(ADP)。IDP的主要机制是,IDP首先利用具有控制和状态网格粗分辨率的基本DP来解决OCP,然后以适当的速率对分辨率进行细化,并再次利用基本DP来解决OCP。董等人采用了IDP算法来优化多个信号交叉口的节能速度剖面。他们还证明,与基本DP相比,IDP可以将计算效率提高89%,而最优性仅牺牲3.88%。就ADP而言,它是一种基于学习的控制方法,利用函数逼近(即神经网络)来逼近成本函数,以规避DP的维数灾难并推进实时应用。具体来说,使用批评者网络来近似价值函数,而动作网络则呈现控制变量。而当前行动所产生的奖励则被用来强化该行动。Tang等人基于ADP实现了节能跟车行驶,并保证了实时速度规划。值得注意的是,与IDP类似,ADP在加快计算速度的同时也需要牺牲一些最优性。

 模型预测控制

模型预测控制(MPC)由于具有一定的预测性,能够处理多目标控制问题,在考虑系统响应和执行器等软硬约束的同时求解控制量,因此在现代控制工程中得到广泛应用 。请注意,尽管 MPC 也植根于最优控制,但由于其广泛的应用,有必要在本小节中单独讨论。模型预测控制过程分为三部分:预测模型、滚动优化和反馈校正。总体过程如下:(1) 在每个采样时刻,测量当前系统状态作为初始状态;(2)在未来应用控制量后的某个时域内预测系统状态,并与预测时域内期望的状态进行误差累计求和;(3)在线求解预测时域内的最优控制序列,并将该序列的第一组控制变量应用于受控系统;(4)返回步骤(1),重复上述过程。

模型预测控制具有控制效果好、鲁棒性强等优点,能够有效克服控制过程的不确定性、非线性和相关性,能够轻松处理被控变量和操纵变量的各种约束。然而,模型预测控制作为一种基于模型的控制方法,依赖于系统的准确建模。一般情况下,数学模型的精度越高,控制器的实现效果就越好,但这还需要更高的硬件成本和计算成本,特别是对于非线性 MPC。此外,由于汽车控制系统硬件的低成本要求与非线性优化问题的高计算复杂度之间的矛盾,使用MPC进行现场试验并不容易。因此,有必要研究可执行的实时模型预测控制方法。

 强化学习

强化学习属于机器学习领域,它采取植根于马尔可夫决策过程(MDP)的顺序动作。强化学习作为一种自主进化学习方法受到了广泛的关注。其学习机制依赖于通过智能体与环境的交互不断学习以获得更高的奖励值,从而输出更理想的控制动作。

近年来,强化学习在包括生态驾驶在内的车辆运动控制中蓬勃发展已得到广泛认可。一个重要原因在于其在计算速度和处理复杂场景任务的能力上的巨大优势。Wang 等人证实 RL 的运行速度比 MPC 快得多(甚至快了 200 倍以上),而 Kendall 等人2019 年在世界驾驶实验中首次展示了强化学习在全尺寸自动驾驶车辆上的实际应用,这展示了实时实施的巨大前景。此外,由于基于单智能体和多智能体的强化学习的存在,强化学习不仅可以实现对单个车辆的控制,还可以实现对整个队列的控制。对于基于多智能体的强化学习,智能体共享相同的网络结构和相应的参数,并提供了结合多个智能体的观察结果的机会,以收集更多信息并有助于整个系统级别的决策,这特别适合队列控制。Li等人设计了一种新颖的多智能体强化学习算法来解决交通振荡中的节能队列控制问题。仿真结果表明,所提出的多智能体强化学习算法取得了优异的节能性能,并获得了更多的奖励。

此外,强化学习因其多种变体而适用于生态驾驶的所有场景。Qu等人设计了一种电动汽车跟车生态驾驶策略,并通过基于深度确定性策略梯度(DDPG)(一种针对连续动作空间的强化学习算法)抑制交通波动来提高交通效率。Wang等人使用深度Q网络(DQN)用于离散动作空间来学习和谐的变道。Lee等人通过基于模型的强化学习,同时考虑了道路坡度和跟车场景,实现了电动汽车的生态驾驶控制。实验结果表明,RL 算法可以通过考虑道路坡度和与前车的安全距离来调整速度,同时最大限度地减少能量。Li等人提出了一种分层强化学习框架,通过考虑前方交通流和多个信号交叉口场景,在降低能耗的同时保证电动汽车的驾驶安全。就在最近几年,基于参数化动作空间的强化学习算法被提出来解决离散连续混合动作空间的场景。Jiang等人提出了一种电动汽车生态驾驶策略,基于参数化DQN(P-DQN)联合优化信号交叉口的跟车和变道行为。

然而,强化学习的主要缺点是需要大量的试验(重复的经验)来学习最佳的控制策略,特别是当系统以较差的初始策略开始时,这通常需要大量的时间在这个过程中。

 其他方法

此外,为了解决多场景下的生态驾驶问题,一些研究设计了集成多种算法的分层方法。董等人用DP来确定节能速度剖面的总体趋势。在下层,MPC 计算短视野的显式解,同时确保安全的车距。Feng等人开发了一种三阶段控制策略来处理考虑排行的交叉路口场景,包括基于绿灯最佳速度咨询的车队领导车轨迹规划算法、基于强化学习的车队追随车速度规划和灵活的排管理协议,保证车队的顺利运行。 

 可执行算法的总结与展望

表 6 概括了主要方法的优点和缺点。值得注意的是,对于多种场景,上述回顾总结了分层方法通常是很好的解决方案。此外,这些方法的一些高级变体已经出现,并且它们在性能上获得了相当大的改进。例如,Zhang等人提出了一种将RL与MPC中的滚动优化思想耦合的算法(RHRL),以解决生态驾驶中预测时域扩展产生的高维计算问题。RHRL充分利用了强化学习技术计算速度快和预测控制滚动优化能力的优势。仿真结果表明,RHRL 比 MPC 具有稍好的性能和更快的计算速度。提出了死区二次非线性模型预测控制(DQ-NMPC),其中用死区二次成本函数替换了制定的 NPMC 的 ℓ2norm 成本函数,以找到敏捷设定点跟踪之间的权衡和节能策略。在多弯道、山路等实际现场实验中,DQ-NPMC比NMPC计算效率更快,能效提高6.58%。此外,Kuba等人设计了多智能体强化学习中的第一个信任域策略优化,并提出了两种新颖的算法:异构代理信任域策略优化(HATRPO)和异构代理近端策略优化(HAPPO)。HATRPO/HAPPO 节省了为每个智能体维护集中批评家的成本,并且不要求智能体的同质性,也不要求对联合 Q 函数的可分解性做出任何其他限制性假设。他们将 HATRPO/HAPPO 与其他先进的多智能体 RL 算法进行了评估,结果明显证明了其最先进的性能。因此,如果我们能够根据自己的需求设计一种新颖的算法或者选择更合适的算法,对于电动汽车乃至其他类型车辆的生态驾驶将具有更加深远的研究意义。

表6: 生态驾驶主流算法的优势与缺点

w~自动驾驶合集14_自动驾驶_22

#讨论与研究展望

如前所述,生态驾驶这项技术引起了全世界的兴趣。为了充分实现电动汽车生态驾驶的发展,我们设想了如图7所示的有价值的未来研究方向和挑战,并详细讨论如下: 

  • 队列双重节能机制的集成:减少空气动力拖动和确保均匀运动是队列行驶的两种节能方式。相当一部分研究仅限于对上述两个方面的单独研究。因此,整合双重节能机制对于整个队列环保驾驶领域具有重要的研究意义。具体来说,对于领先车辆来说,节能控制与交通流预测相结合是一个很好的研究方向。如果准确预测前方交通流量,前车可以提前优化速度轨迹。另一方面,对于跟随车辆,大多数队列跟随控制研究都采用恒定间距或恒定时间车头时距策略。通过制定考虑气动减阻的新颖变时距策略,可以进一步增强节能潜力。
  • 超越能源效率的综合性能:与传统的车辆控制问题一样,大多数与电动汽车生态驾驶相关的研究旨在最大限度地减少能源消耗,只考虑性能的其他小部分(例如安全性)。但在正常驾驶过程中,也追求通行效率和舒适度。因此,在满足电动汽车能效要求的同时,可以将其他类型的性能综合添加到目标函数中。特别是,就排而言,稳定性是排系统最重要的宏观性能之一。这是将排稳定性与能量导向控制策略相结合需要进一步考虑的问题。即使在更全面的场景中,设计一个创造性的通用框架,同时考虑单车稳定性、编队稳定性和交通流稳定性,基于生态驾驶的目标。上述理念有助于实现从微观到宏观层面的综合稳定性和节能潜力。
  • 纳入整体场景:虽然有些研究考虑了多种场景,但这些场景都是局部的,而不是整体的(如信号交叉口与跟车、跟车与变道、道路坡度与跟车等)。实际的城市驾驶场景并不只包含部分因素,因为这些场景可能同时出现。如果能够根据实际路况综合考虑和融合这些场景(即跟车、变道、交叉路口、道路坡度、无线充电等现实融合场景)并提出一个大统一模型以解决这个问题,能为电动汽车的生态驾驶提供更多的实际应用价值。
  • 强调制动能量回收:电动汽车和内燃机汽车的一个显着区别是制动能量回收,但大多数生态驾驶研究没有充分考虑或没有准确考虑电动汽车的这一特点。事实上,准确建立电动汽车的制动能量回收模型可以产生更准确的能量增益。此外,应积极寻求将精细制动能量回收策略纳入综合控制方案的生态驾驶框架,特别是低速再生制动截止点,这可以进一步提高电动汽车的能量增益。
  • 建立更精确的能耗模型:几乎所有电动汽车环保驾驶研究都很少考虑影响能耗的温度和辅助系统等。忽视或过度简化能源消耗模型往往会使其在实践中难以实施。如果能够根据实际场景的要求综合考虑影响能源效率的因素,电动汽车的能耗模型将会变得更加精确。电动汽车精确的能耗模型可以对驾驶员或自动驾驶系统提前规划速度和路线产生影响,这有利于学术界和工业界生态驾驶的发展。
  • 异构车队:异构车队的生态驾驶将是未来几年非常有意义的话题,其中异构车队涉及两个方面。一方面,在可预见的未来拥有完全互联和自动化的环境并不现实,由人类驾驶车辆、自动驾驶车辆以及互联和自动驾驶车辆组成的异构车队很可能会长期存在。不同自动化水平的车辆需要不同的模型或控制策略。制定一个整体框架来实现整个异构车队的能量优化,同时考虑不同自动化水平的车辆的数量和位置,这是具有挑战性但有吸引力的。另一方面,由于向电动汽车的转移将是渐进的,由不同类型的车辆(例如电动汽车、内燃机汽车、混合动力汽车和插电式混合动力汽车)组成的异构车队也是一个实践问题。不同类型的车辆具有不一致的最佳经济速度。在考虑不同类型车辆的数量和位置的同时,如何确定这种异构车队的均匀速度以达到整体最佳能源效率是一个有趣的问题。
  • 引入更先进的算法:随着技术的进步和计算机性能的提高,许多最先进的方法不断被提出。如果研究人员能够针对电动汽车的某个生态驾驶问题提出或应用更有效的技术,可以在一定程度上提高性能结果或解决更复杂的问题。当打算设计一种新颖的算法时,确保解决方案的质量和计算效率是一个永恒的话题。一种方法是将两种或多种算法结合起来并发挥各自的优点。特别是,随着人工智能(AI)技术的兴起,传统控制方法与先进人工智能技术的结合正在成为趋势。另一个想法是找出某个算法缺陷的根本原因并提出改进方法。当旨在应用更有效的技术时,值得考虑一些高效的工具包,以提高研究效率。
  • 执行现场试验:模拟或台架测试声称的好处通常比现场试验更好。需要努力将生态驾驶的潜在效益从理论研究转化为实际驾驶。假设实验条件有限,车辆在环(现实自我车辆和控制器与仿真模拟的环境实时交互)和硬件在环(现实控制器与仿真模拟的车辆和环境实时交互)是两个值得考虑的替代选项。

w~自动驾驶合集14_自动驾驶_23

图7:未来研究方向与挑战

因为字数过多,参考文献请参考原文。

注:因该论文内容较丰富,本文仅选取该论文的部分重要内容,所有详细内容请查看原文。点击阅读原文可访问论文网址。本文禁止抄袭及盗用(包括盗用至学术论文),违者追究法律责任。

本文译自下文的部分重要内容: 《Toward carbon–neutral transportation electrification: a comprehensive and systematic review of eco-driving for electric vehicles》

引用: W. Li, H. Ding, N. Xu and J. Zhang, "Toward carbon–neutral transportation electrification: a comprehensive and systematic review of eco-driving for electric vehicles," in IEEE Transactions on Transportation Electrification, doi: 10.1109/TTE.2023.3331727.







#自动驾驶~BEV和SLAM

Birds-Eyes-View(BEV):鸟瞰图,这个词本身没什么特别意义,但在自动驾驶(Autonomous Driving,简称AD)领域逐渐普及后变成了这个行业内的一种术语。

Simultaneous Localization and Mapping(SLAM):并发定位与地图测绘,相对于BEV的另外一种感知技术。

Perception:感知,SLAM和BEV在AD领域里都是协助控制系统了解车辆周围状况的感知技术:知道自己在哪,有哪些障碍物,障碍物在自己的什么方位,距离多远,哪些障碍物是静态的那些是移动的,等等相关信息,便于随后做出驾驶决策。

SLAM VS BEV:SLAM主要通过各种传感器扫描周围空间的物体结构,以3维数据来描述这些信息。BEV同样通过传感器扫描获知周边状况,主要以2维数据来描述这些信息。从应用范围来讲,目前SLAM更为广阔,在AD火起来之前主要应用在VR/AR等领域,BEV主要集中在AD行业里。从技术实现来看,SLAM偏向于传统数学工具,包括各种几何/概率论/图论/群论相关的软件包,而BEV基本上清一色的基于深度神经网络DNN。两者最好不要对立着看,很多情况下可以互补。

以下将侧重于BEV的基础介绍。

SLAM和BEV最基础和核心的传感器就是相机(Camera),所以两者在计算过程中有大量的算力都被消耗在了图像中信息提取/识别和变换计算。SLAM倾向于识别图像中的特征(Feature)点,属于特征信息里的低级信息,通过计算这些特征点在不同图像帧上的位置来获取场景结构以及相机自身的位姿(Position and Pose)。而BEV倾向于识别车辆/道路/行人/障碍物等等高级特征信息,这些是卷积网CNN和Transformer擅长的。

相机有两个最基础的数据:内参(Instrinsics)和外参(Extrinsics),内参主要描述的是相机的CCD/CMOS感光片尺寸/分辨率以及光学镜头的系数,外参主要描述的是相机在世界坐标系下的摆放位置和朝向角度。

其中内参的常见矩阵是:

w~自动驾驶合集14_自动驾驶_24

其中fx和fy分别表示光学镜头的横向/纵向焦距长度(Focus),正常情况下焦距是不分横纵向的,但因为CCD/CMOS感光片上的像素单元不够正,如果这个像素是绝对的正方形,那么fx = fy,实际上很难做到,有微小的差异,导致光线经过镜头投射到感光片上后,横纵坐标在单位距离上出现不等距的问题,所以相机模块的厂家会测量这个差异并给出fx和fy来,当然开发者也可以利用标定(calibration)过程来测量这两个值。

w~自动驾驶合集14_自动驾驶_25

另外,在传统的光学领域里,fx和fy的默认单位是毫米:mm,但在这个领域默认单位是像素:Pixel,导致很多有摄影经验的人看到fx和fy的值都挺纳闷,特别大,动不动就是大几千,这数值都远超业余天文望远镜了。为什么这里用像素?我们试着通过内参计算一下相机的FOV(Field of View,视场大小,通常以角度为单位)就明白了:

w~自动驾驶合集14_自动驾驶_26

图3

w~自动驾驶合集14_自动驾驶_27

这里fy是纵向焦距,h是照片高度。因为h的单位是像素,所以fy也必须是像素,这样才好便于计算机处理,所以fx和fy的单位就统一成了像素。其实都不用到计算机这步,CCD/CMOS感光片一般是要集成另外一块芯片ISP(Image Signal Processor)的,这块芯片内部就要把感光数据转成数字化的图片,这里就可以用像素单位了。

内参除了这个矩阵外还有一套畸变(Distortion)系数K,这个东西不详细说了,正常的镜头成像后都是居中位置的变形小,四周变形大,一般通过标定(Calibration)获得这个参数后,对照片做反畸变处理,恢复出一个相对“正常”的照片。SLAM算法里很强调这个反畸变的重要性,因为特征点在照片上的绝对位置直接关系到了定位和建图的准确性,而大部分的BEV代码里看不到这个反畸变处理,一方面是BEV注重物体级别的高级特征,像素级别的轻微偏移影响不大,另一方面是很多BEV项目都是为了写论文,采用了类似nuScenes/Argoverse这类训练数据,这些数据的畸变比较小而已,一旦你在自己的项目里用了奇怪的镜头还是老老实实得做反畸变预处理。

w~自动驾驶合集14_自动驾驶_28

三维空间里表述旋转的计算方式常见的有2种:矩阵(Matrix)和四元数(Quaternion),为了防止矩阵方式存在万向节死锁(Gimbal Lock)问题,通常采用四元数来计算旋转。但在AD领域里很少这么干,因为相机是固定在车子上,只有垂直于地面的轴(一般是Z轴)才会发生360度的旋转,根本无法引发万向节问题,总不至于用户坚持在翻车的阶段仍旧保持自动驾驶这个诡异的需求。所以BEV的代码里通常就是矩阵形式,SLAM因为还会用在AR和其它领域,相机不是相对固定的,所以会采用四元数。另外,AD领域里不考虑透视现象,所以外参都是仿射矩阵(Affine Matrix),这点和CG领域的3维渲染是不同的。

另外,一般文章里介绍内参时还会考虑旋转偏差,这是由于CCD/CMOS感光片在工厂里被机器给装歪了,但AD领域一般不会考虑它,误差太小,而相机安装在车辆上时本身外参就有很大的相对旋转,不如一并算了,最后交由DNN学习过滤掉,而AR领域里的SLAM更是要主动计算外参,这点毛毛雨就不考虑了。

内外参了解之后,下一个基础的重点就是坐标系。AD的坐标系有好几个,不事先理清楚就直接看代码有点晕。

1、世界坐标系(World Coordination),这个是真实世界空间里,车辆的位置和方位角,通常粗略的位置是由GNSS(Global Navigation Satellite System)卫星定位系统获取,GNSS包括了美国GPS/中国BDS/欧洲Galileo/毛子GLONASS/日本QZSS/印度IRNSS,各有千秋,定位精度一言难尽,一般标称的精度都是指:车辆在空旷地区,上面有好几颗定位卫星罩着你,车辆静止,定位设备天线粗壮,无其它信号源干扰的情况下的测试结果。

如果你处在城市内,四周高楼林立,各种无线电干扰源,卫星相对你时隐时现,车速还不慢,这种情况下给你偏个几十米都是对的起你了。为此有两种常见解决方案:差分基站纠偏和地图通行大数据纠偏。这能给你造成一种错觉:卫星定位还是蛮准的。不管怎么弄,最后得到的坐标位置是经纬度,但跟常规GIS(Geographic Information System)相比,AD的经纬度不是球面坐标系,而是展开成2维地图的坐标系,所以最终在系统内的坐标系也是有区别的,比如google会把WGS84的经纬度换算成它自家地图的矩形切片编码,Uber提出过一种六边形切片的H3坐标编码,百度则是在火星坐标的基础上叠加了一个BD09的矩形切片坐标,等等诸如此类。

这些都是绝对坐标位置,而通过类似SLAM技术扫描的高精度地图还会在这个基础上引入一些相对坐标。不管怎么样,最后在代码里看到的只剩下XY了。但这些系统都不能获取车辆朝向(地理正北为0度,地理正东为90度,依此类推,这仍旧是在2维地图上表示方式),所以AD里的车辆角度都是指“轨迹朝向”,用当前位置坐标减去上一时刻的坐标获得一个指向性的矢量。当然在高精度地图的加持下,是可以通过SLAM技术算出车辆的瞬时方位角。在缺失GNSS定位的时候,比如过隧道,需要用车辆的IMU(Inertial Measurement Unit)这类芯片做惯性导航补充,它们提供的数值是一个相对的坐标偏移,但随着时间的推移累积误差大,所以长时间没有GNSS信号的时候,IMU表示也没办法。

2、BEV训练数据集的世界坐标系(nuScenes World Coordination,其它训练集就不特别说明了),这个跟GNSS的绝对坐标系就不同了:

w~自动驾驶合集14_自动驾驶_29

图5

这是一个nuScenes地图,它的世界坐标系是图片坐标系,原点在图片左下角,单位是米,因此在使用训练数据集时,是不用考虑经纬度的。数据集中会根据时间序列给出车辆的瞬时位置,也就是在这个图片上的XY。

3、Ego坐标系(Ego Coordination),在BEV里,这个Ego是特指车辆本身,它是用来描述摄像机/激光雷达(Lidar,light detection and ranging)/毫米波雷达(一般代码里就简称为Radar)/IMU在车身上的安装位置(单位默认都是米)和朝向角度,坐标原点一般是车身中间,朝向如图:

w~自动驾驶合集14_自动驾驶_30

图6

所以车头正放的相机默认都是Yaw(Z轴)为0度,外参(Extrinsics Matrix)主要就是描述这个坐标系的。

4、相机坐标系(Camera Coordination),切记,这个不是照片坐标系,坐标原点在CCD/CMOS感光片的中央,单位是像素,内参(Intrinsics Matrix)主要就是描述这个坐标系的。

5、照片坐标系(Image Coordination),坐标原点在图片的左上角,单位是像素,横纵坐标轴一般不写成XY,而是uv。

w~自动驾驶合集14_自动驾驶_31

左中右三套坐标系分别为:Ego Coordination, Camera Coordination, Image Coordination。

所以,当在BEV中做LSS(Lift,Splat,Shoot)时,需要把照片中的像素位置转换到世界坐标系时,要经历:

Image_to_Camera, Camera_to_Ego, Ego_to_World,用矩阵表示:

Position_in_World = Inv_World_to_Ego * Inv_Ego_to_Camera * Inv_Camera_to_Image * (Position_in_Image)

其中Inv_表示矩阵的逆。实际代码里,Camera_to_Image通常就是Intrinsics参数矩阵,Ego_to_Camera就是Extrinsics参数矩阵。

这里要注意的一点是:fx,fy,它们实际上是这样计算得到的:

w~自动驾驶合集14_自动驾驶_32

Fx和Fy分别是横向/纵向的镜头焦距,但单位是米,Dx和Dy分别是一个像素有几米宽几米高,得出fx和fy的单位就是像素。当使用(Ego_to_Camera * Camera_to_Image)矩阵乘上Ego空间的坐标,会以像素为单位投影到照片空间,当使用(Inv_Ego_to_Camera * Inv_Camera_to_Image)矩阵乘上照片空间的坐标,会以米为单位投影到Ego空间,不会有单位上的问题。

大部分的BEV是多摄像头的,意味着要一次性把多组摄像头拍摄的照片像素换算到Ego或者世界坐标系:

w~自动驾驶合集14_自动驾驶_33

图8

在统一的坐标系下,多角度的照片才能正确得“环绕”出周边的景象。另外还有一些单目(Monocular)摄像头的BEV方案,它们有的不考虑Ego坐标系,因为只有一个朝向正前方(Yaw,Pitch,Roll全部为0)的摄像头,而且原点就是这个摄像头本身,所以直接从相机坐标系跳到世界坐标系。

Frustum,这个东西在3维渲染领域通常叫做“视锥体”,用来表示相机的可视范围:

w~自动驾驶合集14_自动驾驶_34

图9

红面和绿面以及线框包围起来的空间就是视锥体,绿面通常叫做近平面(Near Plane),红面叫做远平面(Far Plane),线框构成的角度叫做FOV,如果CCD/CMOS成像的高宽相同,那么近平面和远平面就都是正方形,一个FOV就足以表示,反之,就要区分为FOVx和FOVy了,超出这个视锥体范围的物体都不考虑进计算。

图7中由6个三角面构成了组合的可视范围,实际上应该是6个俯视的视锥体构成,能看出视锥体之间是有交叠区域的,这些区域有利于DNN在训练/推理中对6组数据做相互矫正,提高模型准确性,在不增加相机数量的前提下,如果想扩大这个交叠区域,就必须选择FOV更大的相机,但FOV越大的相机一般镜头畸变就会越严重(反畸变再怎么做也只能一定程度上的矫正图片),物体在图片上的成像面积也越小,干扰DNN对图片上特征的识别和提取。

BEV是个庞大的算法族,倾向于不同方向的算法选择,粗略得看,有Tesla主导的以视觉感知流派,核心算法建立在多路摄像头上,另外一大类是激光雷达+毫米波雷达+多路摄像头的融合(Fusion)派,国内很多AD公司都是融合派的,Google的Waymo也是。

严格得讲,Tesla正在从BEV(Hydranet)过渡到一种新的技术:Occupancy Network,从2维提升到3维:

w~自动驾驶合集14_自动驾驶_35

图10

无论是2维的还是3维的,都在试图描述周遭空间的Occupany(占用)情况,只是一个用2维棋盘格来表述这种占用情况,一个是用3维的积木方式表述占用。DNN在度量这种占用时采用的是概率,比如我们直观看到某个格子上是一辆车,而DNN给出的原始结果是:这个格子上,是车的可能性有80%,是路面的可能性为5%,是行人的可能性为3%,所以,在BEV代码里,一般将各种可能出现的物体分了类,通常是两大类:

  1. 不常变化的:车辆可通信区域(Driveable),路面(Road),车道(Lane),建筑(Building),植被(Foliage/Vegetation),停车区域(Parking),信号灯(Traffic Light)以及一些未分类静态物体(Static),它们之间的关系是可以相互包容的,比如Driveable可以包含Road/Lane等等。
  2. 可变的:也就是会发生移动的物体:行人(Pedestrian),小汽车(Car),卡车(Truck),锥形交通标/安全桶(Traffic Cone)等等

这样分类的目的是便于AD做后续的驾驶规划(Planning,有的翻译成决策)和控制(Control)。而BEV在感知(Perception)阶段就是按照这些物体在格子上出现的概率打分,最后通过Softmax函数将概率归一取出最大的那个可能性作为占用这个格子的物体类型。

但这有个小问题:BEV的DNN模型(Model)在训练阶段,是要指明照片中各个物体是啥?也就是要在标注数据(Labeled Data)上给各种物体打上类型标签的。

w~自动驾驶合集14_自动驾驶_36

图11

右边的我们权当做是标注数据吧,左边是对应的相片,按照这个物体分类训练出来的DNN模型,真得跑上路面,如果遭遇了训练集里未出现的物体类型怎么办?如果模型效果不好,比如某个姿势奇葩的人体未被识别成行人和其它已知类型,又当如何?Occupancy Network为此改变的感知策略,不再强调分类了(不是不分类,只是重点变了),核心关注路面上是否有障碍物(Obstacle),先保证别撞上去就行了,别管它是什么类型。3维的积木方式表述这种障碍物更为贴切,有的地方借用了3维渲染(Rendering/Shading)领域的常见概念把这种3维表述叫做体素(Voxel),想象一下我的世界(MineCraft)就很简单了。

w~自动驾驶合集14_自动驾驶_37

图12

以上是视觉流派的简述,混合派在干嘛?它们除了相机外,还侧重于激光雷达的数据,毫米波雷达由于数据品相太差逐渐退出,留守的去充当停车雷达了,也不能说它一无是处,Tesla虽然强调视觉处理,但也保留了一路朝向正前方的毫米波雷达,而且AD这个领域技术变化非常快,冷不丁哪天有新算法冒出又能把毫米波雷达的价值发扬光大一把。

激光雷达的好处是什么:可以直接测出物体的远近,精度比视觉推测出的场景深度要高很多,一般会转化为深度(Depth)数据或者点云(Point Cloud),这两者配套的算法有很长的历史了,所以AD可以直接借用,减少开发量。另外,激光雷达可以在夜间或糟糕的天气环境下工作,相机就抓瞎了。

但这几天出现了一种新的感知技术HADAR(Heat-Assisted Detection and Ranging),可以和相机/激光雷达/毫米波雷达并列的传感器级别感知技术。它的特点是利用特殊的算法把常规热成像在夜间拍摄的图片转化为周围环境/物体的纹理和深度,这个东西和相机配合能解决夜间视觉感知的问题。

以前的BEV为什么不提热成像/红外相机,因为传统算法有些明显的缺陷:只能提供场景的热量分布,形成一张灰度(Gray)图,缺乏纹理(Texture),原始数据缺乏深度信息,推算出的深度精度差,如果仅仅通过从灰度图上提取的轮廓(Contour)和亮度过渡(Gradient),很难精确还原场景/物体的体积信息,并且目前的2维物体识别是很依赖纹理和色彩的。这个HADAR的出现,恰好可以解决这个问题:在较暗的环境下提取场景的深度以及纹理:

w~自动驾驶合集14_自动驾驶_38

图13

左列,自上而下:

  1. 基础的热成像,简称T
  2. 用常规热成像算法从T提取的深度
  3. 用HADAR算法从T提取的纹理图
  4. 用HADAR算法从T提取的深度
  5. 真实场景的深度

右列,自上而下:

  1. 这个场景在白天用可见光相机拍摄的照片
  2. 通过照片推理的深度
  3. 真实场景的深度

HADAR的这个深度信息老牛逼了,对比一下激光雷达的效果就知道了:

w~自动驾驶合集14_自动驾驶_39

图14

激光雷达的扫描范围是有限的,一般半径100米,从上图可以看出,没有纹理信息,远处的场景也没有深度了,扫描线导致其数据是个稀疏(Sparse)结构,想要覆盖半径更大更稠密(Dense)就必须买更昂贵的型号,最好是停下来多扫一段时间。激光雷达模块厂家在展示产品时,当然得给出更好看的图了,只有AD研发人员才知道这里面有多苦。

以上都是基础的概念,作为BEV算法的入门,必须先提到LSS(Lift,Splat,Shoot):

https%3A//github.com/nv-tlabs/lift-splat-shoot

老黄家的,很多文章都把它列为BEV的开山(Groundbreaking)之作。它构建了一个简单有效的处理过程:

把相机的照片从2维数据投影成3维数据,然后像打苍蝇一样把它拍扁,再从上帝视角来看这个被拍扁的场景,特别符合人看地图的直觉模式。一般看到这里会有疑惑的:都已经建立了3维的场景数据,3维不香么?干嘛还要拍扁?不是不想要3维,是没办法,它不是一个完善的3维数据:

w~自动驾驶合集14_自动驾驶_40

图15

看过这玩意吧,它就是LSS的本质,从正面看,能形成一张2维照片,这个照片被LSS拉伸到3维空间后就是上图,你从BEV的视角也就是正上方向下看会是啥?什么都看不出来,所以后续要拍扁(Splat),具体过程是这样:

w~自动驾驶合集14_自动驾驶_41

图16

先提取图像特征和深度(Feature and Depth,LSS里是同时提取的,后面会具体解释),深度图类似:

w~自动驾驶合集14_自动驾驶_42

图17

只能说类似,并不准确,后面也会具体说明的,这个深度信息可以构建一个伪3D模型(Point Cloud点云模式),类似图15:

w~自动驾驶合集14_自动驾驶_43

图18

看着还行,但把这个3D模型转到BEV俯视角下,估计亲娘都认不出来了:

w~自动驾驶合集14_自动驾驶_44

图19

拍扁后结合特征Feature再做一次语义识别,形成:

w~自动驾驶合集14_自动驾驶_45

这个就是喜闻乐见的BEV图了。以上是对LSS的直观认知,算法层面是如何实现的?

先给单个相机可拍摄的范围构建一个立方体模样的铁丝笼子(高8宽22深41),祭出大杀器Blender:

w~自动驾驶合集14_自动驾驶_46

图21

这里是示意图,不要纠结于格子的数量和尺寸。这个3D网格代表的是一路相机的视锥体(Frustum),前面贴过视锥体的形状(图9),这里变形成立方体,在相机空间里看这个照片和这个立体网格的关系就是:

w~自动驾驶合集14_自动驾驶_47

图22

右边是个正对着网格立方体的相机示意图,相片提取深度后(深度图的实际像素尺寸是高8宽22):

w~自动驾驶合集14_自动驾驶_48

图23

把这个深度图按照每个像素的深度沿着红线方向展开(Lift)后:

w~自动驾驶合集14_自动驾驶_49

图24

可以看到,部分深度像素已经超出了视锥体的范围,因为LSS一开始就假设了这么个有限范围的笼子,超出部分直接过滤掉。这里必须提醒一下:LSS并不是直接算出每个像素的深度,而是推理出每个像素可能处于笼子里每个格子的概率,图24是已经通过Softmax提取出每个像素最有可能位于哪个格子,然后把它装进对应格子的示意结果,便于理解,更准确的描述如下:

w~自动驾驶合集14_自动驾驶_50

图25

在图25中选取深度图的某个像素(红色格子,事实上LSS的深度图分辨率是很小的,默认只有8*22像素,所以这里可以用一个格子当做一个像素),它隶属于笼子下方边沿的一条深度格子(这条格子其实就代表相机沿着深度看向远方的一条视线):

w~自动驾驶合集14_自动驾驶_51

图26

图25中的那个红色的深度像素,沿着图26这条视线格子的概率分布就是:

w~自动驾驶合集14_自动驾驶_52

图27

黄线的起伏表示2D深度图像素在Lift后沿着视线3D深度的概率分布(Depth Distribution,我这是示意性得画法,不是严格按照实际数据做的)。等价于LSS论文里的这张图:

w~自动驾驶合集14_自动驾驶_53

图28

LSS中构建立方笼子的代码位于:

class LiftSplatShoot(nn.Module): def __init__(self, grid_conf, data_aug_conf, outC): self.frustum = self.create_frustum() def create_frustum(self): # D x H x W x 3 frustum = torch.stack((xs, ys, ds), -1) return nn.Parameter(frustum, requires_grad=False) def get_geometry(self, rots, trans, intrins, post_rots, post_trans): """Determine the (x,y,z) locations (in the ego frame) of the points in the point cloud. Returns B x N x D x H/downsample x W/downsample x 3 """ B, N, _ = trans.shape # undo post-transformation # B x N x D x H x W x 3 points = self.frustum - post_trans.view(B, N, 1, 1, 1, 3) points = torch.inverse(post_rots).view(B, N, 1, 1, 1, 3, 3).matmul(points.unsqueeze(-1)) # cam_to_ego points = torch.cat((points[:, :, :, :, :, :2] * points[:, :, :, :, :, 2:3], points[:, :, :, :, :, 2:3] ), 5) combine = rots.matmul(torch.inverse(intrins)) points = combine.view(B, N, 1, 1, 1, 3, 3).matmul(points).squeeze(-1) points += trans.view(B, N, 1, 1, 1, 3) return points

为了便于分析,我裁减了代码。单个相机的frustum尺寸为:D x H x W x 3(深度D:41,高度H:8,宽度W:22),也就是创建了一个D x H x W的容器,容器的每个格子里存储了这个格子的坐标值(X,Y,Z)。

w~自动驾驶合集14_自动驾驶_54

图29

实际上是在照片坐标系(uv)上拓展了一个深度Z构成的新坐标系。由于LSS默认是5路摄像头,把5个Frustum送到get_geometry函数里,会输出5路Frustum构成的一个组合笼子,其张量尺寸变为:B x N x D x H x W x 3,其中B是batch_size,默认是4组训练数据,N是相机数量5。

get_geometry里一开始要做一个

# undo post-transformation

这玩意是干啥的?这跟训练集有关,在深度学习里里,有一种增强现有训练样本的方法,一般叫做Augmentation(其实AR技术里这个A就是Augmentation,增强的意思),通过把现有的训练数据做一些随机的:翻转/平移/缩放/裁减,给样本添加一些随机噪音(Noise)。比如,在不做样本增强前,相机的角度是不变的,训练后的模型只认这个角度的照片,而随机增强后再训练,模型可以学习出一定角度范围变化内的适应性,也就是Robustness。

w~自动驾驶合集14_自动驾驶_55

图30

Augmentation技术也是有相关理论和方法的,这里就贴个图不赘述了。数据增强的代码一般都是位于DataLoader内:

class NuscData(torch.utils.data.Dataset): def sample_augmentation(self):

回到刚才的get_geometry,数据增强会给照片增加一些随机变化,但相机本身是必须固定的,这样才能让DNN模型学习这些随机变化的规律并去适应它们。所以将5路Frustum的安置到车身坐标系时候要先去掉(undo)这些随机变化。

然后通过:

# cam_to_ego points = torch.cat((points[:, :, :, :, :, :2] * points[:, :, :, :, :, 2:3], points[:, :, :, :, :, 2:3] ), 5) combine = rots.matmul(torch.inverse(intrins)) points = combine.view(B, N, 1, 1, 1, 3, 3).matmul(points).squeeze(-1) points += trans.view(B, N, 1, 1, 1, 3)

将各路Frustum从相机坐标系转入车辆自身坐标系,注意这里的intrins是相机内参,rots和trans是相机外参,这些都是nuScenes训练集提供的,这里只有intrincs用了逆矩阵,而外参没有,因为nuScenes是先把每个相机放在车身原点,然后按照各路相机的位姿先做偏移trans再做旋转rots,这里就不用做逆运算了。如果换个数据集或者自己架设相机采集数据,要搞清楚这些变换矩阵的定义和计算顺序。

四视图大概就是这个样子:

w~自动驾驶合集14_自动驾驶_56

图31

LSS中推理深度和相片特征的模块位于:

class CamEncode(nn.Module): def __init__(self, D, C, downsample): super(CamEncode, self).__init__() self.D = D self.C = C self.trunk = EfficientNet.from_pretrained("efficientnet-b0") self.up1 = Up(320+112, 512) self.depthnet = nn.Conv2d(512, self.D + self.C, kernel_size=1, padding=0)

trunk用于同时推理原始的深度和图片特征,depthnet用于将trunk输出的原始数据解释成LSS所需的信息,depthnet虽是卷积网但卷积核(Kernel)尺寸只有1个像素,功能接近一个全连接网FC(Full Connected),FC日常的工作是:分类或者拟合,对图片特征而言,它这里类似分类,对深度特征而言,它这里类似拟合一个深度概率分布。EfficientNet是一种优化过的ResNet,就当做一个高级的卷积网(CNN)看吧。对于这个卷积网而言,图片特征和深度特征在逻辑上没有区别,两者都位于trunk上的同一个维度,只是区分了channel而已。

这就引出了另外一个话题:从单张2D图片上是如何推理/提取深度特征的。这类问题一般叫做:Monocular Depth Estimation,单目深度估计。一般这类系统内部分两个阶段:粗加工(Coarse Prediction)和精加工(Refine Prediction),粗加工对整个画面做一个场景级别的简单深度推测,精加工是在这个基础上识别更细小的物体并推测出更精细的深度。这类似画家先用简笔画出场景轮廓,然后再细致勾勒局部画面。

除了用卷积网来解决这类深度估计问题,还有用图卷积网(GCN)和Transformer来做的,还有依赖测距设备(RangeFinder)辅助的DNN模型,这个话题先不展开了,庞杂程度不亚于BEV本身。

那么LSS这里仅仅采用了一个trunk就搞定深度特征是不是太儿戏了,事实上确实如此。LSS估计出的深度准头和分辨率极差,参看BEVDepth项目里对LSS深度问题的各种测试报告:

https%3A//github.com/Megvii-

BaseDetection/BEVDepth

BEVDepth的测试里发现:如果把LSS深度估计部分的参数换成一个随机数,并且不参与学习过程(Back Propagation),其BEV的总体测试效果只有很小幅度的降低。但必须要说明,Lift的机制本身是很强的,这个突破性的方法本身没问题,只是深度估计这个环节可以再加强。

LSS的训练过程还有另外一个问题:相片上大约有1半的数据对训练的贡献度为0,其实这个问题是大部分BEV算法都存在的:

w~自动驾驶合集14_自动驾驶_57

图32

右边的标注数据实际上只描述了照片红线以下的区域,红线上半部都浪费了,你要问LSS里的模型对上半部都计算了些什么,我也不知道,因为没有标注数据可以对应上,而大部分的BEV都是这么训练的,所以这是一个普遍现象。训练时,BEV都会选择一个固定面积范围的周遭标注数据,而照片一般会拍摄到更远的景物,这两者在范围上天生就是不匹配的,另一方面部分训练集只关注路面标注,缺乏建筑,因为眼下BEV主要解决的是驾驶问题,不关心建筑/植被。

这也是为什么图17哪里的深度图和LSS内部真实的深度图是不一致的,真实深度图只有接近路面这部分才有有效数据: 

w~自动驾驶合集14_自动驾驶_58

图33

所以整个BEV的DNN模型势必有部分算力被浪费了。目前没看到任何论文关于这方面的研究。

接着继续深入LSS的Lift-Splat计算过程:

def get_depth_feat(self, x): x = self.get_eff_depth(x) # Depth x = self.depthnet(x) depth = self.get_depth_dist(x[:, :self.D]) new_x = depth.unsqueeze(1) * x[:, self.D:(self.D + self.C)].unsqueeze(2) return depth, new_x def get_voxels(self, x, rots, trans, intrins, post_rots, post_trans): geom = self.get_geometry(rots, trans, intrins, post_rots, post_trans) x = self.get_cam_feats(x) x = self.voxel_pooling(geom, x) return x

这里的new_x是把深度概率分布直接乘上了图片纹理特征,为了便于直观理解,我们假设图片特征有3个channel:c1,c2,c3,深度只有3格:d1,d2,d3。我们从图片上取某个像素,那么它们分别代表的意义是:c1:这个像素点有70%的可能性是车子,c2:有20%的可能性是路,c3:有10%的可能性是信号灯, d1:这个像素有80%的可能是在深度1,d2:有15%的可能性是在深度2,d3:有%5的可能性是在深度3上。如果把它们相乘的到:

w~自动驾驶合集14_自动驾驶_59

公式的意义,注意它这里把图像特征叫做c(Context), a_d的意义是深度沿视线格子的概率分布,d是深度。new_x就是这个计算结果。前面说过,由于图像特征和深度都是通过trunk训练出来的,它们位于同一维度,只是占用channel不同,深度占用了前self.D(41)个channel,Context占用了后面self.C(64)个channel。

由于new_x是分别按照每路相机的Frustum单独计算的,而5个Frustum有重叠区域,须要做作数据融合,所以在voxel_pooling里计算好格子的索引和对应的空间位置,通过这个对应关系,把new_x的内容一一装入指定索引的格子。

LSS在voxel_pooling的计算力引入了cumsum这个机制,虽然有很多文章在解释它,但这里不建议花太多功夫,它只是一个计算上的小技巧,对整个LSS是锦上添花的事,不是必要的。






#自动驾驶~多模态融合感知算法

这里说下自动驾驶中的多模态融合感知算法(数据级/特征级/目标级)

多模态传感器融合意味着信息互补、稳定和安全,长期以来都是自动驾驶感知的重要一环。然而信息利用的不充分、原始数据的噪声及各个传感器间的错位(如时间戳不同步),这些因素都导致融合性能一直受限。本文全面调研了现有多模态自动驾驶感知算法,传感器包括LiDAR和相机,聚焦于目标检测和语义分割,分析超过50篇文献。同传统融合算法分类方法不同,本文从融合阶段的不同将该领域分类两大类、四小类。此外,本文分析了当前领域存在的问题,对未来的研究方向提供参考。

为什么需要多模态?

这是因为单模态的感知算法存在固有的缺陷。举个例子,一般激光雷达的架设位置是高于相机的,在复杂的现实驾驶场景中,物体在前视摄像头中可能被遮挡,此时利用激光雷达就有可能捕获缺失的目标。但是由于机械结构的限制,LiDAR在不同的距离有不同的分辨率,而且容易受到极端恶劣天气的影响,如暴雨等。虽然两种传感器单独使用都可以做的很出色,但从未来的角度出发,LiDAR和相机的信息互补将会使得自动驾驶在感知层面上更安全。

近期,自动驾驶多模态感知算法获得了长足的进步,从跨模态的特征表示、更可靠的模态传感器,到更复杂、更稳定的多模态融合算法和技术。然而,只有少数的综述[15, 81]聚焦于多模态融合的方法论本身,并且大多数文献都遵循传统分类规则,即分为前融合、深度(特征)融合和后融合三大类,重点关注算法中特征融合的阶段,无论是数据级、特征级还是提议级。这种分类规则存在两个问题:首先,没有明确定义每个级别的特征表示;其次,它从对称的角度处理激光雷达和相机这两个分支,进而模糊了LiDAR分支中提级级特征融合和相机分支中数据级特征融合的情况。总结来说,传统分类法虽然直观,但已经不适用于现阶段多模态融合算法的发展,一定程度上阻碍了研究人员从系统的角度进行研究和分析。

任务和公开比赛

常见的感知任务包括目标检测、语义分割、深度补全和预测等。本文重点关注检测和分割,如障碍物、交通信号灯、交通标志的检测和车道线、freespace的分割等。自动驾驶感知任务如下图所示:

w~自动驾驶合集14_自动驾驶_60

常用的公开数据集主要包含KITTI、Waymo和nuScenes,下图汇总了自动驾驶感知相关的数据集及其特点。

w~自动驾驶合集14_自动驾驶_61

融合方法

多模态融合离不开数据表达形式,图像分支的数据表示较简单,一般均指RGB格式或灰度图,但激光雷达分支对数据格式的依赖度较高,不同的数据格式衍生出完全不同的下游模型设计,总结来说包含三个大方向:基于点、基于体素和基于二维映射的点云表示。

传统分类方法将多模态融合分为以下三种:

  1. 前融合(数据级融合)指通过空间对齐直接融合不同模态的原始传感器数据。
  2. 深度融合(特征级融合)指通过级联或者元素相乘在特征空间中融合跨模态数据。
  3. 后融合(目标级融合)指将各模态模型的预测结果进行融合,做出最终决策。

本文则采用下图的分类方式,整体分为强融合和若融合,强融合进一步细分为:前融合、深度融合、不对称融合和后融合。

w~自动驾驶合集14_自动驾驶_62

本文使用KITTI的3D检测任务和BEV检测任务横向对比各个多模态融合算法的性能,下图是BEV检测测试集的结果:

w~自动驾驶合集14_自动驾驶_63

下图是3D检测测试集的结果:

w~自动驾驶合集14_自动驾驶_64

强融合

w~自动驾驶合集14_自动驾驶_65

根据激光雷达和相机数据表示的不同组合阶段,本文将强融合细分为:前融合、深度融合、不对称融合和后融合。如上图所示可以看出,强融合的每个子模块都高度依赖于激光雷达点云,而不是相机数据。

前融合

与传统的数据级融合定义不同,后者是一种在原始数据级别通过空间对齐和投影直接融合每种模态数据的方法,早期融合在数据级别融合LiDAR 数据和数据级别的相机数据或特征级。早期融合的一个例子可以是图4中的模型。

与传统分类方法定义的前融合不同,本文定义的前融合是指在原始数据级别通过空间对齐和投影直接融合各个模态数据的方法,前融合在数据级指的是融合激光雷达数据,在数据级或特征级融合图像数据,示意图如下:

w~自动驾驶合集14_自动驾驶_66

在LiDAR分支,点云具有多种表达形式,如反射图、体素化张量、前视图/距离视图/BEV视图以及伪点云等等。虽然这些数据结合不同主干网络都有不同的内在特征,但是除了伪点云之外[79],大多数数据都是通过一定的规则处理生成。此外,相比于特征空间嵌入,LiDAR的这些数据都有很强的可解释性,均可以直接可视化。

在图像分支,严格意义上的数据级定义应该是RGB或灰度图,但是这种定义缺乏通用性和合理性。因此本文扩展了前融合阶段的图像数据的数据级定义,包含数据级和特征级数据。值得一提的是,本文将语义分割预测结果也作为前融合的一种(图像特征级),一是因为有利于3D目标检测,二是因为语义分割的“目标级”特征与整个任务的最终目标级提议不同。

深度融合

深度融合,也称特征级融合,是指在激光雷达分支的特征级融合多模态数据,但在图像分支的数据集和特征级进行融合。例如一些方法使用特征提举起分别获取LiDAR点云和图像的嵌入表示,并通过一系列下游模块融合两种模态的特征。然而,与其他强融合不同的是,深度融合有时会以级联方式融合特征,这两者都利用了原始和高级语义信息。示意图如下:

w~自动驾驶合集14_自动驾驶_67

后融合

后融合,也可叫作目标级融合,指的是对多个模态的预测结果(或proposal)进行融合。例如,一些后融合方法利用LiDAR点云和图像的输出进行融合[55]。两个分支的proposal的数据格式应与最终结果一致,但是质量、数量和精度存在一定差异。后融合可以看作是一种多模态信息优化最终proposal的集成方法,示意图如下所示:

w~自动驾驶合集14_自动驾驶_68

不对称融合

强融合的最后一种是不对称融合,指的是融合一个分支的目标级信息和其他分支的数据级或特征级信息。上述三种融合方法将多模态的各个分支平等对待,不对称融合则强调至少有一个分支占据主导地位,其他分支则提供辅助信息预测最终结果。下图是不对称融合的示意图,在proposal阶段,不对称融合只有一个分支的proposal,而后融合则是所有分支的proposal。

w~自动驾驶合集14_自动驾驶_69

弱融合

与强融合的区别在于,弱融合方法不直接从多模态分支中融合数据、特征或者目标,而是以其他形式处理数据。下图展示了弱融合算法的基本框架。基于弱融合的方法通常使用基于一定规则的方法来利用一种模态的数据作为监督信号,以指导另一种模态的交互。例如,图像分支中来自CNN的2D proposal可能会导致原始LiDAR点云中出现截断,弱融合直接将原始LiDAR 点云输入到 LiDAR 主干中以输出最终的proposal。     

w~自动驾驶合集14_自动驾驶_70

其他方式融合

还有一些工作不属于上述任何一种范式,因为它们在模型设计的框架中使用了多种融合方式,例如[39]结合了深度融合和后融合,[77]则结合了前融合。这些方法不是融合算法设计的主流方式,本文统一归为其他融合方式。

多模态融合的机遇

近年来,用于自动驾驶感知任务的多模态融合方法取得了快速进展,从更高级的特征表示到更复杂的深度学习模型。然而,还有一些悬而未决的问题有待解决,本文总结了如下几个未来可能的改进方向 。

更先进的融合方法

当前的融合模型存在错位和信息丢失的问题[13,67,98]。此外,平融合(flat fusion)操作也阻碍了感知任务性能的进一步提高。总结如下:

  1. 错位和信息丢失:相机和LiDAR的内外在差异很大,两种模态的数据需要进行坐标对齐。传统的前融合和深度融合方法利用标定信息将所有LiDAR点直接投影到相机坐标系,反之亦然。然而由于架设位置、传感器噪声,这种逐像素的对齐是不够准确的。因此,一些工作利用周围信息进行补充以获取更好的性能。此外,在输入和特征空间的转换过程中,还存在一些其他信息的丢失。通常,降维操作的投影不可避免地会导致大量信息丢失,如将3D LiDAR点云映射为2D BEV图像中则损失了高度信息。因此,可以考虑将多模态数据映射到另一种专为融合设计的高维空间,进而有效的利用原始数据,减少信息损失。
  2. 更合理的融合操作:当前许多方法使用级联或者元素相乘的方式进行融合。这些简单的操作可能无法融合分布差异较大的数据,因此难以拟合两个模态间的语义红狗。一些工作试图使用更复杂的级联结构来融合数据并提高性能。在未来的研究中,双线性映射等机制可以融合具有不同特点的特征,也是可以考虑的方向。

多源信息利用

前视单帧图像是自动驾驶感知任务的典型场景。然而,大多数框架只能利用有限的信息,并未详细设计辅助任务来促进驾驶场景的理解。总结如下:

  1. 采用更多的潜在信息:现有方法缺乏对个维度和来源的信息的有效利用。大多数都将精力放在前视图中的单帧多模态数据上。这就导致其他有意义的数据并未被充分利用,例如语义、空间和场景上下文信息。一些工作尝试使用语义分割结果辅助任务,而其他模型则有可能利用CNN主干的中间层特征。在自动驾驶场景中,许多具有显式语义信息的下游任务可能会极大的提高目标检测性能,例如车道线、交通灯和交通标志的检测。未来的研究可以结合下游任务,共同构建一个完整的城市场景的语义理解框架,来提升感知性能。此外,[63]结合了帧间信息提升性能。时间序列信息包含序列化的监控信号,与单帧方法相比,它可以提供更稳定的结果。因此,未来的工作可以考虑更深入地利用时间、上下文和空间信息来实现性能突破。
  2. 自监督表征学习:互相监督的信号自然存在于从同一个真实世界场景但不同角度采样的跨模态数据中。然而,由于缺乏对数据的深入理解,目前的方法还无法挖掘各个模态间的相互关系。未来的研究可以集中在如何利用多模态数据进行自监督学习,包括预训练、微调或者对比学习。通过这些最先进的机制,融合算法将加深模型对数据更深层次的理解,同时取得更好的性能。

传感器固有问题

域偏差和分辨率与现实世界的场景和传感器高度相关。这些缺陷阻碍了自动驾驶深度学习模型的大规模训练和实时。

  1. 域偏差:在自动驾驶感知场景中,不同传感器提取的原始数据伴随着严重的领域相关特征。不同的摄像头有不同的光学特性,而LiDAR可能会从机械结构到固态结构而有所不同。更重要的是,数据本身会存在域偏差,例如天气、季节或地理位置,即使它是由相同的传感器捕获的。这就导致检测模型的泛化性受到影响,无法有效适应新场景。这类缺陷阻碍了大规模数据集的收集和原始训练数据的复用性。因此,未来可以聚焦于寻找一种消除域偏差并自适应集成不同数据源的方法。
  2. 分辨率冲突:不同的传感器通常有不同的分辨率。例如,LiDAR的空间密度明显低于图像的空间密度。无论采用哪种投影方式,都会因为找不到对应关系而导致信息损失。这可能会导致模型被一种特定模态的数据所主导,无论是特征向量的分辨率不同还是原始信息的不平衡。因此,未来的工作可以探索一种与不同空间分辨率传感器兼容的新数据表示系统。








#世界模型及与自动驾驶结合

什么是world models, 可以参考Yann LeCun的PPT解释

w~自动驾驶合集14_自动驾驶_71

即输入历史1到t时刻的状态信息, 结合当前的动作, 能够预测接下来的状态。

通俗地理解, 笔者认为可以把world model理解为世界动态的演化.

world models的研究工作介绍

World models

论文链接: https://arxiv.org/abs/1803.10122

这个paper 和 Recurrent World Models Facilitate Policy Evolution 是同一个工作.

这个工作非常重要, 是后面很多工作的思想源泉。

本文构建了一个生成式的world model,它可以用无监督的方式学习周围时空的表示, 并可以基于这个时空表示, 用一个简单的Policy模块来解决具体的任务.

人类是根据有限的感官来感受并理解这个世界, 我们所做的决策和行为其实都是基于我们自已内部的模型。
为了处理日常生活中大量的信息,我们的大脑会学习这些时空信息。我们能够观察一个场景并且记住其中的一些抽象信息。也有证据表明, 我们在任何特定时刻的感知都受到我们的大脑基于内部模型对未来的预测的控制.
比如下面这个图, 看的时候会发现它们好像在动. 但是其实都是静止的.

w~自动驾驶合集14_自动驾驶_72

方法

通过上面简单的例子会发现大脑其实预测了未来的感官数据, 即想象了未来可能发生的场景.  基于这个启示, 作者设计了一套框架, 框架图如下

w~自动驾驶合集14_自动驾驶_73

该框架图有三个主要的模块组成, 即 Vision Model(V), Memory RNN(M)和 Controller(C).

首先是Vision Model(V), 这个模块的主要作用是学习观测的表示,这里用的方法是VAE, 即变分自编码器.它的主要作用是将输入的观测, 比如图片,转成feature.

VAE的网络结构图如下

w~自动驾驶合集14_自动驾驶_74

简单的解释就是, 输入观测图片, 先经过encoder提特征, 然后再经过decoder恢复图像, 整个过程不需要标注, 是自监督的。用VAE的原因个人理解是因为整个设计是生成式的。

其次是Memory RNN(M) 它的网络结构如下

w~自动驾驶合集14_自动驾驶_75

这个模块的主要作用是学习状态的演化,可以认为这部分就是world models.

最后是 Controller (C) , 很显然,这部分的作用就是预测接下来的action,这里设计的非常简单, 目的就是为了把重心移到前面的模块中, 前面的模块可以基于数据来学习.公式如下,

w~自动驾驶合集14_自动驾驶_76

整个推理流程如下

w~自动驾驶合集14_自动驾驶_77

w~自动驾驶合集14_自动驾驶_78

PlaNet: Learning Latent Dynamics for Planning from Pixels

论文连接:  https://arxiv.org/abs/1811.04551

Blog: https://planetrl.github.io/

工作导读

本文提出了深度规划网络(PlaNet),这是一个基于模型的agent,它从图像pixels中学习环境的动态变化,之后在紧凑的潜在空间中做规划并预测动作。为了学习环境的动态变化,提出了一个具有随机和确定性组件的转换模型。此外,能做到多步预测。

笔者认为这个工作的最大贡献是提出了RSSM(Recurrent state space model), 所以接下来主要介绍RSSM.

RSSM

w~自动驾驶合集14_自动驾驶_79

这个图是本文提出的RSSM与另外两种方法的比较,

w~自动驾驶合集14_自动驾驶_80

三种方式的优缺点对比如下

a. 确定式能够防止模型随便预测多种未来, 可以想象, 如果模型不够准确, 预测的未来就不准, 这对于后面的规划来说容易出现错误的结果.

b. 随机式的问题是, 随机的累积多步之后,可能和最初的输入没有关系了, 即很难记住信息.

c. 确定式和随机式相结合, 既有确定部分防止模型随意发挥, 又有随机部分提升容错性.

Dreamer-V1: Dream to Control : Learning behaviors by latent imagination

论文连接: https://arxiv.org/abs/1912.01603

导读

从题目中可以看出来, Dreamer-V1是基于latent imagination 来学习behaviors, 即dream to control. 有点像周星弛的电影武状元苏乞儿里的睡梦罗汉拳. 方法上是基于想象的图片进行学习.

方法

下图为DreamerV1的三个组成部分

w~自动驾驶合集14_自动驾驶_81

a. 根据历史的观测和动作学习环境的dynamics, 主要是学习将观测和动作提取到compact latent states space中.

b. 通过反向传播, DreamerV1可以在想象中进行训练.

c. 基于历史的状态和当前的观测来预测接下来的状态及动作

接下来主要介绍如何通过latent 想象学习behaviors.

Learning behaviors by latent imagination

算法流程如下

w~自动驾驶合集14_自动驾驶_82

w~自动驾驶合集14_自动驾驶_83

得到 value function的估计.

DreamerV2: Mastering Atari with Discrete World Models

论文链接:  https://arxiv.org/abs/2010.02193

导读

DreamerV1强调的是在latent imagination中学习,  DreamerV2强调的是在预测中进行学习;笔者认为二者在学习方式上并无区别. 区别的是 DreamerV2相比DreamerV1用了前面提到的RSSM. 论文题目中提到的 Atari是一个游戏的名字, 而解决这个游戏的方法是离散的世界模型. 这里的离散是因为观测的输入刚好可以以离散的形式来表达. DreamerV2是第一个基于模型的方法在Atari这个游戏上超过非模型的方法.

w~自动驾驶合集14_自动驾驶_84

方法

网络结构如下

w~自动驾驶合集14_自动驾驶_85

在 Transition 模型这里与DreamerV1也不同, 在V1里面是这样

w~自动驾驶合集14_自动驾驶_86

这个过程非常清晰, 即在没有后续观测的时候, 直接从先验的里面进行采样, 所以在训练的时候,先验要逼近后验.

SEM2:Enhance Sample Efficiency and Robustness of End-to-end Urban Autonomous Driving via Semantic Masked World Model

paper链接: https://arxiv.org/abs/2210.04017

导读

从题目中可以看出来, 主要是通过 Semantic Masked World model来提升端自端自动驾驶的采样效率和鲁棒性. 这里Semantic mask指的是接了一个语义分割的head输出semantic mask, 另外在输入端也多了lidar。

出发点

作者认为之前的工作中提出的世界模型嵌入的潜在状态包含大量与任务无关的信息, 导致采样效率低并且鲁棒性差. 并且之前的方法中,训练数据这块儿分布是不均衡的, 因此之前的方法学习到的驾驶policy很难应对corner case.

方法概述

针对上面提出的信息冗余, 这里提出了Semantic masked世界模型, 即SEM2. 也就是在decoder部分加入了语义mask 的预测, 让模型学习到更加紧凑,与驾驶任务更相关的feature; 网络结构如下

 

w~自动驾驶合集14_自动驾驶_87

结构上大体与DreamerV2很相似, 输入端多了lidar, decoder部分多了一支 Filter用来预测bev的Semantic Mask. 右下角是Semantic Mask的内容信息, 主要包括, 地图map信息, Routing信息, 障碍物信息和自车的信息.

Multi-Source Sampler

上面作者有提到之前训练集里面数据不均衡, 比如大直路太多. 这里就用了一种sample的方式, 简单地说就是在训练的每个batch中, 均衡的加入各种场景的样本, 这样就可以达到训练样本平均衡分布的效果.

w~自动驾驶合集14_自动驾驶_88

如上图所示, 正常的数据, 冲出道路的数据,及碰撞的数据在每个batch中混在一起训练. 这样模型就能见到各种case的数据, 这有利于泛化解决corner case.

Wayve-MILE: Model-Based Imitation Learning for Urban Driving

代码:  https://github.com/wayveai/mile.

论文: https://arxiv.org/abs/2210.07729

博客: https://wayve.ai/thinking/learning-a-world-model-and-a-driving-policy/

导读

MILE是Wayve这家公司的研究工作, 有代码,有详细的blog解释, 可谓是好的研究工作。

SEM2的网络结构中还需要预测reward, 在MILE中就没有预测reward了, 题目中说是模仿学习, 是因为这里在相同的环境下, 有教练的action作为target, 模型直接学习教练的action,所以叫模仿学习. MILE这个工作很有启发性, 其中先验分布, 后验分布以及采样的思想, 虽然在前面的几个工作中也有用到, 但是感觉这些概念在MILE框架下,得到了更好的解释. 

网络结构

w~自动驾驶合集14_自动驾驶_89

w~自动驾驶合集14_自动驾驶_90

world models的将来发展

笔者认为上面介绍的一些world model的相关工作, 和强化学习、模仿学习等有很大关系,  可以看到世界模型是预测未来的基础, 笔者认为关于世界模型有几大思考的方向:

  1. world model的架构设计, 上面的方法基本上基于RNN, RSSM的框架, 但这种设计是不是最好, 是否有利于训练,推理,都有待进一步的探索
  2. world model到底该学习什么, 或者对于具体的任务, 比如自动驾驶中world model应该学习到什么? 2d信息, 3d信息,  轨迹信息,地图信息,占据信息 。。。。。。, 针对这些信息如何设计方案?
  3. world model如何与LLM结合, 或者如何利用现有LLM的一些方法、结构和能力。
  4. 如何做到自监督, 上面的方法中, 比如MILE和SEM2需要semantic mask的标注信息. 但标注数据总是有限且昂贵.








#低速自动驾驶的近距离感知

搬来了一个啊 好好学学 公司也是做这个的 只是我接触不到 这边就是雷视和车型 结果我还是poc项目的命~~~ 

Camera是自动驾驶系统中的主要传感器,它们提供高信息密度,最适合检测为人类视觉而设置的道路基础设施。全景相机系统通常包括四个鱼眼摄像头,190°+视野覆盖车辆周围的整个360°,聚焦于近场感知。它们是低速、高精度和近距离传感应用的主要传感器,如自动泊车、交通堵塞辅助和低速紧急制动。在这项工作中,论文对此类视觉系统进行了详细的调查,并在可分解为四个模块组件(即识别、重建、重新定位和重组)的架构背景下进行了调查,共同称之为4R架构。论文讨论了每个组件如何完成一个特定方面,并提供了一个位置论证(即它们可以协同作用),形成一个完整的低速自动化感知系统。

全景/鱼眼相机低速自动驾驶的近距离感知 -识别+重建+定位+工程化

本文的工作部分受到了Malik等人在[5]中的工作的启发。这项工作的作者提出,计算机视觉的核心问题是重建、识别和重组,他们称之为计算机视觉的3R。在此,论文建议将计算机视觉的3R扩展并专门化为自动驾驶计算机视觉的4R:重建、识别、重组和重新定位。

重建意味着从视频序列推断场景几何体,包括车辆在场景中的位置。这一点的重要性应该是显而易见的,因为它对于场景绘制、障碍物避免、机动和车辆控制等问题至关重要。Malik等人将此扩展到几何推断之外,以包括反射和照明等特性。然而,这些附加属性(至少目前)在自动驾驶计算机视觉环境中并不重要,因此论文将重建定义为更传统意义上的三维几何恢复。

识别是一个术语,用于将语义标签附加到视频图像或场景的各个方面,识别中包括层次结构。例如,自行车手有一个空间层次结构,因为它可以分为自行车和骑手的子集,而车辆类别可以有汽车、卡车、自行车等分类子类别。只要对自动驾驶系统有用,这种情况就可以继续下去。灯可以按类型(车灯、路灯、刹车灯等)、颜色(红、黄、绿)以及它们对自动驾驶车辆的重要性(需要响应,可以忽略)进行分类,从而完成系统的高级推理。

重新定位是指车辆相对于其周围环境的位置识别和度量定位。可以针对宿主车辆中预先记录的轨迹进行,例如,经过训练的停车场,也可以针对从基础设施传输的地图进行,例如HD Maps。它与SLAM中的环路闭合高度相关,尽管不只是考虑环路闭合问题,而是考虑根据一个或多个预定义地图定位车辆的更广泛问题。

重组是将计算机视觉前三个组成部分的信息组合成统一表示的方法。在本文中,使用这个术语来等同于“后期融合”,这是自动驾驶的重要步骤,因为车辆控制需要传感器输出的统一表示,这也允许在后期融合多个摄像头的输出。

w~自动驾驶合集14_自动驾驶_91

近域感知系统介绍

自动停车系统

自动停车系统是短距离传感的主要用例之一,图4描述了一些典型的停车用例。早期商业半自动泊车系统采用超声波传感器或radar,然而,最近,全景摄像头正成为自动停车的主要传感器之一。超声波和毫米波雷达传感器用于自动停车的一个主要限制是,只能根据存在的其他障碍物来识别停车位(图5)。此外,环视相机系统允许在存在可视停车标记(如涂漆线标记)的情况下停车,同时也被视为实现代客泊车系统的关键技术。

 

w~自动驾驶合集14_自动驾驶_92

交通拥堵辅助系统

由于大部分事故都是低速追尾碰撞,交通拥堵情况被认为是短期内可以带来好处的驾驶领域之一,尽管目前的系统可能缺乏鲁棒性。在自动交通拥堵辅助系统中,车辆在交通拥堵情况下控制纵向和横向位置(图6)。此功能通常用于低速环境,最高速度为∼60kph,但建议更低的最高速度为40kph。虽然交通拥堵援助通常考虑高速公路场景,但已经对城市交通拥堵救援系统进行了调查。鉴于此应用的低速特性,全景摄像头是理想的传感器,尤其是在城市环境中,例如,行人可以尝试从传统前向摄像头或radar系统视野之外的区域穿过。图7显示了使用全景相机进行交通堵塞辅助的示例。除了检测其他道路使用者和标记外,深度估计和SLAM等特征对于推断到物体的距离和控制车辆位置也很重要。

w~自动驾驶合集14_自动驾驶_93

低速制动

一项研究表明,自动后向制动显著降低了碰撞索赔率,配备后摄像头、驻车辅助和自动制动的车辆报告碰撞减少了78%。全景相机系统对于低速制动非常有用,因为深度估计和目标检测的组合是实现此功能的基础。

鱼眼相机

鱼眼相机为自动驾驶应用提供了明显的优势,由于视野极广,可以用最少的传感器观察车辆的整个周围。通常,360°范围只需要四个摄像头覆盖。然而,考虑到更为复杂的投影几何体,这一优势带来了成本。过去的几篇论文综述了如何建模鱼眼几何形状,例如[34]。论文不打算在此重复这一点,而是关注鱼眼相机技术的使用给自动驾驶视觉带来的问题。

在标准视场相机中,直线投影和透视的原理非常接近,具有常见的透视特性,即现实世界中的直线在图像平面上投影为直线。平行的直线组被投影为一组直线,这些直线在图像平面上的一个消失点上会聚。通过光学畸变的偏离很容易纠正。许多汽车数据集提供的图像数据消除了光学畸变,具有简单的校正方法,或几乎不可察觉的光学畸变。因此,大多数汽车视觉研究都隐含了直线投影的假设,鱼眼透视图与直线透视图有很大不同。相机场景中的一条直线被投影为鱼眼图像平面上的一条曲线,平行线集被投影为一组在两个消失点处会聚的曲线[38]。然而,失真并不是唯一的影响,图8显示了环视系统中安装在镜子上的典型摄像头的图像。在鱼眼相机中,物体图像中的方向取决于它们在图像中的位置。在本例中,左侧的车辆旋转了近90◦ 与右侧车辆相比,这对目标检测卷积方法中假定的平移不变性有影响。在标准相机中,平移不变性是可以接受的假设。然而,如图8所示,鱼眼图像并非如此,在任何计算机视觉算法设计中,必须仔细考虑如何处理这一点。

 

w~自动驾驶合集14_自动驾驶_94

解决这些问题的自然方法是以某种方式纠正图像。可以立即放弃对单个平面图像的校正,因为首先,过多的视野必然会丢失,从而抵消鱼眼图像的优势,其次,插值和透视伪影将很快占据校正输出的主导地位。一种常见的方法是使用多平面校正,即鱼眼图像的不同部分被扭曲成不同的平面图像。例如可以定义一个立方体,并将图像扭曲到立方体的曲面上。图9显示了两个此类表面上的翘曲。即使在这里,插值和透视效果也是可见的,必须处理曲面过渡的复杂性。

 

w~自动驾驶合集14_自动驾驶_95

另一种校正方法是考虑圆柱表面的warping ,如图10所示,在这种warping 中,圆柱轴线的配置使其垂直于地面。观察结果表明,汽车场景中的大多数感兴趣对象都位于近似水平的平面上,即路面上。因此希望保留水平视野,同时允许牺牲一些垂直视野,这带来了有趣的几何组合。

w~自动驾驶合集14_自动驾驶_96

 

垂直是通过线性透视投影,因此场景中的垂直线在图像中投影为垂直线。图像中较远或较小的对象在视觉上类似于透视相机,甚至有人建议,通过这种变形,可以使用标准透视相机训练网络,并在鱼眼图像上直接使用它们,而无需训练[39]。然而,在水平方向上,新图像中存在失真,大型近景物体表现出强烈的失真,有时甚至比原始鱼眼图像中的失真还要大。

如图11所示,当我们处理透视相机时,当物体与相机以恒定的Z距离移动时,就会产生平移,也就是说,在与图像平面平行的平面上。然而,在圆柱形图像中,水平面上的距离必须保持不变,才能进行图像平移(对象必须绕圆柱体轴旋转)。相比之下,在原始鱼眼图像中,不清楚什么对象运动会导致图像平移。

w~自动驾驶合集14_自动驾驶_97

WoodScape dataset

WoodScape全景数据集在两个不同的地理位置采集的:美国和欧洲。虽然大多数数据是从轿车中获得的,但运动型多用途车中有很大一部分数据可确保传感器机械配置的强大组合,驾驶场景分为高速公路、城市驾驶和停车用例。数据集中为所有传感器以及时间戳文件提供内部和外部校准,以实现数据同步,包括相关车辆的机械数据(例如,车轮周长、轴距)。为该数据集记录的传感器如下所示:

1)4x 1MPx RGB鱼眼摄像头(190◦ 水平视野)

2)1x激光雷达,20Hz旋转(Velodyne HDL-64E)

3)1x全球导航卫星系统/惯性测量装置(NovAtel Propak6和SPAN-IGM-A1)

4)1x带SPS的GNSS定位(Garmin 18x)

5)来自车辆总线的里程表信号

 

w~自动驾驶合集14_自动驾驶_98

系统架构注意事项 

在自动驾驶计算机视觉设计中,尤其是pipelines设计中,一个重要的考虑因素是嵌入式系统的约束,其中多个摄像头和多个计算机视觉算法必须并行运行。由于计算机视觉算法是计算密集型的,汽车SoC有许多专用硬件加速器用于图像信号处理、镜头畸变校正、密集光流、立体视差等。在计算机视觉中,深度学习在各种识别任务中发挥着主导作用,并逐渐用于几何任务,如深度和运动估计。

 

w~自动驾驶合集14_自动驾驶_99

为了最大限度地提高处理硬件的性能,最好从处理阶段的角度考虑嵌入式视觉,并在每个处理阶段考虑共享处理,pipelines如图12所示。

1) 预处理:pipelines的预处理阶段可以看作是为计算机视觉准备数据的处理。这包括图像信号处理(ISP)步骤,如白平衡、去噪、颜色校正和颜色空间转换。关于ISP和ISP在汽车环境中用于计算机视觉任务的调整的详细讨论,请参考[52]。ISP通常由硬件引擎完成,例如作为主要SoC的一部分。很少在软件中完成,因为需要完成大量像素级处理。正在提出一些方法来自动将ISP管道的超参数调整为优化计算机视觉算法的性能[52]、[53]。值得注意的是,目前正在提出简化ISP视觉感知pipelines的方法,可以参考[54]。

2) 像素处理阶段:像素处理可以被视为计算机视觉体系结构中直接接触图像的部分。在经典的计算机视觉中,这些算法包括边缘检测、特征检测、描述符、形态运算、图像配准、立体视差等。在神经网络中,这等同于CNN编码器的早期层。这一阶段的处理主要由相对简单的算法控制,这些算法必须每秒多次在数百万像素上运行。也就是说,计算成本与这些算法每秒可能运行数百万次的事实有关,而不是与算法本身的复杂性有关。这一阶段的处理硬件通常由硬件加速器和GPU主导,尽管有些元素可能适合DSP。

3) 中间处理阶段:顾名思义,中间处理阶段是从像素到对象检测阶段之间的桥梁。在这里,要处理的数据量仍然很高,但大大低于像素处理阶段。这可能包括通过视觉里程表估计车辆运动、视差图的立体三角测量和场景的一般特征重建等步骤,在pipelines的这个阶段包括CNN解码器。这个阶段的处理硬件通常是数字信号处理器。

4) 目标处理阶段:对象处理阶段是整合更高层次推理的阶段,在这里可以聚类点云来创建目标,对对象进行分类,并且通过上述推理,可以应用算法来抑制移动目标的重缩放。此阶段的处理主要由更复杂的算法控制,但操作的数据点较少。就硬件而言,通常适合在ARM等通用处理单元上运行这些处理器,尽管通常也会使用数字信号处理器。

5) 后处理:最后后处理阶段,也可以称为全局处理阶段。在时间和空间上持久化数据。由于可以拥有长时间持久性和大空间地图,因此前几个阶段的总体目标是最小化到达此阶段的数据量,同时维护最终用于车辆控制的所有相关信息。在此阶段,将包括 bundle adjustment、地图构建、高级目标跟踪和预测以及各种计算机视觉输入的融合等步骤。由于处理的是系统中最高级别的推理,并且理想情况下处理的是最少的数据点,因此这里通常需要通用处理单元。

4R部件介绍识别

识别任务通过模式识别识别场景的语义。在汽车领域,第一个成功的应用是行人检测,它结合了手工设计的特征,如定向梯度直方图和机器学习分类器,如支持向量机。最近CNN在目标识别应用程序中的各种计算机视觉任务中表现出显著的性能飞跃,然而,这是有代价的。首先,汽车场景非常多样化,预计该系统将在不同国家以及不同的天气和照明条件下工作,因此,主要挑战之一是建立一个涵盖不同方面的有效数据集。其次,CNN是计算密集型的,通常需要专用硬件加速器或GPU(与在通用计算核心上可行的经典机器学习方法相比)。因此,有效的设计技术对于任何设计都至关重要,最后,虽然对正常图像的CNN进行了很好的研究,但如前所述,鱼眼图像的平移不变性假设被打破,这带来了额外的挑战。

本文的识别pipelines中,提出了一种基于外观模式识别对象的多任务深度学习网络。它包括三个任务,即目标检测(行人、车辆和骑车人)、语义分割(道路、路缘和道路标记)和透镜污染检测(不透明、半透明、透明、透明)。目标检测和语义分割是标准任务,有关更多实现细节,请参阅FisheyeMultiNet论文。其中一个挑战是在训练阶段平衡三个任务的权重,因为一个任务可能比其他任务收敛得更快。

鱼眼摄像头安装在车辆上相对较低的位置(∼地面以上0.5至1.2米),容易因其它车辆的道路喷雾或道路水而导致透镜脏污。因此,检测摄像头上的污物至关重要 镜头提醒驾驶员清洁摄像头或触发清洁系统。SoilingNet中详细讨论了污垢检测任务及其在清洁和算法降级中的使用,与此密切相关的一项任务是通过修补修复受污染区域的去污,但这些去污技术目前仍属于可视化改进领域,而不是用于感知。这是一个定义不清的问题,因为不可能预测遮挡的背后(尽管这可以通过利用时间信息来改善)。由于低功耗汽车ECU的CNN处理能力有限,本文使用多任务架构,其中大部分计算在编码器中共享,如图13所示。                        

w~自动驾驶合集14_自动驾驶_100

重建

如前所述,重建意味着从视频序列推断场景几何体。例如,这通常意味着估算场景的点云或体素化表示。静态对象的重建,传统上是使用诸如运动立体[56]或多视图几何中的三角剖分[73]等方法来完成的。在设计深度估计算法的背景下,[74]中简要概述了人类如何推断深度,并提供了有用的进一步参考。推断深度有四种基本方法:单目视觉线索、运动视差、立体视觉和focus深度。每种方法在计算机视觉方面都有其等效性,根据Marr&Poggio早期的理论工作[75],Grimson在20世纪80年代早期提供了立体视觉的计算实现[76],自那时以来立体视觉方面的工作一直在继续。然而,立体视觉系统并没有普遍在车辆上实现部署,因此,单目运动视差方法在汽车研究中仍然很流行。从计算上看,运动视差的深度传统上是通过特征三角剖分完成的[78],但运动立体也被证明很流行[79]。

考虑鱼眼图像会增加重建任务的复杂性,多视图几何、立体视觉和深度估计中的大多数工作通常假设场景的平面透视图像。传统的立体方法进一步限制了图像中的极线必须是水平的,然而,真实相机很少出现这种情况,因为存在镜头畸变,从而破坏了平面投影模型。它通常通过图像的校准和校正来解决。然而,对于镜头畸变非常严重的鱼眼图像,在校正过程中保持宽视场是不可行的。领域已经提出了几种鱼眼立体深度估计方法,常见的方法是多平面校正,其中鱼眼图像映射到多个透视平面[82]。然而,如前所述,任何平面校正(即使有多个平面)都会遭受严重的重采样失真。要最小化此重采样提出了对非平面图像进行畸变、校正的方法,有些方法会扭曲不同的图像几何形状,以保持极线笔直和水平的立体要求[83]。还有一些方法绕过了极线水平的要求,例如,最近将平面扫描法[84]、[85]应用于鱼眼[86]。鱼眼图像重采样的一个相关问题是,噪声函数被重采样过程扭曲,这对于任何试图最小化重投影误差的方法来说都是一个问题。Kukelova等人[73]使用标准视场相机的迭代技术解决了这一问题,该技术在避免失真的同时最小化了重投影误差。然而,这种方法取决于特定的相机型号,因此不直接适用于鱼眼相机。

重建的第二个方面是从视频序列中提取运动对象(运动分割)。由于三角剖分假设被打破,动态对象的三维重建会导致全局意义上的位置不精确。重建运动物体几何结构的典型尝试需要图像运动分割、相对基本矩阵估计和重建(具有比例/投影模糊性)。例如,使用Multi-X[88],前两步基本上可以结合起来,因为分割可以基于基本矩阵估计进行。然而,对于嵌入式自动驾驶应用来说,这种方法要么计算成本太高,要么不够健壮。此外,这种重建必须解决比例问题,可变形物体(如行人)可以针对身体的不同部位使用不同的基本矩阵。因此,动态目标检测的任务通常只是简单的运动分割。

Klappstein等人[89]描述了汽车背景下运动分割的几何方法,Mariotti和Hughes[90]将这项工作扩展到了环视摄像头外壳。然而,在这两种情况下,几何图形都无法完全区分所有类型的移动特征。也就是说,有一类对象运动使关联特征与静态特征无法区分,因此,必须采取全局或半全局办法。在传统方法中,这是通过将具有与被归类为运动中的光流矢量相似特性的光流向量分组来实现的。

通常,运动分割的关键输入是摄像机运动的知识。也就是说,必须知道相机的基本矩阵(或未校准情况下的基本矩阵)。[89]和[90]中假设了这一点,可以通过两种方式实现。首先,可以直接使用车辆网络上的信号,例如转向角和车轮速度,来估计车辆的运动,从而估计摄像机的运动。或者,可以使用视觉方法直接从图像序列估计运动。除了明确估计相机的运动外,另一种方法是在图像中建模背景运动。有人建议使用背景运动的仿射模型,然而,这假设背景是遥远或近似的平面,径向变形不存在或可忽略不计。图14显示了不同重建阶段的示例,包括密集运动立体、3D点云和静态障碍物集群,以及基于密集光流的运动分割。虽然鱼眼图像的使用肯定会影响设计决策,从理论角度来看,这是一个尚未完全解决的问题。

 

w~自动驾驶合集14_自动驾驶_101

重定位

视觉同步定位与映射(VSLAM)是机器人技术和自动驾驶领域的一个研究热点。主要有三种方法,即(1)基于特征的方法,(2)直接SLAM方法和(3)CNN方法。基于特征的方法利用描述性图像特征进行跟踪和深度估计,从而生成稀疏的地图。MonoSLAM、Parallel Tracking and Mapping(PTAM)和ORBSLAM是这类算法中的开创性算法。直接SLAM方法适用于整个图像,而不是稀疏特征,以帮助构建密集的地图。密集跟踪和映射(DTAM)和大规模半密集SLAM(LSD-SLAM)是基于光度误差最小化的常用直接方法。对于Visual SLAM问题,基于CNN的方法相对不太成熟,在[101]中对此进行了详细讨论。

mapping是自动驾驶的关键支柱之一,许多首次成功的自动驾驶演示(如谷歌)主要依赖于对预先绘制区域的定位。TomTom RoadDNA等高清地图为大多数欧洲城市提供了高度密集的语义3D点云地图和定位服务,典型的定位精度为10 cm。当有准确的定位时,高清地图可以被视为主要线索,因为已经有了强大的先验语义分割,并且可以通过在线分割算法进行细化。然而,这项服务很昂贵,因为它需要世界各地的定期维护和升级。

在自动驾驶视觉环境中,视觉SLAM(VSLAM)包括绘制车辆周围环境的地图,同时在地图中估计车辆的当前姿态。VSLAM的关键任务之一是根据之前记录的车辆定位轨迹。图15显示了一个经典的基于特征的重定位pipelines。在基于特征的SLAM中,第一步是提取显著特征。图像中的一个显著特征可能是像素区域,其中强度以特定方式变化,例如边缘、角落或斑点。要估计世界上的地标,需要执行跟踪,其中可以匹配相同特征的两个或多个视图。一旦车辆移动足够远,VSLAM会拍摄另一张图像并提取特征。重建相应的特征,以获得它们在真实世界中的坐标和姿态。然后,这些检测到的、描述的和定位的地标被存储在永久存储器中,以描述车辆轨迹的相对位置。如果车辆返回相同的一般位置,实时特征检测将与存储的地标匹配,以恢复车辆相对于存储轨迹的姿态。

w~自动驾驶合集14_自动驾驶_102

 

重组

重组执行三个功能:1)融合识别和重建,2)通过相机在世界坐标系统中绘制目标地图,3)时空物体跟踪。虽然识别和重组模块可以直接输入到环境图中,但我们认为在视觉层实现某些融合有明显的优势。先用一个例子来考虑这一点,如图16所示,假设有一个具有单目深度估计、运动分割和车辆检测的系统。融合这些信息的经典方法是将所有数据转换为世界坐标系,然后关联和融合数据,这种方法具有优势。一些汽车传感器,如激光雷达,提供本地欧几里德数据,基于这种欧几里得地图的融合系统使得包含这些附加传感器变得容易。然而,在转换为欧氏图时,基于相机的检测精度将始终受到影响。众所周知,从图像域到世界域的投影容易出错,因为它们会受到校准不良、平地假设、检测变化、像素密度和不完美相机模型的影响。如果目标在感兴趣的点上没有实际接触地面,那么对于投影到世界坐标系的平地假设将存在重大错误。

w~自动驾驶合集14_自动驾驶_103

然而,在向世界投影之前,图像域中的检测不受此类错误的影响,因此,图像域不同视觉算法的检测关联更为稳健,事实上,简单的检测重叠措施通常证明是稳健的。图18显示了基于CNN的车辆检测和基于光流的运动分割的基于图像的融合的实现,尽管运动分割存在显著误差,但融合成功地将检测到的目标分为车辆和动态两类。除此之外,还必须考虑失真校正如何影响测量噪声,许多常用的融合和跟踪算法,如卡尔曼滤波或粒子滤波,都是从平均零假设开始的(高斯噪声)。对于计算机视觉中的感兴趣点测量(例如,图像特征或边界框足迹估计),通常认为这是一个有效的假设。然而,鱼眼畸变和地平面投影过程扭曲了该噪声模型(图19)。此外,由于测量噪声的失真取决于图像中感兴趣点的位置以及相机相对于路面的位置,因此解决这一问题变得更加复杂。

w~自动驾驶合集14_自动驾驶_104

 

系统同步协同

本节将讨论系统协同效应,主要研究重定位、重建和识别任务如何相互支持,并描述双检测源在安全关键应用中提供冗余的重要性。

识别和重建

如前所述,深度估计在几何感知应用中非常重要。除了前面已经讨论过的内容外,目前最先进的是基于神经网络的方法[115]、[116],可以通过重投影损失以自我监督的方式学习[117]。研究表明,单目深度估计的最新单帧尝试通常会引发识别任务,然后使用图像中的垂直位置等线索推断深度,运动目标检测似乎也严重依赖于识别。事实证明,[48]和[58]都对通常移动的静态物体(例如行人,见图20)显示出误报,但这并没有降低这种尝试的重要性。相反,它指出了识别和重建之间的一种非常深刻的联系,从一种联系中,可以推断出另一种。

w~自动驾驶合集14_自动驾驶_105

 

当行人检测处于最先进水平时,在语义和实例分割之前,大多数汽车行人检测研究人员都会考虑根据边界框的高度或行人在图像中的垂直位置编码深度。[81]对此进行了详细讨论。然而,基于深度神经网络的识别可以产生物体深度,这是有点直观的,特别是当神经网络的精度提高时。最近的工作证明了联合学习语义标签和深度的有效性[119]。例如,在[120]中显示,对于单目深度估计,在每个距离解码器层中添加语义指导(如图21所示)可以提高对象边缘的性能,甚至可以为动态目标返回合理的距离估计。

w~自动驾驶合集14_自动驾驶_106

 

重定位和识别

重定位是车辆识别先前学习的位置或路径的过程,如前所述。然而,在现实的自动驾驶视觉中,很多事情都会干扰这一点。例如,场景可能会因可移动对象而改变,例如,停放的车辆可能会在场景学习时间和请求重定位时间之间移动。在这种情况下,语义分割方法可用于识别可能移动的对象(车辆、自行车、行人),并删除与此类对象相关的映射特征。如[101]中详细描述的,利用深度学习技术支持传统的Visual SLAM pipelines还有更多的机会(图22)。

w~自动驾驶合集14_自动驾驶_107

 

Visual SLAM中的地点识别有几个应用程序。首先,它允许循环闭合以纠正累积漂移,其次,它允许从同一场景的多个过程中创建和维护地图。使用单词袋的经典方法(如[128])被证明是相当成功的,尽管可能缺乏稳健性。基于CNN的方法被证明更为稳健,外观不变的方法显示出有希望的初步结果[129]。当重要的时间过去时,对地点的识别是一个重要的话题。表III显示了Visual SLAM pipelines的一小组结果,并表明随着训练和重定位之间的六个月时间差的增加,错误显著增加。最后,可以考虑视图不变的定位。当重定位的camera视点与训练时的camera视角显著不同时,这一点很重要,例如,由于以大角度接近训练轨迹而导致车辆旋转,基于特征描述符的传统Visual SLAM方法失败了。研究表明,将语义标签附加到场景地标(通过bounding box分类)可以显著提高视点不变性的性能。

w~自动驾驶合集14_自动驾驶_108

 

重定位和重建

重定位和视觉SLAM通常可以被视为场景重建(即构建地图)的存储,以及通过bundle adjustment调整对所述地图的迭代细化(见图15)。这样,重建和视觉里程表就成为传统Visual SLAM方法的种子。有一些直接的方法可以绕过这种seed方法,例如LSD-SLAM(及其全向相机扩展[100]),其中光度误差相对于重投影误差被最小化。然而,如果考虑bundle adjustment调整地图的时间切片,也可以看出,Visual SLAM可用于优化重建(场景结构和视觉里程计)。此外,移动目标会导致任何Visual SLAM管道的性能显著下降。因此,动态对象检测(例如[90]、[48]、[58])可以用作Visual SLAM pipelines的输入,以抑制所述移动目标引起的异常值。

讨论下冗余

还有另一个首要的协同考虑:冗余。在自动化车辆中,冗余对应用程序的安全性起着重要作用。当系统部件发生故障时,必须提供另一个部件,以确保车辆保持安全状态。例如,FuseModNet展示了提供密集信息的相机与在弱光下表现良好的激光雷达的协同融合。在传感方面,这通常是通过使用多种传感器类型来实现的,例如计算机视觉系统、radar和激光雷达。对于近场传感,超声波传感器阵列是一种成熟的低成本传感器,可在车辆周围提供强大的安全性。

w~自动驾驶合集14_自动驾驶_109

论文认为,通过并行使用不同的计算机视觉算法类型,可以实现更高的安全性。也就是说,可以配置计算机视觉系统架构以最大限度地提高冗余度。这一点尤其正确,因为数据源是完全不同的处理类型。例如,识别pipelines的统计处理和重建管道的几何pipelines。此外,这种处理通常会在SoC内的不同硅组件上运行。然而,必须意识到,如果你最大限度地发挥其他协同作用,冗余的可能性就会降低。例如,如果使用基于CNN的深度作为Visual SLAM算法的种子,则不能将CNN声明为Visual SLAM的冗余,因为Visual SLAM现在依赖于CNN处理。还必须注意,这两个处理元件可能使用相同的视频馈送,因此相机本身和相关硬件/软件的安全性也可能是一个限制因素。

长篇大论可算完了... 

 







#自动驾驶~相机相对地面の在线标定

这一是一个大佬的啊 为了自学 没别的意思~~ 感谢大佬~~

文章:Online Camera-to-ground Calibration for Autonomous Driving

作者:Binbin Li, Xinyu Du, Yao Hu, Hao Yu, and Wende Zhang

摘要

相机与地面的在线标定是一般指实时生成相机与道路平面之间的非刚体变换,现有的解决方案常常利用静态标定,在面对轮胎气压变化、车辆载重体积变化和道路表面多样性等环境变化时存在问题。其他在线解决方案利用道路元素或图像中重叠视图之间的光度一致性,这需要在道路上连续检测特定目标或借助多个摄像头来进行标定。在这项工作中提出了一种在线的单目相机与地面标定解决方案,不需要在行驶过程中使用任何特定目标。通过轮速里程计进行粗到精的地面特征提取,并通过基于滑动窗口的因子图优化来估计相机与地面的标定参数。考虑到驾驶过程中相机与地面之间的非刚性变换,我们提供了衡量标定性能的指标和停止标准,以发布我们满意的标定结果。使用真实的数据进行的广泛实验表明该算法有效,并且优于现有的技术。

介绍

现代车辆配备了各种摄像头,以获取与周围环境相关的丰富语义信息,并将特征统一在共享的鸟瞰图中,以支持可解释的运动规划任务。相机与地面的标定在确定相机坐标和地面坐标之间的特征位置的几何变换方面起着关键作用。它有助于消除相机的透视畸变,提供鸟瞰图表示空间,并且便于估算安装在车辆上的相机与地面上位置之间的距离,这在先进驾驶辅助系统(ADAS)和自动驾驶系统中被广泛应用。

在过去的几十年中,已经提出了许多相机与地面的标定方法。这些方法通常可以分为两类:

(1)静态标定;

(2)行驶过程中的在线标定。

第一类方法通常使用诸如棋盘格或手动标注的地面物体等各种模式,事先计算相机与地面之间的变换关系。然而,由于车辆在道路上行驶时,由于轮胎气压变化、车辆载荷变化、道路表面多样性和部件振动,此类变换是非刚性的。相机与地面的标定应在行驶过程中进行多次,以调整几何投影的变化。例如,由周围视图鱼眼相机捕获的图像在图1(a)中,静态标定在图1(b)中会导致BEV图像不准确。在线标定可以减小变换误差,确保适当地处理投影变化,并生成图1(c)中对齐良好的BEV图像。

w~自动驾驶合集14_自动驾驶_110

图1. 在给定的环视图鱼眼相机图像(a)中,静态标定包含了大量的相机到地面估计误差,导致BEV图像不匹配(b),但是我们的方法在(c)中生成了一个对齐良好的BEV图像。

第二类现有方法应用在线标定,这需要从道路上提取出特定的几何形状,例如单目相机的消失点和周围视图相机提取的车道标线,或者多个相机之间重叠区域的光度一致性,以辅助标定调整。然而,在各种行驶环境中很难保持这些要求。在这种情况下,需要在使用单个摄像头连续图像的情况下进行相机与地面的标定,而不依赖于任何特定的标定目标。

3主要内容

本文采用了一种从粗到精的方法,在车辆行驶在道路上时,通过因子图优化获取地面特征并优化相机到地面的标定参数,而无需使用任何特定的标定目标。利用图像中水平线分离地面和非地面区域,通过轮式测程法预测地面特征的位置,并使用基于几何的方法验证地面特征。对三角测量的地面特征进行平面拟合,以获取地面的法向量和相机到地面的高度,并通过因子图优化进一步改进这些参数,以确定相机到地面的变换关系。考虑到在驾驶过程中相机到地面的非刚性变换,还提出了度量标定性能的指标和停止准则,以确保标定质量。

图2展示了我们的系统框图。主要包含以下模块:首先利用运动学自车模型恢复图像关键帧之间的相对运动,以便进行相机姿态估计和地面点三角测量;其次从关键帧中提取粗糙的地面特征,通过车辆运动进行特征预测,并进一步进行优化地面特征验证过程;然后进行地面平面拟合,获取地面法向量和相机到地面的高度;然后通过因子图优化来细化相机姿态和相机到地面的变换参数,并提出了一个停止标定准则,确定何时发布相机到地面的标定结果。

w~自动驾驶合集14_自动驾驶_111

图2. 系统框架

A. 通过轮速里程计测量的相机运动

利用CAN总线系统提供的连续车轮里程读数估计车辆随时间的姿态变化,并确定相机关键帧之间的相对运动,以恢复单目相机系统的尺度因子。具体公式推导查看原文。

B. 连续关键帧的地面提取

地面特征(即车辆所行驶的道路表面上的特征)在相机与地面标定中起着重要作用。在城市/郊区环境中,大多数地面特征位于具有相似纹理的混凝土或沥青道路表面上,这些特征很难提取和匹配。提出了一种新颖的粗到细的地面特征提取架构,用于稳健的相机与地面标定,首先,我们引入地平线提取方法,通过车辆运动预测地面特征的位置,以便进行特征匹配。然后,我们利用几何方法来验证地面特征,并进行地面平面拟合,以获得地面法线向量和相机中心到地面的高度。在进行标定时,选择以稳定速度行驶时的关键帧,这样可以在不同的图像帧之间获得较小的相机姿态变化,有利于标定过程的稳定性,关键帧是指在时间序列中选择的一帧图像,通常表示为时间间隔的起点。从选择的关键帧开始,通过KLT稀疏光流算法提取图像中的角点特征,并进行跟踪。然后通过水平线分割图像,可以筛选位于水平线以下的特征点来选择地面特征,并利用车辆的运动信息进一步预测地面特征在下一个关键帧中的位置,这样,我们可以有效地提取和跟踪地面特征,为后续的相机到地面标定和场景理解提供重要的信息。

w~自动驾驶合集14_自动驾驶_112

图4. 粗糙的地面特征提取,对于每个特征,通过车辆运动预测其在下一个关键帧中的位置(a)。因此,与没有任何预测的KLT跟踪器中的特征相比,在(b)中我们有更多的、质量更高的匹配特征对。进一步在(d)中从(b)中均匀采样/选择特征以进行计算优化。这里,红色线段的端点表示关键帧Ik和Ik+1之间的匹

C. 跨关键帧地面优化

采用基于滑动窗口的因子图优化方法来优化相机姿态、地面法向量和相机中心到地面的高度。通过使用单应性变换矩阵,可以将当前关键帧的特征点投影到上一关键帧的图像中。然后,我们通过最小化重投影误差来优化相机姿态和地面参数,以确保在上一关键帧中的特征点与当前关键帧中的投影点之间的一致性。具体来说,我们首先计算从当前关键帧到上一关键帧的相机姿态变换。然后,根据相机姿态变换将当前关键帧的特征点投影到上一关键帧的图像平面上。接下来,我们计算投影点与上一关键帧中的特征点之间的重投影误差,并将其作为优化问题的目标函数。通过最小化这个目标函数,我们可以同时调整相机姿态、地面法向量和相机中心到地面的高度,从而得到更准确的地面参数。通过这种跨关键帧的地面优化方法,可以更好地优化相机姿态和地面参数,提高相机到地面的标定精度,并为后续的路径规划和场景感知任务提供更准确的地面信息。

4实验

在各种驾驶场景下使用乘用车实现了我们的算法并进行了大量实验,车辆安装了由四个向下朝向的鱼眼摄像机组成的全景摄像系统(参见图1(a)中的示例),这些摄像机与车轮编码器数据同步。摄像机的帧率为33 Hz,图像分辨率调整为812×540。我们收集了来自不同区域的长序列连续数据,以分析我们算法的效率和鲁棒性(参见表I)。这些数据涵盖了从平坦的铺装地面(FPG)到城市、郊区和农村等不同天气、光照和驾驶条件下的公共道路,FPG数据来自极其平坦的沥青路面,用于验证我们动态标定的基准性能。表I的最后一列表示车辆行驶而不是停车的时间百分比。

w~自动驾驶合集14_自动驾驶_113

图6 我们的方法在具有挑战性的驾驶场景中表现良好,图中的标签与表格I从上到下对应。

w~自动驾驶合集14_自动驾驶_114

将我们的方法与现有的最先进方法进行比较,从而定性地检验性能,包括Liu等人[23]、OECS[24]和ROECS[25]在我们的数据集上的性能。首先比较了在FPG数据上的标定性能,并在表II中总结了结果。与我们的对手一样,我们的方法在车辆行驶在FPG上时能够生成连续稳定的相机到地面的标定。因此,我们显示了与地面真实(GT)标定的欧拉角差的平均值,并评估绝对变化量δr、δp和δy。这里,δr、δp和δy分别表示滚转角、俯仰角和偏航角的变化量。表II中的δh列是相机中心到地面的高度位移。在表II中,即使在图像上没有可辨别纹理的混凝土路面上,我们的在线方法也取得了更好的性能。例如,我们的方法在俯仰角、偏航角和高度估计方面分别获得了显著的绝对增益,分别为44.4%、50.0%和71.2%。

w~自动驾驶合集14_自动驾驶_115

为了展示我们提出的方法的优越性,我们在图7中呈现了(11)和(12)的误差直方图。在图7中获得了不同区间的误差差异,作为我们相对于最先进工作的性能提升的总和。我们的方法在不同水平下具有相对较小的特征转移误差f,并且误差保持在0.83像素以内,这在不同数据序列中保持一致。我们的方法在郊区数据上获得了最低的性能增益44.2%,在城市数据上获得了最高的性能增益67.6%。在从城市到农村地区的公共道路驾驶数据中,与最先进方法相比,我们的方法在误差p方面表现更好。误差p在0.75像素以内变化,并且90.9%的误差在0.67像素以内。在考虑平坦道路条件的情况下,性能提高了12.7%,在郊区数据中获得了最高得分,而在FPG数据中获得了最低得分,为1.59%。

w~自动驾驶合集14_自动驾驶_116

图7. 表I中数据序列的性能直方图。水平轴的值对应于(11)和(12)中的误差,垂直轴是概率密度。请放大查看详细信息。

图8展示了在车辆以高速直行时不同方法生成的鸟瞰图像的视觉结果。我们的方法不依赖于不同摄像头之间的重叠区域或特定物体,获得了较小的特征残差误差,并生成了更好对齐的鸟瞰图像,原因如下:

(1)直行车道标线与车辆行驶方向平行,

(2)摄像头之间的车道标线互相重叠,

(3)道路上的混凝土裂缝在相邻摄像头鸟瞰图像的重叠区域上连接在一起。

w~自动驾驶合集14_自动驾驶_117

图8. 在行驶过程中城市I数据的示例结果。我们展示了(a)我们的结果,(b)ROECS [25],(c)OECS [24]和(d)Liu等人的结果。

5总结

我们提出了一种在线相机到地面无目标标定方法,用于在行驶过程中生成相机坐标与地面坐标之间的非刚体变换。采用了一种新颖的粗到精的架构来选择地面特征,并通过基于几何的方法进行验证。对三角化的地面特征进行平面拟合,以获得地面法向量和相机到地面的高度,然后通过滑动窗口的因子图优化对其进行优化。通过旋转平均确定相机到地面的变换,并提供停止标准来广播满足标定结果的情况。使用从不同天气和驾驶条件下收集的真实数据对我们的算法进行了广泛测试,结果显示我们的方法是有效的,并且优于最先进的技术。在未来,我们将减少因子图优化的运行时间复杂度,并进行可观测性分析,以识别帮助丢弃不需要用于标定计算的姿态和地面特征的退化场景。








#Lift-Attend-Splat

最新BEV LV融合方案

论文:Lift-Attend-Splat: Bird’s-eye-view camera-lidar fusion using transformers

链接:https://arxiv.org/pdf/2312.14919.pdf

结合互补的传感器模态对于为自动驾驶等安全关键应用提供强大的感知至关重要。最近最先进的自动驾驶相机-激光雷达融合方法依赖于单目深度估计,与直接使用激光雷达的深度信息相比,这是一项困难任务。在这里,我们发现这种方法并没有像预期的那样利用深度,并表明天真地改进深度估计并不能提高目标检测性能,而且令人惊讶的是,完全消除深度估计并不会降低目标检测性能。

这表明,在相机-激光雷达融合过程中,依赖单目深度可能是一个不必要的架构瓶颈。本文介绍了一种新的融合方法,该方法完全绕过单目深度估计,而是使用简单的注意力机制在BEV网格中选择和融合相机和激光雷达的特征。论文表明,提出的模型可以根据激光雷达特征的可用性调整其对相机特征的使用,并且它在nuScenes数据集上比依赖于单目深度估计的基线产生更好的3D检测性能。

本文介绍了一种新的相机-激光雷达融合方法,称为“Lift Attented Splat”,该方法完全绕过单目深度估计,而是使用简单的transformer在BEV中选择和融合相机和激光雷达特征。证据表明,与基于Monocular深度估计的方法相比,本文的方法显示出更好的相机利用率,并提高了物体检测性能。贡献如下:

  1. 基于Lift Splat范式的相机-激光雷达融合方法并没有像预期的那样利用深度。特别地,我们表明,如果完全去除单目深度预测,它们的性能相当或更好。
  2. 本文介绍了一种新的相机-激光雷达融合方法,该方法使用简单的注意力机制融合纯BEV中的相机和激光雷达特征。论文证明,与基于Lift Splat范式的模型相比,它可以更好地利用相机,并提高3D检测性能。

主要结构介绍

Lift Splat深度预测通常较差,通过使用绝对相对误差(Abs.Rel.)和均方根误差(RMSE)将其与激光雷达深度图进行定性和定量比较,来分析BEVFusion预测的深度质量。如图1所示,深度预测不能准确反映场景的结构,并且与激光雷达深度图明显不同,后者表明单目深度没有如预期的那样得到利用。论文还进行了研究,改进深度预测并不能提高检测性能!完全取消深度预测不会影响物体检测性能。

w~自动驾驶合集14_自动驾驶_118

我们提出了一种相机-激光雷达融合方法,该方法完全绕过单目深度估计,而是使用简单的transformer在鸟瞰图中融合相机和激光雷达特征。然而,由于大量的相机和激光雷达特征以及注意力的二次性,transformer架构很难简单地应用于相机-激光雷达融合问题。在BEV中投影相机特征时,可以使用问题的几何形状来大幅限制注意力的范围,因为相机特征应该只对沿其相应光线的位置有贡献。我们将这一想法应用于相机-激光雷达融合的情况,并介绍了一种简单的融合方法,该方法使用相机平面中的柱和激光雷达BEV网格中的极射线之间的交叉注意力!交叉注意力不是预测单目深度,而是在激光雷达特征沿着其光线提供的背景下,学习哪些相机特征是最显著的。

除了在BEV中投影相机特征外,我们的模型与基于Lift Splat范式的方法具有相似的总体架构,如下图所示。它由以下模块组成:相机和激光雷达主干,独立生成每个模态的特征;投影和融合模块,将相机特征嵌入BEV并与激光雷达融合;最后是检测头。当考虑目标检测时,模型的最终输出是场景中目标的属性,表示为具有位置、维度、方向、速度和分类信息的3D边界框。

Lift Attented Splat相机激光雷达融合架构如下所示。(左)总体架构:相机和激光雷达主干的特征在传递到检测头之前融合在一起。(inset)我们的3D投影的几何结构:“Lift”步骤通过使用双线性采样沿z方向提升激光雷达特征,将激光雷达BEV特征嵌入投影地平线。“splat”步骤对应于逆变换,因为它使用双线性采样将特征从投影的地平线投影回BEV网格,再次沿着z方向!右边是project模块的细节部分。   

w~自动驾驶合集14_自动驾驶_119

实验结果

w~自动驾驶合集14_自动驾驶_120

w~自动驾驶合集14_自动驾驶_121

w~自动驾驶合集14_自动驾驶_122