BEV 空间内的特征级融合
BEV空间内进行特征级融合具有如下优势跨摄摄像头融合和多模融合更易实现时序融合更易实现可“脑补”出遮挡区域的目标更方便端到端做优化在高等级智能驾驶领域除了特斯拉和mobileye走的是纯视觉技术路线外其他大多数玩家走的还是多传感器融合的技术路线。多传感器融合方案一方面能够充分利用不同工作原理的传感器提升对不同场景下的整体感知精度另一方面也可以在某种传感器出现失效时其他传感器可以作为冗余备份。目前多传感器融合方案主要有后融合目标级融合、前融合数据级融合和中融合特征级融合三种。1. 多传感器融合方案1.2. 传感器后融合目标级融合所谓后融合是指各传感器针对目标物体单独进行深度学习模型推理从而各自输出带有传感器自身属性的结果并在决策层进行融合这也是当前的主流方案。其优势是不同的传感器都独立进行目标识别解耦性好且各传感器可以互为冗余备份。对于Tier 1而言后融合方案便于做标准的模块化开发把接口封装好提供给主机厂“即插即用”。对于主机厂来说后融合算法比较简单每种传感器的识别结果输入到融合模块融合模块对各传感器在不同场景下的识别结果设置不同的置信度最终根据融合策略进行决策。不过后融合也有缺点最大的问题就是各自传感器经过目标识别再进行融合时中间损失了很多有效信息影响了感知精度而且最终的融合算法仍然是一种基于规则的方法要根据先验知识来设定传感器的置信度局限性很明显。目标级融合 后融合原理示意图1.2. 传感器前融合数据级融合所谓前融合是指把各传感器的数据采集后经过数据同步后对这些原始数据进行融合。多传感器数据级融合前融合原理示意图其优势是可以从整体上来处理信息让数据更早做融合从而让数据更有关联性比如把激光雷达的点云数据和摄像头的像素级数据进行融合数据的损失也比较少。不过其挑战也很明显因为视觉数据和激光雷达点云数据是异构数据其坐标系不同视觉数据是2D图像空间而激光雷达点云是3D空间在进行融合时只能在图像空间里把点云放进去给图像提供深度信息或者在点云坐标系里通过给点云染色或做特征渲染而让点云具有更丰富的语义信息。相机和激光雷达前融合效果示意图坐标系的不同也导致前融合的效果并不理想一方面前融合需要处理的数据量较大对算力要求较高另一方面前融合要想达到好的效果对融合策略要求较高过程非常复杂所以目前业内应用并不多。为了解决异构传感器坐标系不一致的问题开发人员常常会把视觉2D图像转到3D坐标系下这样就和其他传感器数据如激光雷达点云数据所在的空间保持一致从而可以在相同坐标系下进行融合。将视觉信息转换到3D坐标系就是今天介绍的重点——BEV。BEV是鸟瞰图 (Bird’s Eye View) 的简称也被称为上帝视角是一种用于描述感知世界的视角或坐标系 (3D)BEV也用于代指在计算机视觉领域内的一种端到端的、由神经网络将视觉信息从图像空间转换到BEV空间的技术。虽然理论上BEV可以应用在前、中、后融合过程中不过因为前融合实现难度大一般很少将BEV应用在前融合偶尔也会用在后融合上更多会应用在介于数据级融合和目标级融合之间的特征级融合即中融合上。1.3. 传感器中融合特征级融合所谓中融合就是先将各个传感器通过神经网络模型提取中间层特征即有效特征再对多种传感器的有效主要特征进行融合从而更有可能得到最佳推理。对有效特征在BEV空间进行融合一来数据损失少二来算力消耗也较少相对于前融合所以一般在BEV空间进行中融合比较多。为了简化描述如无特殊说明下文提及的BEV感知均指“BEV空间内的中融合”特征级融合。那么视角转换到BEV空间究竟有什么意义呢想象一下停车就好了。停车挺有难度的尤其对于新手司机来说。驾驶员不仅要注意前方还要兼顾左右两个后视镜和车内倒车镜根据经验去预估自车相对于周边障碍物的位置和距离。而有了车载360环视功能驾驶员能从上帝视角一目了然地看到自车周边物体的位置和距离停车也就变得简单了很多。360度环视视角具体到智能驾驶系统因为感知、预测、决策和规划等模块都是在3D空间内进行的而摄像头看到的图像信息只是真实物理世界在透视视图 (Perspective View) 下的投影从图像得到的信息需要经过复杂的后处理才能使用信息损失也很多。而将视觉信息转换到BEV空间则可以很方便地连接感知与下游的规划控制模块。此外BEV空间内的感知任务在精度上也有优势。做2D感知时面对远处的物体可能几个像素的误差便可能导致几十米的真实误差而在BEV空间内训练模型时对远处误差的损失 (loss) 更加明显所以感知结果也会更准确一些。综上这也就是BEV如此重要的原因。1.4. BEV的发展历史在了解BEV的技术细节之前我们先来了解下BEV的发展历史。传统方法的BEV空间转换方法一般是先在图像空间对图像进行特征提取生成分割结果然后通过IPMInverse Perspective Mapping逆透视变换函数转换到BEV空间。什么是IPM在前视摄像头拍摄的图像中由于透视效应现象想象从一个点去看世界透视效应会呈现出近大远小的观察结果的存在本来平行的事物比如车道线在图像中却不平行。IPM就是利用相机成像过程中的坐标系转化关系对其原理进行抽象和简化得到真实世界坐标系和图像坐标系之间坐标的对应关系并进行公式化描述从而消除这种透视效应所以叫做逆透视变换。车道线的逆透视变换 (IPM)IPM是一种连接图像空间和BEV空间的简单直接的方法只需要知道相机内外参数就可以。相机内参数指的是与相机自身特性相关的参数比如焦距、像素大小等而相机外参数则是相机在真实世界坐标系中的参数比如相机的安装位置、旋转方向等。不过IPM依赖一些预先的假设比如地面平直性假设地面要是平的且相机和地面之间没有相对运动车辆的俯仰角不变。很多时候这个假设太严苛了很难满足比如在颠簸道路上或者在车辆加速或减速产生俯仰时系统对目标物的感知结果波动非常大会产生“忽近忽远”的跳变平行的车道线这时也会变成“内八”或者“外八”。于是就有了改进方案那就是将相机的实时位姿考虑进来加上俯仰角的修正补偿后再进行空间转换。改进后虽然效果有所改善但是实时位姿也很难准确得到所以效果并不理想。这两年深度学习也开始被应用于BEV空间转换且逐渐成为主流方案。相比于依赖人为规则使用神经网络从2D空间进行BEV空间转换能够取得更好的感知效果。具体的流程是先通过一个共享的主干网络 (Backbone) 来提取每个相机的特征 (feature)然后再通过Transformer等将多摄像头数据完成从图像空间到BEV空间的转换。在BEV空间内由于坐标系相同可以很方便地将图像数据和其他传感器数据如Lidar、Radar等进行融合还可以进行时序融合形成4D空间这也是当下BEV技术的大趋势。标题毫末智行用于识别车道线的BEV时空融合感知网络1.5. BEV空间内中融合的优势相比于后融合和前融合在BEV空间内进行中融合具有如下优势1.5.1.跨摄像头融合和多模融合更易实现传统跨摄像头融合或者多模融合时因数据空间不同需要用很多后处理规则去关联不同传感器的感知结果操作非常复杂。在BEV空间内做融合后再做目标检测算法实现更加简单BEV空间内视觉感知到的物体大小和朝向也都能直接得到表达。1.5.2.时序融合更易实现在BEV空间时可以很容易地融合时序信息形成4D空间。在4D空间内感知网络可以更好地实现一些感知任务如测速等甚至可以直接输出运动预测 (motion prediction) 给到下游的决策和规控。1.5.3.可“脑补”出被遮挡区域的目标因为视觉的透视效应2D图像很容易有遮挡因而传统的2D感知任务只能感知看得见的目标对于遮挡完全无能为力而在BEV空间内可以基于先验知识对被遮挡的区域进行预测从而“脑补”出被遮挡区域可能存在物体。虽然“脑补”出的物体有一定“想象”的成分但这对于下游的规控模块仍有很多好处。1.5.4. 更方便端到端做优化传统做感知任务时依次做目标识别、追踪和运动预测更像是个“串行系统”上游的误差会传递到下游从而造成误差累积而在BEV空间内感知和运动预测在统一空间内完成因而可以通过神经网络直接做端到端优化“并行”出结果这样既可以避免误差累积也大大减少了人工逻辑的作用让感知网络可以通过数据驱动的方式来自学习从而更好地实现功能迭代。随着特斯拉和毫末智行等纷纷使用BEV空间转换近期BEV也引起了行业内的高度关注不过当前BEV的应用实践并不太多业内专家仍有很多疑问BEV感知的模型架构是什么如何在BEV空间内做目标检测和模型训练BEV语义感知地图是否可以代替高精地图当前BEV仍有什么挑战BEV的技术壁垒是什么为什么有的公司可以这么做而有的公司则不行带着这些问题九章智驾采访了毫末智行的技术总监潘兴、纽劢科技的视觉专家符张杰、鉴智机器人研究总监朱政以及一些其他行业专家。1.6. BEV感知需要什么样的架构虽然每个公司使用的BEV感知架构可能不完全相同但是大致架构类似。第一步先将摄像头数据输入到共享的骨干网络 (Backbone)提取每个摄像头的数据特征 (feature)。第二步把所有的摄像头数据跨摄进行融合并转换到BEV空间。第三步在BEV空间内进行跨模态融合将像素级的视觉数据和激光雷达点云进行融合。第四步进行时序融合形成4D时空维度的感知信息。最后一步就是多任务输出可以是静态语义地图、动态检测和运动预测等给到下游规控模块使用。BEV感知架构值得一提的是Transformer在CV领域的应用自2020年底就开始获得关注随着2021年特斯拉在AI Day上公开其在FSD中使用了Transformer算法后国内多家公司也纷纷开始将Transformer应用在感知系统中如毫末智行、地平线、纽劢等。相比于传统神经网络如CNN的局部感受野Transformer的注意力机制能够带来更好的全局感受野让其在进行跨摄像头、跨传感器以及时序融合时可以更好地在空间时序维度上建模从而可以提升感知准确率。下图中南京大学、上海人工智能实验室和香港大学提出的BEVFormer算法架构就使用了Transformer并在nuScenes测试集上的NDS指标上取得了新的当前最优水平 (SOTA) 56.9%提升了9个点。BEVFormer算法架构BEVFormer经过骨干网络提取特征后经过了6个编码层 (encoder)每一个都采用了典型的transformer结构。具体实现上BEVFormer通过预先设置参数的网格划分 (grid-shaped) 的BEV 查询机制 (BEV queries) 来利用时空信息。为了聚合空间信息BEVFormer设计了空间交叉注意力机制spatial cross-attention即BEV 查询机制从多相机特征中通过注意力机制提取所需的空间特征让BEV查询机制能从其感兴趣的多相机视角中提取特征为了聚合时序信息BEVFormer提出了时序自注意力机制temporal self-attention即每一时刻生成的BEV特征都从上一时刻的BEV特征获取所需的时序信息来融合历史信息。BEVFormer在通过Transformer进行BEV空间转换时是通过预先设置参数的网格划分 (grid-shaped) 的BEV 查询机制和空间交叉注意力机制。预先设置了一个大小为的空间作为BEVFormer的查询空间其中H和W是BEV平面的空间尺寸C为与该平面垂直的高度坐标其中网格间隔值s代表了该空间的颗粒度自车坐标作为原点BEV查询机制负责不断查询找到这个空间内每个坐标点 (x, y) 的柱状3D参考点最终完成全部BEV空间转换。BEVFormer的BEV查询机制BEVFusion在进行BEV转换时虽没使用Transformer不过也经历了编码 (encoder) 和解码 (decoder) 两个过程在解码过程中把图像信息转化成BEV的3D空间的特征点云每个像素都有一个预估深度DN个输入相机会生成大小为的相机特征点云其中 (H, W) 是相机特征图的大小D为深度信息。而转换成的BEV空间的特征点云以自车作为坐标系原点沿x轴和y轴展开以局部网格采样的方式如网格间隔 (grid) 为r一般通过池化 (pooling) 操作来聚合每个 r × r BEV空间网格内的特征并沿 z 轴高度方向展平特征于是完成了从2D到BEV空间的转换。BEVFusion相机到BEV空间转换机制此外纽劢提出的对多相机配置的BEV语义分割任务的BEVSegFormer架构也用到了Transformer并在nuScenes验证集的语义分割任务上取得了当前最优水平 (SOTA)。BEVSegFormer的网络几位行业内专家认为由于Transfromer先天具有更好的全局感受野因而可以好地提取全局特征既可以用来作为骨干网络也可以在BEV转换中使用。BEVTransformer联合使用优势会更加明显有可能会成为行业发展趋势。2. BEV感知任务实践2.1. 如何在BEV空间内做3D目标检测在自动驾驶感知中目标检测是非常重要的任务。所有下游跟踪、预测、规划、控制等任务都需要目标检测“打好基础”而下游任务都是在3D空间内完成的。因此强大的 3D 检测能力是自动驾驶安全的保证。在实际应用中纯视觉方案面临从 2D 推测 3D“少一个维度” 的挑战。一般传统方案做3D检测时如FCOS3D先做2D的目标检测再通过以激光雷达测的真值训练的神经网络去对2D目标预测深度以此来得到3D目标的检测。在BEV空间内可以直接进行3D目标检测省去预测深度的过程实现起来更简单。如把2D检测算法DETR稍加改造用于做3D目标检测的DETER3D算法复杂度大大降低也在NuScenes数据集上取得了当前最优水平 (SOTA) 的检测效果。DETR3D算法架构其损失函数的借鉴了DETR的设计注DETR3D由麻省理工学院 (MIT) 和清华大学、理想汽车和丰田研究所团队共同合作提出的目前代码已经开源。DETR3D论文中的感知结果显示由于在BEV空间里的跨摄像头的融合效果更好DETR3D对于相机附近超大的、被截断目标物如大货车的检出率有了明显的提升在关键检出指标NDS上FCOS3D0.317DETR3D0.356。此外BEV空间内的目标检测更容易做到“不重不漏”。鉴智机器人朱政介绍道“目标检测最重要是做到‘不重不漏’。在2D图像空间内由于透视效应遮挡严重很容易重合和漏检在BEV空间内做到不重合很容易只需要按照物理世界的规则把重合的感知目标去掉即可要做到不漏检如果单帧图像下被完全遮挡那的确没办法——不过加上时序信息即使在某几帧下被遮挡只要不是一直被遮挡住就可以在BEV空间“脑补”出来。就像人开车一样前几秒看到旁边车道有辆车中间有几秒被大车挡住了但我们知道再过几秒它还会出现。”2.2. 传统2D感知任务和BEV空间如何结合笔者有个疑问在BEV空间内检测有这么多好处那是不是所有的感知任务都可以在BEV空间内完成传统的那些2D检测和语义分割等感知任务还有“用武之地”吗目前看下来2D感知任务并不会完全被“弃用”还是会与BEV空间内的检测任务结合进行使用。鉴智机器人科学家朱政认为一般的检测任务如动态车辆、行人和静态车道线等当然更适合在BEV空间内做但也有些是在BEV空间内做不了或者更合适在2D空间内做的感知任务比如红绿灯检测。纽劢也认为传统的2D检测和图像分割任务其实是可以作为辅助来提升BEV感知任务的性能可以根据下游的不同需求来做不同的安排。那么2D感知的结果怎么对应到 BEV空间呢对于这个问题地平线架构师刘景初在线上分享中提到其实关键是要找到2D检测结果在BEV空间的映射关系且这些映射关系要在不同的场景下表现得足够鲁棒这是比较难的需要很多后处理规则。2.3. 如何处理“脑补”出来的预测结果在BEV空间做目标检测时对于被遮挡区域感知模型会根据先验知识“脑补”出被遮挡部分的目标。这种“脑补”的功能无疑是非常令人惊喜的地平线的架构师刘景柱在一次线上分享中认为这种想象力是“一种感知范式的转变”。那么对于“脑补”出的感知结果到底如何使用才能最大化发挥其作用呢业内专家普遍认为对于神经网络所“想象”出来的感知结果应该和实际看到的感知结果做好区分比如可以让感知结果输出时带一个“置信度”的标签告诉下游这个结果到底是实际看到还是“脑补”出来的。对于下游而言对不同置信度的结果的“可信赖度”是不同的使用的时候也会做好甄别比如对低置信度的感知结果使用时会做一些限制。刘景初在线上分享时提到对于低置信度的感知结果只能用一些比较粗糙的信息比如车道线是不能用的但是如果前面有个路口能看到人行横道那么大概率两边会有延伸出去的道路这个感知结果就是可以用的。毫末智行的潘兴也认为复杂拓扑结构道路环境下“脑补”出的车道线准确度很一般“经常出错比如会在小路口时“脑补”将车道线延长或者将待转区的线“脑补”成了车道线”对于这类识别结果毫末的选择是不使用甚至直接选择不输出这些“脑补”的车道线感知结果。鉴智机器人的朱政认为“脑补”出的结果可以作为隐变量或者放在隐空间存储起来交给模型自行判断使用而不去加太多人为规则去约束。2.4. 时序融合有什么用处在BEV空间内进行时序融合后形成的4D空间除了上述提到的可以实现对暂时被遮挡的物体有更好的跟踪效果外还可以更方便地对运动物体进行测速和运动预测。2.4.1. 测速除了像毫米波雷达这种自带测速功能的传感器外其他传感器基于某一时刻的信息去做测速是很困难的而融入了时序信息后视觉就可以实现稳定地测速。在2D图像空间内一般采用光流法 (Optical Flow) 进行测速。光流法是在视频流中利用上一帧代表同一目标物的像素点到下一帧的移动量从而计算出目标物的运动速度的方法。根据进行光流估计时图像的选取点是稀疏还是稠密可以将光流估计分为稀疏光流 (Sparse Optical Flow) 和稠密光流 (Dense Optical Flow)如下左图的稀疏光流为选取了明显的特征点进行光流估计右图为连续帧稠密光流示意图。稠密光流描述图像中每个像素向下一帧运动的方向和速度为了便于识别用不同的颜色和亮度表示光流的大小和方向如黄色代表向下运动紫色代表向上运动速度越快颜色越深。稀疏光流左图和稠密光流右图 在BEV空间内因为能够直接获取到目标物体每帧下的具体位置信息再加上前后帧的时间戳信息就可以很容易求出目标物体的速度“可以把根据位置信息得到的速度再融合毫米波雷达提供的速度这样结果会更准确”一位行业内专家介绍道。毫末智行潘兴认为也可以在模型训练时把速度信息直接标注上去让车端模型根据前后帧的信息自行推理出来“有了4D信息后速度的真值也比较容易获取训练起来更容易一些”潘兴说道。2.4.2. 运动预测自动驾驶系统需要与道路上的交通参与者进行互动并预测他们未来的行为以便能正确做好自车的规划控制。云端有了4D时空信息就像掌握了预知未来的“超能力”一样可以准确地知道接下来每个目标物的运动轨迹而用这些信息去训练神经网络可以让模型根据过往的历史信息去预测目标物接下来的运动轨迹。传统算法会先做感知再做运动预测中间会人为增加很多规则来处理感知结果这样一方面会增加很多人工逻辑增加了后续调优的难度另一方面处理时也损失了很多有效信息。而神经网络则直接从感知传递到运动预测全部在BEV空间内完成减少信息损失的同时还可以端到端做优化减少了人工逻辑大大提升数据迭代的效率。此前也已经有一些端到端感知联合预测的实践。英国的自动驾驶创业公司Wayve和剑桥大学合作提出的FIERY网络也是基于纯视觉的方法通过端到端的方式通过摄像头输入直接在BEV空间预测每个目标的运动轨迹 (motion trajectory)并给出了具体轨迹的概率。下图是FIERY BEV网络运动预测的示意图上面两行为相机输入最下面一行为BEV空间下的目标物的预测轨迹。FIERY BEV网络运动预测的示意图下图为鉴智机器人和清华大学团队合作提出的BEVerse以周视摄像头的视频流作为输入就是在BEV空间内完成的多任务模型感知任务除了动态感知和局部语义地图外还进行了运动预测。BEVerse的多任务模型架构2.5. 在网格划分时如何权衡大小、远近目标检测的矛盾本质上从2D图像到BEV空间的转化就是寻找一种映射关系将2D图像的每个像素投射到3D空间使图像的稠密语义信息在BEV空间得以完整保留。一般在BEV转化时都会使用网格划分机制。具体转换过程上文已经详细描述了虽然转换过程的原理不难但转化过程如池化时却非常消耗算力主要是因为相机的特征点云密度非常大比如200万像素的相机每帧会生成200万个点特征点云比激光雷达的点云密度要大得多。所以为了提高转换效率和节省算力一般会限制网格的数量这就需要预先设置好网格参数主要是网格间隔 (grid) 和x/y轴的范围 (range)。这就带来了一个挑战那就是如何在网格间隔参数设置时兼顾近处和远处、大目标和小目标。网格间隔参数设置得大BEV空间内的特征颗粒度就大虽然计算运行速度比较快但细节不是很丰富网格参数小的话颗粒度小虽然细节丰富但计算量大。因为车端算力的限制要想感知距离足够远网格就不能设置得特别小而网格大的话就可能损失很多细节小目标就可能会遗漏这就需要采取折中的方案也需要对网络做一些精细化的设计使用一些人工规则或者加一些训练技巧。纽劢的符张杰介绍“可以对远处目标或者小目标加以更大的损失权重这样网络就会更加关注远处目标或小目标也可以利用多尺度的特征来解决这个问题。”在BEV空间的多头感知任务中不同的任务对于网格采样颗粒度和范围的需求不同可以根据具体的任务来设置网格和范围参数这个思想在纽劢的BEVSegFormer和鉴智机器人和清华大学团队共同提出的BEVerse网络架构中都有体现。在BEVerse中的多头任务模型中在语义地图感知任务中由于车道线一般比较细需把采样网格设置和x/y轴范围设置得比较小x轴范围为[-30m, 30m]y轴为[-15m, 15m]间隔为0.15m而在3D目标检测任务中网格和范围可以设置地稍大一些x轴和y轴范围均为[-51.2m, 51.2m]间隔为0.8m。鉴智机器人的朱政则提到可以根据不同场景的需求对不同的范围x/y轴进行采样他说道“要考虑功能对于感知范围的需求比如某些功能只在高速公路上开启那么对远处的目标就更关注一些如果只在城区开启时因为车速低关注的范围就不需要那么远这样可以节省部分算力。”3. BEV空间内的模型训练和优化既然在BEV空间内做目标检测有这么多好处那么如何训练BEV空间内的模型呢3.1. 如何在BEV空间训练算法模型车端BEV网络的训练方式还是采用传统的有监督学习不过区别在于和传统2D感知任务在2D图像空间内完成标注不同其所需要的真值需要在BEV空间内完成标注。据业内专家反馈BEV训练最大的挑战是在训练神经网络所需要的真值 (Ground Truth) 的生成上。训练所需的真值数据是从车端的影子模式下回传的视频流数据中通过数据挖掘筛选出有价值的corner case数据。这部分数据再进入云端真值系统。云端真值系统的作用先是进行三维重建转换到BEV空间再做时序融合形成4D空间数据再进行自动标注。最后经过人工质检 (QA) 后就形成了所需要的真值。这样4D空间的真值数据就可以用来训练车端的BEV感知模型了训练完成后再继续部署到车端这样不断迭代来形成闭环。具体流程可以参考下图。BEV感知模型的训练链路值得一提的是上述的链路尤其是车端影子模式云端真值系统相结合的方式进行模型迭代形成数据闭环更像是个“理想链路”。受限于实现技术难度和合规性目前真正能够实现完整闭环的玩家可以说是少之又少。当前更普遍的还是自建采集车队用激光雷达视觉的真值车去采集数据做联合4D标注来进行模型训练和迭代并部署到车端。3.2. 如何提升BEV感知精度对于感知任务而言精度是下游非常关心的。由于视觉先天在测距方面存在不足在BEV空间内提升感知精度就成为了至关重要的而这又和模型训练密不可分。根据业内专家的实践经验要想提高车端BEV感知模型的精度一般从这三方面入手3.2.1. 优化云端三维重建和标注模型有监督学习模式下训练数据真值的精度决定了所训练模型的精度上限。对于BEV感知模型而言云端真值生成系统就是“老师”要想提升车端BEV感知模型这位“学生”的水平提升负责三维重建和自动标注的云端真值系统这位“老师”的水平是很重要的。云端“老师”的三维重建功能也是要经过数据进行训练的为了让训练“老师”的数据有足够高的精度一般会使用带激光雷达的真值车采集得到用于训练数据的真值。地平线的做法是为了获取更好的重建效果会使用真值车从不同的行驶方向采集同一个地点的数据。除了提升用于训练“老师”的数据精度外业内公司在使用云端真值系统进行离线感知任务时会不惜算力做一些感知融合处理如融合其他传感器数据激光雷达、毫米波雷达等和时序信息从而获得完整的BEV空间的4D重建场景以此作为真值来训练车端的网络。如果车端回传的数据中有激光点云数据精度会更高效果也更好如果没有激光点云也可以依赖视觉进行三维重建。据了解基于视觉数据进行云端三维重建的数据精度也是可以满足车端模型训练要求的。而且由于当前激光雷达上车较少且位置差异较大目前业内还是以视觉数据为主进行三维重建。在BEV空间下标注时为了提升标注效率和标注精度也会先用云端真值系统自动标注做预处理完成后再人工进行校验使真值的精度达到近似人类驾驶员能达到的精度。3.2.2. 增加训练数据量影子模式下车端会设置很多触发器 (trigger) 的策略采集有价值的数据回传到云端。在云端进行数据挖掘后找到有价值的corner case然后重新去做真值生成并通过数据驱动对车端网络进行训练迭代。毫无疑问训练数据所覆盖的场景越多车端模型的泛化能力越强感知精度也越高。相比于训练数据的数量更重要的是数据的质量也就是数据需要覆盖更多的极端场景如不同的城市道路、不同的光照条件等。除了车端影子模式获取数据和自建采集车队外还有一种更高效地获取数据的方法那就是去年特斯拉AI Day提出来的通过仿真获取数据。特斯拉AI Day中的仿真介绍3.2.3. 优化车端网络架构除了上述两点外设计车端模型架构也是非常重要的架构的好坏也直接决定了网络的效率和功能水平。不过受访的多位专家也提到对于BEV感知而言并不需要一味地提升感知精度最主要的评价指标还是看能否满足下游的需求。其实感知精度的要求可以不用那么高就像人开车一样对于近处的物体精度高一点就可以对于远处的物体来说过于追求精度反而是没有必要的。一位专注于做视觉的从业者说“BEV空间内的视觉算法精度在相当一段范围内精度还是非常准的基本可以控制在百分之几的误差。人开车的时候也是如此前面200米左右有个东西它的精确距离是200米还是220米其实区别并不大。”3.3. BEV语义地图有啥用在当前高等级智能驾驶系统中高精地图所提供的语义信息包括道路拓扑结构、车道线、限速要求等能够让智能驾驶系统更好地理解现实世界的行车规则也让很多人认为高精地图是通往高等级智能驾驶的道路上不可或缺的一部分。不过当前大部分的高精地图都是使用采集车得到的以点云为主的数据进行标注得来地图的构建和维护成本都很高。而HDMapNet、BEVSegFormer、BEVerse等方法可以基于多摄像头信息将BEV空间内的车道线、路沿、斑马线等静态目标物在线生成局部语义地图供下游规控任务使用大大降低了语义地图的构建和维护成本从而可能会给行业带来地图构建和更新的新范式。HDMapNet实时构建局部语义地图的网络模型当前高速NOA的主流方案还是依赖高精地图不过当功能拓展到城区NOA时目前城市道路尚无高精地图覆盖。诸多业内专家认为BEV在线构建的语义地图可以一定程度上代替高精地图的作用在城市NOA中发挥重要作用。追势科技发布的城市记忆领航功能也是利用了“单车多次”的记忆模式利用车端传感器激光雷达非必要来实现特定通勤路线的语义地图的构建和更新从而可以实现上下班这种特定路线的点对点领航辅助功能。追势科技城市记忆领航功能算法架构虽然在理论上方案可行性没有大问题不过在实际落地中也有不少挑战。最大的挑战是精度相比于高精地图BEV语义地图的精度是略有不足的而传统智能驾驶算法架构中下游的规控任务都依赖高精地图提供精确的drive line当面对上游给个“不那么精确”或者“大方向上正确”的语义地图时要保证通过率下游的规控逻辑也需要相应地调整。不过并不是说地图就完全不需要了地图毕竟是超视距传感器对于提前预知下个路口的道路拓扑结构还是很有帮助的。追势科技的城市记忆领航辅助中也只有当特定路线的语义地图成熟、完整时才可以启用记忆领航功能。只是可能以后地图的精度不需要像现在的高精地图一样那么高了有专家表示“可能未来导航地图上加一些语义信息就可以满足要求了”3.4. BEV模型和数据的通用性不同的量产车型中摄像头的数量、安装位置和具体参数存在较大的差异使用传统后融合策略时这些定制化的传感器适配带来了巨大的工作量。那么在BEV空间进行中融合时是否会有差异呢一方面在适配不同车型时是否和传统的后融合有差异呢另一方面从不同量产车型回传回来的数据是否能够用于持续迭代统一的BEV感知模型呢3.5. 如何适配不同车型由于传统后融合太依赖人工后处理规则在传感器适配时有诸多的无比痛苦的定制化工作可能安装位置或者视角稍微调整一下就需要花大量的时间适配。与后融合方案相比BEV感知模型由于少了很多人工规则通用能力要出色得多虽然也需要做一些适配但是整体工作量还是要少地多。“换一个新车型相机安装位置变了这时候需要把相机重新标定一下再采集数据训练一下”一位行业专家说道。为了提升BEV模型的泛化能力一般可以通过预先设置结构化参数来适配不同车型比如安装高度、安装位置、角度等这样就可以在模型训练时排除相机内外参的影响。不过也有一些模型如BEVerse等尝试把相机的内外参作为信号输入直接给到模型进行训练让神经网络自己去学着利用这些信息做适配这样适配会更加方便不过这也对BEV网络架构的设计提出了更高的要求。3.6. 回传数据的通用性业内专家普遍认为不同车型上的摄像头虽然可能位置、数量不同但回传回来的数据如图像、视频流转换到BEV空间后都可以很方便地用于训练BEV模型。只是考虑到位置差异在使用车端摄像头数据时需要对多摄像头的重合部分做一下处理。其实环视摄像头的视野重合部分并不多前向多个不同FOV的摄像头会有较多重合部分。要处理这种重合部分可以采用拼接技术。每一张图像都有自己的特征点数据采集后先根据图像的特征点对特征点相似的图像进行特征匹配图像匹配从而找到邻接图并将相邻的图像拼接在一起图像拼接然后就对特征相同的不同分辨率的图像进行融合图像融合。完成图像融合后只需要把相邻帧图进行拼接成视频视频融合整个过程就完成了。具体过程如下图所示。拼接流程图像匹配过程中很关键的环节是图像特征点的获取和匹配。这可以通过SIFT、SURF等方法来实现不过为了提升计算效率业内一般通过降采样类似于降低分辨率的方式来进行特征检测。在图像融合时一般可用泊松算法、直接平均算法和加权算法等方法直接平均算法业内用得更多一些。除了上述的图像拼接外为了消除不同车型的差异业内还用到一种叫“虚拟相机”的方法来共享训练数据“就是将图像投影到一个标准的视角上训练时用的视角投影后的相机就叫虚拟相机这样就能保证回传数据和训练数据的视角相同了”一位行业专家介绍道。除了上述提到的视角问题外一位行业专家也提到ISPImage Signal Process图像信号处理的处理也可能会影响数据的通用性。不同摄像头的ISP不同对Raw data的处理方式也不同虽然可以通过技术手段来解决如通过图像预处理统一到同一个色彩空间下但也可能会影响到感知结果“就像人带着墨镜看世界一样看一般物体可能不受影响看红绿灯就可能会受到一些影响”这位专家解释道。4. BEV技术的局限性与挑战4.1. BEV解决不了视觉的“先天缺陷”在传统的2D检测时检测、分类和跟踪任务都是依赖有监督学习的训练也就是说感知网络只能识别出之前“见过”的物体对于之前没“见过”的物体即训练数据集里没有的是识别不出来的从而会出现“不认识就看不见”的现象这也被认为是视觉的“先天缺陷”。比如少见的异形物体如披萨盒高速上奔跑的野生动物等这种情况可能出现的概率并不高但是一旦出现可能是致命的。那么这个问题在转换到BEV空间后可以解决吗业内专家给的答案很一致不能。BEV模型没有训练过的物体在BEV空间内可能是“不存在”的。不过仍然有其他办法来弥补这个缺陷具体如下4.1.1. 深度 (Depth) 估计当前在2D感知方案中应用比较广泛的是底层视觉感知 (low level vision) 中的深度估计。深度估计一般是通过激光雷达的稀疏点云提供的真值进行训练从而利用深度学习直接预测出稠密的深度值。通过预测深度就可以一定程度上解决异形物体问题。如下图所示的右侧的拉了树木的大车如果使用普通的车辆检测因为这种训练样本极少可能会漏检而采用深度估计至少可以知道该处有物体可以及时采取措施避免安全事故。单目深度估计在BEV空间中可以把底层视觉静态感知到的深度预估转化为路面上的高度信息。下图所示为一帧所感知到的结果蓝色表示路面高度比较低红色表示凸起红色越深表示高度越高也能看到一些地面上的凸起物体可以根据识别出来的物体类别进行后续的决策规划如果是无法识别的异形物体那么最安全的方式就是避开它。BEV空间中的底层视觉感知鉴智机器人推出的视觉雷达也是采用类似的原理通过前向双目相机和环视相机产生深度信息生成稠密点云并在BEV空间内进行目标检测。鉴智机器人提出的视觉雷达算法架构4.1.2. 数据驱动当然底层视觉感知的深度估计也不是万能的如果遇到一个没训练过的数据可能在特征提取时就忽略了所以要解决这个问题的另一种方法就是数据驱动。数据驱动依赖数据闭环工具链各家也都开发了工具链系统比如毫末智行的LUCAS、地平线的AIDI等。4.1.3. 多传感器冗余在纯视觉不能保证百分之百安全的情况下采用多传感器冗余的方案成为了众多主机厂的选择尤其是激光雷达是对视觉非常好的补充。车端装了激光雷达之后由于有更高精度的数据能给视觉提供更好的真值数据也能更好地训练视觉算法。就像均胜电子郭继舜在一次线上分享时提到的在不能保证完全安全的情况下系统设计时考虑传感器冗余、硬件堆料等是非常必要的也是“系统设计的正义”。4.2. BEV感知的挑战总体而言BEV是个全新的感知范式向上下游如定位和预测都有很大的拓展空间业内很多企业也都在积极探索实践中但在实践中还有很多的挑战需要克服。4.2.1. 数据问题上文也提到了BEV感知中最具备挑战的还是如何获取更多维度的数据以及产生更高质量的真值。加上Transformer本身的特性为更好地发挥优势其对数据量的要求也比传统卷积神经网络大得多这就越发加剧了模型对数据的“饥渴”程度。要应对这个挑战一方面依赖车端影子模式持续不断地采集数据另一方面也依赖云端系统去做数据挖掘和真值生成这需要持续不断地去优化云端真值系统的算法。此外为了减少标注工作量提升训练效率自监督学习也开始被引入到云端系统中。和有监督学习不同自监督学习的真值信息不是人工标注的而是算法自动构造监督信息真值来进行监督学习或训练。当前自监督学习已经被应用在数据挖掘、数据标注和神经网络的预训练中。4.2.2. 算力消耗问题上文也提到过由于使用Transfomer进行BEV空间转化非常消耗算力对车端有限算力提出了挑战。目前主要有两个优化的方向模型轻量化图像处理中使用Transformer的计算复杂度与图像尺寸的平方成正比这会导致在图像很大的时候计算量过于庞大。如何在尽量不影响感知精度的前提下降低Transformer的计算复杂度节省车端算力成了学术界和工业界普遍关注的问题。为了解决这个问题可以借鉴使用传统CNN中的模型压缩技巧来降低计算复杂度比如剪枝深度学习模型可以看作是一个复杂树状结构如果能减去一些对结果没什么影响的旁枝就可以实现模型的减小。量化深度学习模型由大量的浮点型 (float) 权重参数组成如果能用低精度类型如int 8替代原有的高精度类型如float 32的权重参数那么模型体积就会大大压缩低位的浮点计算速度会远远高于高位浮点计算速度这也是最容易实现的压缩方式。此外学术界也有一些最新的成果可以供业界参考。使用移动窗口操作 (Shifted window scheme)、具有层级设计的 (hierarchical architecture) 的SwinTransformer可以把计算复杂度大幅度降低到具有输入图像大小线性计算的复杂度且在各种图像任务上也都有很好的性能因而SwinTransformer可以被当做骨干网络来使用。借鉴了DCNDeformable Convolutional Networks可变形卷积网络的思想Deformable DETR将DETR中的注意力机制替换成可变形注意力机制与全局(global)密集(dense)的注意力机制不同可变形注意力机制能够聚焦于特征相关区域并捕获信息从而实现局部(local)稀疏(sparse)的高效注意力机制使DETR范式的检测器更加高效收敛速度也大大加快并且给了业界启发可以将可变形注意力泛化形成了Deformable Transformer。多任务模型除了上述模型压缩技巧外还有一个常用的技巧就是共享权重有点像提取公因数假设模型的每一层都有公用的公因数是否可以提取出来做一次运算而不是每一层都算一次如共享骨干网络等这就是应用普遍的多任务模型Multi-Task learning。其中最出名的多任务模型莫过于特斯拉的HydraNet在一个模型中同时实现了目标检测、红绿灯检测和车道线检测三个任务。特斯拉HydraNets使用多任务模型最明显的优势就是因为共享特征提取的网络参数避免了大量的重复计算效率大大提升。除此外多任务模型还有个额外好处就是有时可以加速网络的训练过程。因为共享网络的感知任务是强相关的比如车道线检测和动态目标检测在训练其中一个任务时共享网络的特征提取能力也加强了对于另外的任务的性能提升也是有帮助的。那有没有可能在训练多任务模型的时候出现不同的任务“相互伤害”“此消彼长”的现象呢据地平线苏治中的线上分享中提到的这种情况是有可能的不过也有技巧办法可以解决。比如某个任务对其他任务伤害很大就可以降低这个任务的学习速率learning rate降低它的权重如果实在无法兼容还可以单独再新建一个模型去训练这个任务比如BEVerse就是在BEV空间内完成的多任务模型感知任务完成了3D目标检测、局部语义地图和运动预测这三个任务且每个模块都达到了当前最优水平SOTA。4.3. BEV算法更复杂、门槛更高相比于传统2D图像检测BEV感知算法会复杂得多尤其是前文提到的云端的3D重建、4D空间的标注、真值生成和模型训练都是之前2D感知任务中所没有的相应地难度和门槛自然也要高一些。不过朱政也提到由于BEV感知进入大家的视野还不太算太久各家还在摸索中有些算法还没那么成熟等到后续量产实践多起来了开源的工具也慢慢多起来了门槛也会慢慢降低“就像四五年前其实2D感知也没那么好做不过现在成熟多了有很多开源的算法工具链也很成熟了门槛就显得没那么高了”朱政说道。5. 未尽之语随着如BEV和Transformer等诸多视觉算法的进展视觉能力的上限也大大提升。诸多业内专家也提到即使量产车辆装了激光雷达在云端进行数据处理时还是会以视觉为主“毕竟相比激光雷达先天的缺点如点云稀疏、缺少语义信息等视觉的优势非常明显加上摄像头出货量更大产业链更加成熟后续升级也更加方便比如可以很容易从800万像素升级到1600万像素甚至现在手机摄像头的像素已经过亿了”一位专家告诉九章智驾。之前九章智驾采访一家进军L2前装量产市场的L4公司的CTO时对方也提到过去L4以激光雷达点云为主、视觉为辅的方案是有其历史原因的因为那时基于深度学习的视觉算法还不成熟能支持深度学习的大算力平台也不成熟不过目前视觉在L4方案中占的分量会越来越重甚至未来有可能超过激光雷达。随着图像转化到BEV空间后也可以直接借鉴激光雷达、毫米波雷达领域的研究方法和进展。如果未来进一步绕过ISP直接将RAW DATA输入到感知模型中可进一步提升视觉在极限条件下极暗和极亮的感知能力可以想象未来视觉能力会有更大的发展让我们拭目以待。