绑定手机

获取验证码

注册、登录代表你已阅读并同意《用户协议》

取消
当前位置: 首页 > 详情

从数据闭环到 BEV + Transformer,谈谈自动驾驶行泊一体的感知能力

汽车之心行家说 2022-11-30 15:39:00 5302

前言

Nullmax 感知部总监兼计算机视觉首席科学家成二康博士,前段时间做客汽车之心·行家说栏目,就行泊一体的感知能力话题进行了分享。当中,成二康博士就自动驾驶的数据闭环以及虚拟样本生成等数据话题进行了概括性的介绍,并对当前备受关注的 BEV 感知,尤其是 BEV + Transformer 技术架构,从总结和实践两方面进行了简明易懂的阐述。

对于自动驾驶而言,数据具有至关重要的技术驱动作用,通过数据闭环高效收集、利用海量的真实数据,是自动驾驶研发和落地的一项核心能力。

与此同时,在无法充分获得所需真实数据的情况下,大规模地生成虚拟样本也是一种可行的方式。

BEV 视角的感知输出,可以更好地服务自动驾驶的下游任务,关键在于如何从 2D 图像中恢复出 3D 空间的信息。

在 Transformer 到来以后,Attention 机制能够很好地完成 2D 到 3D 关系的架接,BEV + Transformer 成为了一种极具前景的技术架构。

在这些方面,Nullmax 均进行了大量研究工作,并在实际量产项目中已经开始了部分技术的应用。结合这些实践的经验,成二康博士也分享了对行泊一体方案的一些看法。

01

感知算法助力行泊一体的高效落地

2016 年,Nullmax 在硅谷成立,2017 年初在上海设立总部。

经过几年发展,取得了一些不错的量产成绩,目前正在大力推进多个行泊一体项目的落地交付。

现阶段,我们主要的目标就是与 OEM、Tier 1 等伙伴一同合作,为市场提供安全、高效、经济的行泊一体落地产品。

Nullmax 的创始团队出自特斯拉 Autopilot 团队,完整经历了 Autopilot 2.0 的研发落地,在量产方面我们很有信心。

为此,Nullmax 打造了全栈自研的自动驾驶大脑 MAX。从底层往上层来看,它包含了:

1)专门的自动驾驶中间件 MaxOS;

2)中间件之上的上层应用 MaxStack,包括感知 MaxView,以及 Planning 和 Control 相关的上层应用;

3)自主成长系统 MaxFlow,支持上层应用开发的数据闭环;

4)MaxWorld 数据集,其中有部分工作已经开源;

5)车端的 MaxPlatform 以及 MaxCloud 云端系统。

1.png

Nullmax 将行泊一体总结为「一芯两用」,这是一个很热的话题,简单来讲就是用一个域控或者嵌入式平台同时实现这个行车、泊车两大功能。

行泊一体最直观的好处,就是一体化的同平台系统的成本会远低于分离式的系统,成本优势极大。

另外,它也可以实现更加高效、稳定、省时的 OTA 升级。关键的是,行泊一体也有助于打造更高的性能和更极致的体验。

因此,行泊一体的方案对于整个系统的感知架构也有着极高的要求。比如,需要处理包括相机、毫米波雷达等多个传感器的输入,需要支持行泊一体中的融合、定位、规划和感知等多个任务。

尤其是视觉感知方面,需要支持 360 度覆盖的相机配置,为下游的规划、控制任务输出目标检测、车道线检测等感知结果。

为此,Nullmax 开发了一套强大的感知架构,它最大的优势就在于可以同时融合时间、空间信息。

简单来说,空间信息指的是多个不同相机以及其他传感器输入的各个空间位置的信息,时间信息则是指的在连续时间上进行观测计算,从而实现更稳定的环境感知。这个架构可以很好地支持多传感器、多任务的协同工作。

在整个感知架构的设计中,Nullmax 对 BEV + Transformer 的技术架构进行了充分的考虑,在技术研发和项目落地两方面同步进行了大量工作,取得了不错进展。

02

 数据闭环及混合数据增强

为了应对自动驾驶的长尾问题,Nullmax 打造了高效的数据闭环,支持行泊一体方案的大规模应用,并且探索了大规模生成虚拟样本数据,运用混合数据增强方法解决少见目标检测方面的相关难题。

这样的话,可以最大程度、最高效率地在真实场景中收集和利用困难样本数据,同时在真实场景数据难以满足需求的情况,通过合成虚拟样本来解决数据难题。

1、数据闭环

Nullmax 的数据闭环,名为 MaxFlow 自主成长系统

它包含了车端、云端两大部分,车端源源不断地获取数据,云端对数据进行分析,完成获取、清洗、标注、训练以及模型验证的整个闭环。

2.png

它可以为感知、融合、决策、定位、测试等环节提供全方位的帮助,实现持续不断的迭代升级,驱动自动驾驶的整个系统自主成长。

特别是在感知层面,尤其是视觉感知当中,自主成长系统发挥了巨大作用。

数据闭环的数据,主要源自两个方面。

一是以 offline 的方式,在收集全量数据后,通过 data filter 机制筛选出感兴趣的数据,然后送到云端参与训练等任务。

二是以 online 的方式,在车端运用 trigger 机制,通过影子模式等方法,自主地收集一些感兴趣的数据,包括困难样本。

影子模式,简单来说就是通过对比人类司机和自动驾驶系统的驾驶差异,获得一些数据,提升自动驾驶系统的驾驶能力,从而逼近甚至是超越人类驾驶水平。

对于感知层面来说,也是如此,比如 AEB 误触发,那么就可以在误触发的时候,将视觉传感器的数据进行回收,送到云端分析处理。

这是一种相对被动的学习方式,此外系统也包含一些相对主动的学习方式,比如通过不确定性等进行样本的筛选。

3.png

在线的 trigger 方面,包括有人机一致性、时序一致性、多传感器一致性、多算法一致性、指定特殊场景等不同类型的设置。

如果遇到变道失败、传感器之间结果不一致、算法结果不一致等等情况,那么就会触发相应数据的收集。

举个例子,一个障碍物在时间维度而言,既不可能凭空消失,也不可能凭空出现,这就是时序的一致性。如果一个行人在连续轨迹上消失了,那么就是典型的漏检。

另外一个例子,就是同样的一张图片,用不同的算法进行一致性的校验。

比如 freespace 和障碍物相互校验,可行驶区域当中不应存在障碍物,否则的话就是漏检。

此外,运用多种算法校验来筛选难样本,也是非常重要的手段。

比如行驶在路面的车辆,如果只检测出车轮,但没有检测出车辆,那么极有可能这是一个比较难的样本,比如涂装车、挖掘机、平板车等等罕见的车辆。

这种方法也可以用来筛选一些极近距离的大车,比如油罐车、拖车、挂车等等少见场景的数据。

同样的,对于行人也可以通过头部的检测和身体的检测,来校验检测结果,筛选困难案例。

2、混合数据增强

对于自动驾驶而言,除了通过数据闭环在真实场景中收集困难样本之外,另外一种获取数据样本的方式,就是大规模的自动化生成虚拟样本。

比如,在 CVPR 2022 上提出的合成数据集 SHIFT,就是通过 CARLA 仿真几乎零成本地生成真值数据。

再比如 Block-NeRF,利用 3 个月收集的数据重建旧金山市的场景,这是另外一种生成数据的方式,通过一些样本的视角来生成其他视角的虚拟图像。

此外,通过计算机图形学和生成式模型相结合,也能够以 Neural Rendering 的方式生成大量的虚拟数据。

在 ICRA 2022 上,Nullmax 同样也提出了一种生成虚拟样本的方式,通过混合数据增强的方法,解决罕见目标检测的难题。

因为对自动驾驶而言,即使专门去筛一些数据,获得的数据量仍可能还是很小。收集一些少见的样本,比如锥形筒相关的场景,其实依然很难。

所以我们当初的想法是,既然拥有大量没有锥形筒的真实场景,那么能不能将锥形筒的 mask(掩膜)贴到这些真实场景图片上面,几乎零成本地自动生成大量少见样本呢?

这就是我们想要通过混合数据增强来实现的目标。

6.png

这当中有两个非常关键的问题,一个是锥形筒 mask 贴到什么位置,一个是怎么贴 mask。

因此,我们提出了一个多任务的深度学习网络,为交通场景提供相应的约束,确保 mask 沿着车道线贴到 freespace 上,而不是车上。

同时,还提出了一个局部自适应的颜色变换,让 mask 能够自动适应每张图片本身的颜色分布。

实验结果显示,对锥形筒这类少见样本来说,如果只有少量数据,检测效果其实比较一般。但是在结合我们的混合数据增强方法后,检测效果可以大幅提升。

我们已经开源相应的 ROD(Rare Object Dataset)数据集,当中包含 1 万多张的数据,分布在不同的道路、天气和光照条件。如果大家感兴趣,欢迎登陆网站下载 https://nullmax-vision.github.io/。

03

 BEV-Transformer 技术架构

在自动驾驶中,BEV(鸟瞰图视角下的感知输出,能够更好地为规划、控制等下游任务服务,因此 BEV 感知也成为了当前自动驾驶研发的一个重点方向。

具体来说,相机数据的 2D 图像空间,与规控等下游任务的 3D 车体坐标系,是两种差异巨大的空间表征方式。

它们就像是两个不同的世界,图像空间的感知结果需要解算到车体坐标系中,才能被下游的任务使用。

而 BEV 感知可以直接将图像上的信息解算到 BEV 空间下,置入车体坐标系之中,满足下游任务的开发需求,并且能够更好地进行空间、时间的融合。

在这里,我们可以先通过一段视频直观地了解 BEV 视角下的感知输出。这段视频的主体画面是 360 度覆盖的四颗周视相机的图像,右侧则是 BEV 视角下的障碍物检测的样例。

7.png

可以看到,BEV 视角的感知输出能够非常直观地为下游任务服务。

在行车场景下,自动驾驶系统需要完成 BEV 视角的环境感知,而在泊车场景下,同样也需要对障碍物、车位等目标在 BEV 视角下完成感知任务。

因此,设计一个 BEV-AI 的技术架构,对于行泊一体方案来说很有意义。

这个架构的输入,是多个相机拍摄的图像,输出则是自动驾驶的一系列任务,当中包含了动态障碍物的检测和预测,静态场景理解,以及这两个基础之上的一系列下游规控任务。

对视觉来说,实现这个目标的挑战就在于:图像是二维的平面空间,但是 BEV 空间以及自动驾驶的车体坐标系是三维的立体空间,如何才能去实现图像空间和三维空间的影射?

1、BEV-CNN 的技术架构

在传统的 CNN(卷积神经网络)层面,天然的想法就是去做纯粹的端到端方法。输入一张图片,通过 CNN 的 encoder-decoder,直接输出三维结果。这是一个比较暴力的方法,没有利用相机参数。

但是,相机对三维世界的成像遵循着一些原理,相机参数其实也能派上用场。

比如,三维世界中的一个点,它可以通过相机的外参投到相机的三维坐标系中,然后再通过透视变换投到图像平面,完成 3D 到 2D 的转换。

一般来说,图像的空间是 2D,世界坐标系是 3D,2D 到 3D 的转换不可逆。如果想进行可逆的变换,这种操作被称为 lift。

在 CNN 当中,利用相机参数和成像原理,实现 3D 和 2D 信息关联的方法可以总结为两种。

一种是在后端,利用 3D 到 2D 的投影,即一个光心射线上面所有的 3D 点都会投影到一个 2D 像素上,完成 3D 和 2D 信息的关联。

8.png

另外一种是在前端,让每一个像素学习三维深度的分布,把 2D 空间 lift 成 3D 空间。这当中又可以细分为两种方式,一种是隐式的学习,另一种则是显式估计每个像素的深度。

这些利用相机参数的 CNN 方法中,知名的 OFT 算法就是前一类方法的代表性工作,无深度估计,三维空间的坐标直接通过投影完成 3D 和 2D 的影射。

后一类方法中,典型的算法有 LSS,进行隐式深度估计;以及 CaDNN,进行显式的深度估计。

LSS 对每个点都要学一个特征,同时隐式地学习该点深度的概率分布,完成 2D 到 3D 的 lift。

而 CaDNN 则是学单个像素的三维估计,显式地去做深度估计,同样也可以完成 2D 到 3D 的 Lift,完成 3D 输出空间和 2D 图像空间的关联。

2、BEV-Transformer 的技术架构

在有了 Transformer 之后,它天然提供了一种机制,可以利用 Transformer decoder 中的 cross-attention(交叉注意力)机制,架接 3D 空间和 2D 图像空间的关系。

这一点上,BEV-Transformer 和 BEV-CNN 的架构比较类似,也是通过叠加 3D 信息和 2D 信息的关联来完成感知的任务。

BEV-Transformer 的实现方式也可分为两类,一类是通过 cross-attention 机制,在后端加入 3D 信息和 2D 特征的关联,它可以进一步细分为利用相机参数、不利用相机参数两种方式,比如 Nullmax 提出的 BEVSegFormer,就是不利用相机参数的形式。

另一类是在前端,通过 Frustum(视锥)的方式,2D 特征上面直接加入 3D 信息,PETR 的一系列工作就是这方面的研究。

9.png

此外,我们也可以在 BEV + Transformer 的基础上,加入 temporal(时间)的信息。

具体来说,就是利用 temporal 当中的 ego motion(自运动)信息。

比如,三维世界通过 ego motion 在后端去关联;或者在前端,通过两个相机坐标系之间的 ego motion 将 3D 信息叠加进去,然后在 2D 特征上面去做任务。

10.png

以上是 BEV + Transformer + Temporal 的一些总结,下面我们可以看一些具体的例子。

经典的 DETR3D,就是第一类的 cross-attention 方式,使用相机参数关联 3D 信息和 2D 信息。三维上面的一个点,通过 cross-attention 来到 2D 特征上面。

另一个例子是 BEVFormer,它的 cross-attention 机制也是利用相机参数,并加入了 temporal 信息。

它将 3D 空间中的一个点,通过相机内外参投到 2D 平面上去获取特征,然后通过 cross-attention,在 decoder 中解析出 BEV 特征图。并且利用 ego motion,在 t 时刻去解析 t-1 时刻的特征,同时完成空间和时间信息的交互。

UniFormer 与 BEVFormer 有些相似,也是利用相机参数完成 3D 信息和 2D 信息关联,但 UniFormer 关联的不是 BEV 特征,而是图像特征。

因为 BEV 特征被人为设定为一个小的特征表达,而图像特征视野比较大,因此三维中的一个点,既可以投到当前帧的图像特征上,也可以投到上一帧的图像特征上。利用 cross-attention,UniFormer 既可以索引当前帧的图像特征,也可以索引上一时刻的图像特征。

PTER 则是第二类方式的例子,通过 Frustum 的方式,在前端加入 3D 的信息。每个点都有不同距离的三维信息,但不知道具体的三维信息是什么,所以先叠加一些三维信息将三维信息和二维信息进行关联。

PTER 天然地可以关联时序信息,将当前时刻的相机坐标系通过 ego motion 转到上一时刻的相机坐标系,完成时域信息的关联,这也正是 PETRv2 的工作。

同样的,先利用 CNN 得到 BEV 表达,然后再用 Transformer 来做后续的任务,也是一种可行的方式。BEVerse 就是这方面的例子,在 CNN 中利用相机参数完成 3D 信息和 2D 特征关联,然后通过 ego motion 再去获得 BEV 特征。

目前 BEV + Transformer 的方法比较多,我们对比较主流的几种方式做了一个简单的总结。

当中,有的方法是一个任务;有的是多任务,比如既做检测,又做分割,乃至还有 motion prediction(运动预测)和 planning(规划)

11.png

这些方法的 query 机制也有所不同,既有显式构建 BEV Feature Map,这种 dense query(稀疏查询)的机制;也有轻量级的 sparse query(稠密查询)机制,应用在目标检测等方面。

另外,如何在工程层面去设计形成一个 Memory Bank(记忆库),处理时序层面的信息,也有两类不同的方式。

第一类就是 BEVFormer、BEVerse 这样的机制,Memory Bank 里存 BEV 特征;第二类是像 PETR、UniFormer 的机制,Memory Bank 当中存的是图像特征。

如何设计和高效利用 Memory Bank,在工程中是极有挑战的一项工作。

3、Nullmax 的多相机 BEV 方案

目前,Nullmax 正在开发多相机 BEV 方案,打造 BEV-Transformer 的自动驾驶整体架构。这些工作与前述的工作有所不同,面临一些独特的挑战。

12.png

当中有两个非常关键的问题:一是能否支持任意多个相机,二是能否不依赖相机参数。

此前,Nullmax 提出的 BEVSegFormer 就是当中的一项工作,面向任意数量相机的 BEV 语义分割,为自动驾驶在线实时构建局部地图。

它在不利用相机参数的情况下,可以完成二维图像和三维感知的关联。

具体而言,我们设计了一个 Deformable Attention 模块,在 BEV 上完成了 query 和图像特征的关联,而不利用相机的参数。BEV 的 query 可以生成图像特征上面的一个参考点,以及它的权重、采样点。

在 nuScenes 数据集上,BEVSegFormer 相比于 HDMapNet,效果提升了 10 个百分点。这里播放的视频展示了 BEVSegFormer 在 nuScenes 数据集和 Nullmax 自有数据上的算法效果,当中既包含 6 个相机的效果,也包含扩展到单个相机的效果。

20.png

在 Local Map(局部地图)之外,Nullmax 的多相机 BEV 方案同样还包含了 3D 车道线检测、3D 目标检测等方面的任务。

我们近期在 3D 车道线检测方面的工作之一,就是直接在 BEV 空间进行 3D 车道线的检测。

在 Apollo 数据集上,Nullmax 的 3D 车道线检测方法对比 PersFormer,效果进一步提升。

14.png

这个方法利用 BEV + Transformer 的机制,实现了输入一张图片,输出三维空间的车道线结果。

我们在将这一方法扩展到实际的量产项目中,用于 BEV 上车道线检测的一些工作。

同样的,Nullmax 也将 3D 目标检测的一些工作扩展到了量产应用中,特别是在低算力平台上进行 BEV 视角的检测。

比如近期交付的一个量产方案,就是用 8 TOPS 算力实现 4 个周视相机的 3D 障碍物检测,当中的优化工作,非常具有挑战。

这里第一段视频展示的,正是在一个人流、车流比较密集的复杂路口的 3D 目标检测效果。

15.png

第二段视频,展示在人流比较多的窄巷,当中有大量运动和静止的车辆,以及很有挑战的行人、电瓶车目标,这类中国特色场景下的 BEV 视角检测效果。

16.png

第三段视频,展示的是夜间场景的 3D 目标检测效果。

17.png

在 3D 障碍物检测方面,BEV + Transformer 架构融合多个相机信息,可以带来一些明显的优势。

在多相机的感知系统中,如果进行障碍物检测,比较传统的方案是每个相机单独工作。

这会导致系统的工作量比较大,每个相机都要完成目标检测、跟踪、测距,还要完成不同相机的 ReID(重识别),整个流程变得相当冗长繁杂。

同时,这也给跨相机的融合带来很大挑战,比如截断车辆的检测或者融合。

18.png

举个例子,面对穿越相机视野的障碍物,如果不是 BEV 视角下的检测,而是每个相机单独工作的话,那么会在多个相机的 ReID 等后端任务上带来额外的挑战。

如果技术架构的输出是 BEV 视角,或者车体坐标下的三维感知结果的话,那么这个工作就可以简化,准确率也能提升。

总体而言,Nullmax 目前已经在基于 BEV 的多相机感知方面完成了系列工作,包括 BEV + Transformer 的局部地图、3D 车道线检测、3D 目标检测,以及在高、中、低算力嵌入式平台的上线。

此外,就是通过 BEV + Transformer 实现不依赖相机参数的平台化。我们希望做出的 BEV + Transformer 架构能够适配多个相机、不同相机,以及不同相机的选型、内参、外参等等因素,提供一个真正平台化的产品。

19.png

同时,我们还在进行一些这里没有介绍的工作,包括 BEV 视角下的规划控制,以及支撑 BEV + Transformer 技术架构的关键任务,比如离线的 4D Auto-GT(自动化 4D 标注真值)

在技术方案的落地当中,高效的离线标注十分重要,4D Auto-GT 可以用来完成 3D 信息+时间信息的 3D bunding-box 真值标注,以及车道线、Local Map 等方面的标注,为开发和迭代提供一套高效的工具链。

最终,我们希望完成一套可在车端实时运行 BEV + Transformer 基础架构的整体方案,同时支持感知、预测、规划任务,并在高、中、低算力平台上完成落地。

标签: 行泊一体
本文为汽车之心原创文章,作者:汽车之心行家说,如需转载,请联系授权。违规转载法律必究。
0

0

分享

好文章,需要你的鼓励

参与评论

相关评论(共0条)

Copyright ©2019-2024 深圳市卡尔之心信息科技有限公司 版权所有

备案号:粤ICP备19151757号