切换城市:北京
更多应用 |
官方:微博/微信
| 车展 | 专题 | 车商通 | 商用车

凤凰网汽车

凤凰网汽车>全媒体>正文

面向BEV感知的4D标注方案 | 万字实录

2023年07月20日 12:31:01
分享到:
来源:车东西

7月4日,地平线「你好,开发者」自动驾驶技术专场在智东西公开课顺利完结直播。专场由地平线4D标注技术负责人隋伟主讲,主题为《面向BEV感知的4D标注方案》。

各位朋友,大家好,非常荣幸有这样一个机会,在智东西公开课和大家做一次技术分享。

今天我要分享的是《面向BEV感知的4D标注方案》。首先会简单的介绍一些4D标注的技术,以及依赖的硬件基础;之后主要介绍两种标注方案:一种是面向采集场景的,主要是在研发阶段,使用的车辆传感器会按照自己的需求进行改装。一个简单的例子就是可以用一些非量产的传感器;另一种是面向量产场景的,例如针对量产数据badcase迭代阶段,这种场景下只能够利用量产车上的传感器,会有一些限制;最后,我会介绍一下地平线4D-Label的云端运营平台,以及4D-Label技术的未来发展趋势。

01

4D-Label技术简介

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

首先介绍一下4D-Label技术。4D主要就是3D空间和时序。以BEV为代表的感知技术,典型的特征就是输出的空间从2D的透视图像转换到了3D空间。原先都是在图像空间里,输入的是图像,输出的也是2D图像像素空间的信息,也就是所见即所得。但BEV感知技术输入的是2D的图像或者是2D的video,输出的是3D空间的感知结果,通常是以车体坐标系之下的一些3D静态或者动态的结果。对于BEV感知,真值数据的生成是非常关键的环节,因为标注的空间需要从2D透视图像空间转换到3D空间。其中,考虑到时序动态物体,需要用到一项很重要的技术就是4D重建技术。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这次技术分享涉及到的一些感知任务,大致可以分为三类:第一类是静态感知。静态感知的输出形式,实际上越来越像局部的高精地图,包含物理层,逻辑层以及半动态层。其中物理层主要是路面连续要素如车道线、路面离散要素如路面标识符,空中静态要素如灯牌,半动态层主要是像锥桶这类容易被移动的物体。逻辑关系主要是车道链接关系,以及道路元素和交通灯的关联关系。动态感知主要是运动车辆和行人,包含检测、跟踪、预测,此外还有一些速度、加速度的属性,现有的一些端到端的感知框架,可以直接在同一个网络完成以上所有感知输出。还有一类任务就是通用障碍物感知,主要是针对场景中的非白名单的物体,目前业界主流的的感知任务就是Occupancy和Ocupancy Flow ,这类任务的基本原理是将空间划分成规则的voxel, 预测每个voxel的被占据情况以及每个voxel的速度,本质上是通过几何的方法,而非语义的方法实现对通用物体的识别。今天我们主要就是针对这三类任务,来介绍一些标注方案。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

4D-Label整体的技术路线,无论是面向采集场景的多模方案还是面向量产数据的纯视觉方案,都是一致的。整体的思想就是:首先是采集数据,之后进行点云或者Object级别的4D重建。在得到4D重建空间的基础之上,采用人工的方式通过3D 标注工具进行标注和质检,之后完成真值数据的发版。随着人工标注数据越来越多,可以在云端训练一些大模型,用于辅助标注,提升标注效率,降低标注成本。当云上的数据规模累积到一定的程度,云上模型的性能会大幅度提升。此时,大部分的标注任务都可以实现自动化标注。

此外,为了进一步提升标注的质量和自动化,我们会设计一些自动质检的策略。比如说,采用多传感器的交叉验证,在2D图像上利用大模型的预刷,得到一些标注结果,同时和3D空间的标注结果进行对比,去除差异较大的数据,只保留一致性好的标注数据作为真值,从而保证真值数据的质量。通过大模型预刷,目前我们可以通过这种策略可以节省80%以上的标注人力,甚至有一些像动态物体的标注,可以实现完全自动化。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

4D标注涉及到的硬件基础,首先就是传感器的布局。在L2++以上的自动驾驶方案里面,通常采用周视+环视的布局方式,构成了两层360度成像范围。如果是面向采集场景的采集车,一般会在车顶安装Pandar128 Lidar用于标注。

在得到改装的车辆之后,还要进行传感器之间的外参标定和时间同步,用来实现不同传感器之间数据的时空一致性。涉及到的外参标定主要有Lidar和camera之间的标定,以及GPS、IMU和Vcs坐标系之间的标定。标定的方式可以分为两种,一种是工厂标定,一种是在线标定。工厂标定,是在出厂时进行的一次比较全面和系统的标定,通过特定的标注工具,得到高精度的标定结果,但是无法频繁地进行标定。在线标定,是利用一些端上的感知结果,进行外参标定,在线标定可以高频次进行,能够有效地保证传感器精度的下限,例如当传感器因为抖动而发生位置变化的时候,在线标定可以获取最新的标定结果。在实际过程中,这两种方式我们都会使用,工厂标定得到传感器的外参之后,通过在线标定做实时或者定时更新。

在得到外参标定之后,还需要进行多传感器之间的时间同步,用于保证不同传感器之间准确的数据的关联关系。在我们方案里,采用的是11V图像同步曝光,时间偏差小于5ms。

另外,介绍一下我们的方案里面涉及到的一些数据格式的定义,这里涉及到两个基本的数据概念。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

第一个数据概念是Clip。Clip是一段数据视频,可以是固定的长度或者固定的空间距离。比如说,在量产的时候,可以设定Clip的长度是15s。在采集模式下,可以采用空间距离,限制它为300m的局部片段。每个clip都包含多个传感器的数据。例如在采集模式下,clip包含Lidar点云数据,11V的图像数据,以及GPS、IMU、轮速计等所有传感器的数据。

第二个数据概念是Site。Site是一个空间的物理坐标点,可以理解成是一个空间的GPS点。这个空间位置中具有唯一的特性,一个Site可以包含多个经过它的Clip。举个简单的例子,把路口中心点定义成一个Site,就可以通过GPS范围来筛选出所有经过该路口的Clip数据。

02

面向采集场景的多模标注方案

上面是一些4D-Label的简单的技术简介。接下来,我会介绍两种方案:一种是面向采集场景的多模标注方案,另一种是面向量产的纯视觉方案。多模标注方案在量产感知传感器基础之上增加了Pandar128雷达。面向量产的标注方案主要是采用量产传感器采集的数据进行标注,我们的方案是纯视觉感知,因此只用图像信息(结合惯导、轮速计等)进行标注。对于一些有Lidar的量产方案,可以将Lidar利用起来,以减少动态标注的难度。

首先是多模的方案。我们按照这几种任务,分别来介绍一下标注的过程:

我们按照静态、动态和通用障碍物三种任务分别介绍一下多模标注方案。

首先是路面静态要素的标注。路面静态要素的标注,本质上是对路面进行建模,也就是局部的建图。在我们的方案里面,采用了单趟重建和多趟聚合的方式。这种方式,一方面可以提升建图效率,平摊标注成本;另一方面也能保证建图的完整性,提升召回以及远距离的真值。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

介绍一下具体方案:首先利用Pandar128采集的数据,结合IMU和GNSS数据,做单趟重建,得到单趟的点云地图;每一个clip都对应一个点云地图,之后把位于同一个Site的所有clip的点云地图收集起来,并建立clip之间的关联关系,确定联合优化的范式,将多个clip的点云地图进行聚合,得到完整的局部地图。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

在我们的方案里面,需要同时满足城区、高速、还有泊车三个场景的建图。这些环境都存在非常大的挑战,针对单趟局部建图,我们做了一些的优化。例如高速场景的初始化,很容易因为速度过快、环境单一、特征约束不足而失败。我们方案引入了语义信息,来提供更加准确的Lidar关键点的对应关系同时也采用轮速计和GNSS这样的多传感器的数据,来辅助初始化。经过这些优化之后,可以将初始化的成功率提升到98%以上,单趟的重建精度可以达到厘米级(和高精度的Novatel进行评测)。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

在得到单趟重建之后,为了提升局部地图的完整性,提升路面元素的召回,需要对多趟clip重建的结果进行聚合。多趟聚合的核心点在于位置重识别,也就是SLAM里面的回环检测。回环检测的关键在于提供feature层面的对应关系。但是,因为这个场景里面比较单一,像高速场景或者是路口场景,能够有效识别的特征并不是很多,容易导致回环检测失败,或者造成比较大的偏差。

针对这些问题,我们对聚合做了一些优化:首先和单趟重建一样,引入了一些语义信息,能够得到一些路面和标识牌这些显著的特征,利用语义信息引导进行匹配;另外,也采用了一些learning的方法,得到的一些关键点,能够在一些极端环境下,提供更鲁棒的匹配结果。通过这两种策略,可以使多趟重建的成功率达到90%以上。下面这个demo就是一个全局聚合之后的局部地图的效果,可以看到,由于建图的精度足够高,lidar intensity图上路面的元素结构特别清晰。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

Lidar的反射率会对材质敏感,当遇到特殊材质、路面破旧或者有积水的情况,会导致intensity图上路面要素不清晰,难以识别,另一方面Pandar128的intensity本身就需要标定,同一台Lidar传感器,在跨天或者跨地点的时候,会出现Intensity不稳定的情况。为了提升标注的召回,我们的方案里引入了语义图以及纹理图,用于提供更多的信息(见上图)。

纹理图,主要是通过Lidar和视觉的外参标定,实现了Pixel -level的融合,最终得到路面纹理的重建结果,纹理图像能提供的信息非常丰富,理论上只要具备行驶条件的场景下的数据,纹理图像都能进行标注。和纹理图一样,语义图是用采用2D图像的感知结果,通过Lidar-camera的融合得到的,引入感知结果可以处理一些弱纹理的情况。

在标注的时候,我们将三种不同模态的数据投影到一个平面上得到一幅BEV空间的大图,通过人工标注的方式得到真值数据。由于投影的过程保留了高度信息,因此标注的结果可以利用这些高程信息得到3D空间的数据。

当积累一定的量的数据之后,我们利用这些数据训练一个云端大模型用于辅助标注。模型采用了我们自己的一篇工作MapTR,输入是三种模态的大图的信息,输出的直接是实例级别数据。每一条车道线都会表示成有序的点列,这样就节省了很多的后处理。这些标注的结果通过简单的处理就可以得到训练样本。后续我们也会尝试采用MapTR直接标注逻辑层。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这是我们通过多模的方案,做的一个标注案例。这个案例里面有三段clips,左上角不同颜色的轨迹代表不同的clips。通过三个clips的聚合,保证了路口的完整性。因为在有些路口比较大的情况下,单趟的采集和重建,不能保证这个路口能被完整的重建出来。通过多个Clip聚合的方式,可以保证路口的完整性,同时也能满足远距离感知的真值需求。

此外,通过聚合的方式,也可以平摊clip的标注成本。因为聚合之后,一张BEV大图,只需要标注一次,就可以生成所有clip的真值。我们采用将标注的真值投影到图像空间,计算重投影误差的方式对多模的真值进行评测。我们的方案可以做到重投影误差小于3个像素。

我们的方案相较于HDmap定位生成真值的方式在多个方面具有优势。首先是可扩展性强。图商的高精地图,在建图的时候,会采用价格高昂传感器,成本很高,可扩展性比较差,体现在现在高能地图的覆盖率并不是很高,尤其是在城市地区。我们的方案虽然是基于采集车,但是也需要考虑采集车队的可扩展性,所以我们采用的是一般精度的传感器。另外,图商的地图在建图主要目的是用来做定位导航,因此需要做完整的建图,而4D-Label的首要目的是用来做标注,感知数据首先要考虑的是质量、数量和多样性,因此所以不需要做完整的地图重建,甚至不需要做地图的维护,只需要在一些区域里面做采样性地重建,就能够满足真值多样性的需求。

这是第一个不同点,第二点不同的是图商的地图,受鲜度的影响,地图更新比较慢。这样会导致在生成真值的时候,需要投入大量的人力资源,去识别地图和实际场景不一致的问题。而4D-Label大部分情况都是即建即用,不需要考虑鲜度的问题。

此外,定位精度也会存在差别。现在基于视觉感知的的高精地图定位方法,横向误差大概是在10-20cm左右,纵向误差可能会到30-40cm以上。这样的精度,偏差已经大于一根车道线,没有办法满足真值精度的需求。而4D-Label这种方法,不需要考虑全局的定位精度,只需要保证局部的里程计精度,所以它的精度会比较高。横纵向误差都能够到10cm以下。这就是图商HD Map和4D-Label的一些对比。总而言之,4D标注的首要目标是满足感知的真值需求,所有的方案设计都应该从围绕满足真值数据的数量、质量和多样性。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

刚才讲的是行车。在泊车场景下的标注,底层的建图方案基本一致。唯一的区别在于地库泊车场景下,没有GNSS信息,无法采用多趟重建+全局聚合的方式。因此在泊车场景下,我们采用全场景建图的方式,将采集的数据进行完整的地图重建。针对建图精度提升的优化策略与行车也基本相同,主要是通过Lidar-seg语义的信息,做了一些约束。泊车场景的重建的精度,能够达到4-5cm。我们主要是通过人工构造回环的方式进行评测。在标注的时候,我们也开发了相应的预刷大模型。像地库位点、限位器、库位角点还有墙壁的检测,现在都是通过大模型预刷的方式来进行。

以上介绍的是路面的静态要素的标注,接下来介绍动态物体的标注。动态物体的标注,采用的Lidar+视觉后融合的方案。主要的过程是,首先有一个Lidar检测的大模型,对输入的Pandar128的点云数据进行感知,得到每帧点云上的3D物体的检测框。之后采用传统的卡尔曼滤波的方式,对不同帧之间感知结果的跟踪,得到每个物体的跟踪结果,从而可以获取每个物体在时序上的一条完整轨迹。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

通过利用Lidar SLAM获取的自车轨迹,可以将每个运动物体投射到全局坐标系之下,从而得到全局的轨迹。之后,对这些运动物体的轨迹做进一步的优化,比如说轨迹的平滑性,还有动力学约束,能够得到一些更加平滑和准确的轨迹。得到运动物体的轨迹之后,就可以得到其所有信息,包括track ID,预测的信息,速度和加速度等属性。拿到这些信息之后,就可以生成动态感知任务的真值,像检测、预测,还有端到端直接估计速度、加速度的属性。

4D标注过程在云上进行的最大的优势就是可以利用未来的信息来做标注。也就是说,一个运动物体可以用其未来的信息来辅助当前的标注,也因此能够得到比较高的一个精度或者召回。我们前面讲到,视觉和Lidar之间会有时间的同步,而视觉11V的图像是同时曝光的,它和Lidar之间的扫描会存在一个时间偏差。利用时间同步的信息和轨迹信息,可以把物体的运动信息插值到任何一个时刻,从而得到每个时刻的真值。例如当某些Lidar帧上出现漏检的情况,可以通过时序轨迹差值的方式补充在该帧上的结果。

为了进一步提升真值的质量,我们采用2D预刷大模型的方式,和3D插值的结果进行对比,实现自动质检。只有3D投影的结果和2D有比较高的overlap,才会被当作高质量的真值保留下来,否则会被丢弃掉。这样做并不会影响真值的的效果,因为检测任务中每个训练样本是物体的object,而不是一幅图像。所以,即便在同一个样本里,一幅图像或者一帧点,有部分的object没有被完全准确标注出来, 也并不影响最终的训练任务。一个时刻的图像,如果能保证里面有60% -70%的真值是准确标注的,就能够满足模型训练的需求。这种投影的方式还有一个用处就是将2D感知的属性赋予3D标注结果,例如车辆的车门开合、车灯颜色等,很难通过Lidar识别的信息,可以通过2D图像获取。

接下来介绍其它静态要素的标注,驾驶场景里面的红绿灯、交通牌和锥桶。这些物体的标注方案和动态物体基本是一致的,主要区别在于两点:3D空间bounding box的获取方式以及跟踪方式。在这里我们以锥桶的方案为案例进行介绍。

我们的主要的路线:首先是有一个Lidar分割的大模型,利用Lidar的语义信息,提取锥桶的潜在3D proposal,但这里面可能会存在大量的噪声;之后利用时序的信息对2D锥桶检测结果进行跟踪和关联;最后利用2D锥桶和3D-proposal做关联,去除一些噪声。可以看得出来,最终的标注方案,实际上是比较依赖于2D锥桶检测大模型,它的准召率也依赖于2D锥桶大模型。最后,通过2D和3D交叉验证的方式,得到锥桶的标注结果。我们的方案可以实现锥桶标注的准召率高于95%,测距误差50m范围之内小于5%。

这个demo展示了两个场景下的一些真值标注的效果,一个是泊车场景下,一个是行车场景下。对于一些2D检测出来,但是3D缺少的情况,可以采用标志为 ignore的方式,不参与训练。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

最后,介绍一下通用障碍物的自动标注,其实就是驾驶里面的Occupancy和Occupancy flow的感知任务。Occupancy反映了场景中动静态物体的占据情况,它将空间划分成均匀的体素(voxel),有物体占据的地方标志为1,没有物体占据的地方标志为0。此外,每个voxel还有一个速度的矢量信息,表示voxel的运动情况,即Occupancy flows。Occupancy和Occupancy flow实际上是对场景进行4D重建, 它主要的优势就是可以识别场景中的一些通用的、非白名单的障碍物,像一些散落的石块、散落的不规则物体、还有像宠物、逆行车等。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

现有的Occupancy也有一些真值生成方案,还有一些公开数据集,今年CVPR举办了Occupancy的竞赛,也发布了数据集。但是现有的这些方案主要的问题在于过多地依赖了语义信息,例如在将场景分成动态和静态的时候,会通过3D检测的方式来进行的,这就引入很强的语义信息。实际上,在真值生成过程中,过于依赖白名单物体,就会导致实际上生成的真值,并没有办法真正发挥通用物体检测的本初目的。

针对这种情况,我们对Occupancy的方案进行了一些改进。主要思路是在整个过程中尽量减少对语义的依赖。在动静态分离的时候,并不是依赖于白名单信息,而是利用几何信息进行运动分割。分割完之后,将静态场景和动态场景分而治之,静态采用前面介绍的静态语义建图的方式来得到静态的点云;动态的话,主要采用Scene Flow或者ICP的方式,来进行动态点云的配准,最终得到整个场景的4D点云。同时,在生成每帧图像的时候,我们也会做图像和3D结果的cross check,最后来生成真值。

下面是一些案例,这个场景里面有很多的障碍物,像摆放的不规则、临时的红绿灯,里面还有只宠物狗、行人推的婴儿车。像这只宠物狗,能够比较好的识别出来。还有一些不规则的,像放在十字路口的临时红绿灯,也能够比较好的识别出来。我们针对Occupancy真值的性能做了一些定量的评测。针对50cm×50cm这样的小物体,准召率是高于92%。

03

面向量产场景的纯视觉标注方案

接下来,我介绍一下面向量产场景的纯视觉标注方案。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

纯视觉的标注方案,主要是利用视觉加上一些GPS、IMU和轮速计传感器的数据进行动静态标注。当然面向量产场景的话,不一定非要是纯视觉,有一些量产的车辆里面,会有像固态雷达(AT128)这样的传感器。如果从量产的角度做数据闭环,把这些传感器都用上,可以有效地解决动态物体的标注问题。但是我们的方案里面,是没有固态雷达的。所以,我们就介绍这种最通用的量产标注方案。

纯视觉的标注方案的核心在于高精度的pose重建。我们采用Structure from motion (SFM) 的pose重建方案,来保证重建精度。但是传统的SFM,尤其是增量式的SFM,效率非常慢,计算复杂度是O(n^4),n是图像的数量。这种重建的效率,对于大规模的数据标注,是没有办法接受的,我们对SFM的方案进行了一些改进。

改进后的clip重建主要分为三个模块:1)利用多传感器的数据,GNSS、IMU和轮速计,构建pose_graph优化,得到初始的pose,这个算法我们称为Wheel-Imu-GNSS-Odometry (WIGO);2)图像进行特征提取和匹配,并直接利用初始化的pose进行三角化,得到初始的3D点;3)最后进行一次全局的BA(Bundle Adjustment)。我们的方案一方面避免了增量式SFM,另一方面不同的clip之间可以实现并行运算,从而大幅度的提升了pose重建的效率,比起现有的增量式的重建,可以实现10到20倍的效率提升。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

上图展示了这就是刚才介绍的两个重要模块WIGO和Parallel SFM。第一个是多传感器融合算法,提供初始化的pose,第二个是并行的SFM重建算法。WIGO的Relative Translation Error (RTE) 指标能到2.5%,Relative Rotation Error (RRE) 能到0.8deg/100m。引入视觉观测之后,Parallel SFM的 RTE指标可以降低到0.5%,RRE指标可以降低到0.2deg/100m。(所有的指标都是和Lidar Odometry的结果进行比较)。

在单次重建的过程中,我们的方案也做了一些优化。例如我们采用了Learning based features(Superpoint和Superglue),一个是特征点,一个是匹配方式,来替代传统的SIFT关键点。用学习NN-Features的优势就在于,一方面可以根据数据驱动的方式去设计规则,满足一些定制化的需求,提升在一些弱纹理以及暗光照的情况下的鲁棒性;另一方面可以提升关键点检测和匹配的效率。我们做了一些对比的实验,在夜晚场景下NN-features的成功率会比SFIT提升大概4倍,从20%提升至80%。

得到单个Clip的重建结果之后,我们会进行多个clips的聚合。与现有的HDmap建图采用矢量结构匹配的方案不同,为了保证聚合的精度,我们采用特征点级别的聚合,也就是通过特征点的匹配进行clip之间的聚合约束。这个操作类似于SLAM中的回环检测,首先采用GPS来确定一些候选的匹配帧;之后,利用特征点以及描述进行图像之间的匹配;最后,结合这些回环约束,构造全局的BA(Bundle Adjustment)并进行优化。目前我们这套方案的精度,RTE指标远超于现在的一些视觉SLAM或者建图方案。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这张slide展示的是一个site的重建案例。左边是Paralle SFM重建的结果,右图是稠密点云的重建结果。稠密点云的重建,用的是传统的MVS的方案,但是结合了语义信息。从右侧的重建结果可以看到,重建出来的语义点云,因为没有Lidar和camera跨传感器之间的时间同步及传感器抖动的问题,就会非常准确,甚至直接可以在点云上,直接标注车道线分割。

需要说明一下的是,我们重建稠密点云,主要目的是来验证一下SFM重建的精度。在实际的标注过程中,并不会做全场景的稠密点云重建。MVS逐像素的重建,重建非常耗资源,成本非常高昂。但是重建出的点云,大部分是非兴趣区域。为了节省成本,提升标注效率,针对不同的感知任务,我们会设计不同的标注方案。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

首先,介绍一下路面要素向车道线、路沿、路面标志等感知方案的真值标注方案。路面静态要素标注的核心,在于3D路面的重建。我们重建方案主要是在SFM的基础之上,用Nerf进行路面重建。我们将路面采用Nerf 进行表达,在进行Nerf查询的时候,输入BEV空间的坐标点,经过编码之后输入到对应的MLP,最后输出该点的高度、RGB以及语义结果。在Nerf初始化的过程中,我们采用Parallel SFM重建提供两类信息:一类是每幅图像对应的相机的pose信息,另一类是一些重建的稀疏的3D点。相机的pose点通过外推,可以得到路面的初始3D形状, 用于作为路面高度的初始化。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

Nerf训练的监督信息主要是两类,一个是RGB,另一个是2D语义图。其中语义信息可以减少弱纹理的影响。训练的过程,也是是一个查询的过程。对空间中的每一个点,送到Nerf里面,会得到一些返回的高度值,返回的RGB值以及语义值。获取到这些信息之后,可以根据SFM提供的pose,投影到不同的2D透视图像和语义图像空间中,形成监督loss,对Nerf进行优化。Nerf收敛之后,同样执行一遍查询过程,便可以得到重建的3D路面结果。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这是重建的一个局部Site的效果。左边这张图是由多个clips构成,每一条不同颜色的轨迹线对应一条clip。通过多个clips聚合,可以得到完整的十字路口的重建效果。为了验证重建的精度,我们把重建的结果投影到原图上,可以看到,投影的一致性非常高。从视觉重建出的结果,没有异源传感器之间抖动的影响,投影到原图和2D的语义分割结果,基本都能对得很齐。我们对路面重建的结果做了一些简单的评测,计算了车道线的重投影误差,精度可以达到误差小于3个像素。

右图是一个局部的放大图,可以看出一些重建细节。从图中可以看到Nerf重建出来的路面的字体,都是清晰可见。重建细节已经非常精致,在这上面来做标注的话,标注的效率也会得到极大的提升。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

另外展示的一个案例,是一个带有坡度的路面的重建。这个坡度是一个重庆的数据,这个坡度大概在10米左右。通过Nerf重建方案,也能够比较好的恢复真实的路面几何。右侧是一幅重建的高程图,从蓝色到红色,表示高度依次增加。可以看到整个坡度,中间是比较矮的,两边是比较高的,也能反映出重建结果的合理性。有了高度信息之后,路面斜坡上的标注的车道线能够和图像上的车道线完美对对齐,右下侧的重投影结果印证了这一结果。

左边这张图展示的是把Nerf重建的结果和卫星图的对比效果。可以看到,整体的空间位置和形状上也都是非常吻合的。标注的初始阶段,我们将路面重建结果导入到标注工具中进行标注,累积到一定数据量之后,可以训练云端大模型进行辅助标注,提升标注效率。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

接下来我们再介绍一下其它静态要素的标注,例如交通牌、红绿灯和锥桶的标注。这三类物体的标注方案基本是一致的,在这里我们以交通牌为例,介绍一下这些静态要素的标注方案。

标志牌的真值生成和路面一样,也是依赖于Parallel SFM提供的相机的初始pose和初始的3D点。与此同时,我们采用2D检测或者Segment Anything Model (SAM) 对在2D图像进行处理,得到交通牌的角点。需要注意的是,获取角点的方式,会比检测结果更加贴合交通牌,举个简单的例子,一个矩形的标识牌,投影到图像上,将会是一个多边形,传统的2D检测方法,无法完全贴合,或导致重建存在偏差。

利用Parallel SFM提供的相机pose以及3D稀疏点,我们可以很容易的3D-2D的对应关系,以及2D时序上的跟踪关系,之后可以构造三角化的优化范式,通过调整3D空间中交通牌角点的位置和朝向,通常还需要确保交通牌的矩形约束,使得角点在2D图像空间中的重投影误差最小。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这是一个标志牌的重建的结果投影到原图的效果。可以看到,投影下来它和自车的运动基本上是完全自洽的,不会因为车辆抖动而存在较大的偏差,多模的方案会存在非常明显的抖动的情况。这也说明了交通牌的3D重建结果和相机pose的恢复都是非常准确的。

右面的图是标志牌的重建结果在3D空间中的一个可视化结果。把3D的标志牌和3D稀疏的点放在一起,可以看到贴合度是非常好的。

对于纯视觉重建方案,我们主要通过两种方式进行评测:一种是评估pose的指标,例如以Lidar odometry为真值评测RRE和RTE指标;另一种是通过计算重投影误差进行评估。前者能够评测重建的pose精度和尺度的准确性,后者能够评测pose精度和3D重建结果的准确性。用这两个评测方式,能够比较合理地对纯视觉重建方案的性能进行评测。我们这种云端纯视觉重建的方案,相比较于目前业界主流的视觉众包建图方案,有更高的重建精度。与多模的方案相比,在精度上完全可以做到多模的精确水平。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

纯视觉的动态标注方案是非常有挑战性的,尤其是单目的纯视觉方案,最大的挑战性在于动态物体的重建,因为运动物体是不符合传统3D多视图几何假设的,所以很难通过传统的方法进行重建。业界的一些单目(周视视角之间的overlap较小)测距的算法,主要是通过三角测距,需要很强的路面几何假设、真实的物体尺寸以及准确的相机pose。真实场景中很难满足的这些假设,导致测距精度受限,能满足的场景也受限,无法用来做真值的生成。

我们采用了采用了一种大模型+轨迹优化的的方式进行纯视觉的动态物体的标注。首先,我们会在云上训练一个容量更大、性能更高的BEV 3D检测的模型。这个模型输入的是11V的图像,输出的是动态物体3D BBox检测结果。利用这个检测结果结合自车提供的pose信息,就可以走前面介绍的多模标注方案,将动态物体投射到统一的全局坐标系之下,进行时序跟踪和轨迹优化,最后来生成检测、跟踪、预测以及各种属性的真值。

与多模的方案相同,优化后的3D检测结果会投影到对应的图像上,和2D检测大模型的效果进行交叉对比,实现自动质检,同时也可以获取更多的属性。

我们从几个方面来解释这套方案的合理性:1)虽然视觉大模型的测距精度很难达到Pandar128 Lidar检测的效果, 但是这两种模型的真值(纯视觉动态标注生成的真值我们称为伪真值)对于端上模型的提升性能是接近的,这个我们已经在实践中进行了验证;2)云上模型具备更好的跨车泛化性,这就意味着可以通过少量的采集车维护这个大模型来满足所有量产车的伪真值需求。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这是我们纯视觉动态标注方案生成的真值的效果。从demo中可以看到,生成的轨迹非常稳定,真值的有效的感知范围是150m,测距的误差小于5%,AP大于90%,同时我们的方案支持不同视角个数(5v/6v/7v/11v)自由切换。我们的方案目前已经在量产中得到应用。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

对于纯视觉的通用障碍物检测也就是Occupancy感知,我们也做了一些探索。我们现在主要是采用Vidar的方案来进行标注,首先通过单目depth估计方案得到每个视角的depth map,之后通过depth来转成3D空间中的点云,生成之后将点云voxel化生成Occupancy的真值。

单目深度估计,我们采用的是DRO的方案,但是针对我们的传感器布局特点做了一些改进。首先,我们的方案是自监督的,我们采用了多视角之间的空间约束和时序约束进行自监督。空间约束的话,其实就是不同的camera之间存在一些overlap,虽然比较小,但是也能够对这个模型的训练产生约束,提供一些尺度信息。时序上的约束,因为有SFM的基础,可以得到比较准确的相机pose,利用这个pose结合depth值,能够实现时序上的自监督约束。需要注意的是,空间约束可以对动态物体进行约束,但是时序约束只能对静态场景的进行约束。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

此外,分享一个训练中的trick,在depth的训练过程中增加仿真数据,可以提升物体边缘不连续区域处的depth性能。我们在真实的训练集中增加了Carla仿真器生成的仿真数据。虽然Carla的数据和真实数据,可视化上相差比较远,但是在实验过程中我们发现,采用了仿真数据之后,可以比较有效提升物体边缘的感知效果。这是我们做的一个实验的结果,在没有使用仿真数据的时候,可以看到物体的边缘是比较模糊的,甚至有些残缺。但采用仿真数据之后,这些物体的边缘就会变得比较清晰,像这个骑车人的边缘会比较清晰。将depth图投射到3D空间中可以看到,没有加入仿真数据的点云效果,边缘处因为过度平滑,导致出现了出现拖尾的现象。而真实的物体边缘的depth并不是连续的,所以它应该有一个非常锐利的效果才是正常的。我们发现采用仿真数据之后,能够让边缘变得更加的清晰,层次分明,不会产生拖尾的情况。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这是我们用视觉方案生成的Occupancy的真值。这里我们展示两个场景,一个是乡村道路的场景,另外一个是交通拥堵的场景。从demo效果可以看出,生成的Occupancy真值体现的被占据的情况和真实的情况是完全一致的。可以看到,里面这些车辆还是能够比较清晰的识别出来。拥堵的车辆、自车位置和拥堵的障碍物,相对关系也都是对的。我们的方案能够做到在100m之内,测距误差小于8%。

04

4D-Label的标注运营平台

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

介绍完纯视觉的标注方案之后,我们介绍一下地平线的4D标注云端运营平台。

4D标注是数据闭环里面一个非常重要的模块,数据生产和标注是在云上运行,并且其它的模块共同构成一个完整高效的数据闭环系统。从端上数据返回上传到云上之后,会进行同类数据的挖掘,构建数据集,之后开始进行4D标注,得到这些标注的结果之后,进行模型的自动化训练,以及模型的更新。

这里我主要介绍一下云端的标注工具、数据挖掘手段以及数据链路。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

这是4D标注里面的一些静态和动态的标注工具。虽然我们很多的方案可以实现自动化,但是仍然需要可视化和标注工具进行数据质检和编辑。静态标注主要就是路沿、车道线、路面离散要素和灯牌锥这类的要素;动态标注主要是动态物体的检测和跟踪。静态标注工具有基础的功能比如3D可视化、视角转换、3D标注结果实时投影的2D图像等来保证标注的效率和精度。

此外我们还同通过引入一些算法提升工具的标注效率。比如静态标注,因为底层是有重建的相机pose,可以产生时间和空间的关联,标注3D空间的时候,可以实时地看到它在2D上跟图像的对齐效果。同时,也可以在图像上进行编辑,来调整3D空间中的结果。在动态的标注过程中,因为有时序上跟踪的结果,所以只需要少量的人工参与,便能够生成物体在时序上的整条轨迹。如果这个轨迹存在偏差,人工可以进行一些调整,调整完之后,整个系统会自动进行全部的轨迹更新,非常高效。此外,标注工具是基于web端开发的,能够支持千人的并发作业,能够满足大规模数据标注的需求。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

为了实现整个流程的自动化,我们也有一整完善的数据链路工具。我们现在内部正在使用的工具称为Horizon Data Flow (HDFlow)。它主要是通过构建有向无环图把各个任务串联起来,每个处理的任务是一个节点。比如对于4D标注任务,数据的预处理、数据的预刷、4D重建、大模型的预刷和真值质检、模型的发版、人工标注、以及人工质检等这些环节都是任务节点,通过HDFlow可以串联成一条完整数据链路,这些节点可以自动运行。这样的话,就可以大幅度提升整个流程的效率。

现在整个HD Flow支持的一些节点,除了上次提到的,还有训练前的环节如数据挖掘、4D标注、评测集的构建、数据分布的统计,以及训练过程中的一些闭环像训练数据的打包、模型训练、模型发版和模型评测。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

针对某一种badcase,为了快速的收集训练数据,我们在云端开发了多种数据挖掘工具。例如以图搜图,可以针对某些特定的案例,采用模型来提取图像的feature,在历史数据里面进行搜索得到相似的训练数据;以文字搜图以及以视频搜视频。其中,以视频搜视频和以图搜图的区别在于可以增加一些时序上的线索,用于一些时序感知任务的数据搜集。此外,还有一些工况大模型,可以用模型打tag或者进行预刷。我们的方案可以根据预刷的结果来设置一些规则来进行数据的挖掘。比如说,在得到行人的检测和跟踪结果之后,通过行人轨迹就可以判断行人所处的场景是在十字路口还是在直行道上,是在直行还是在拐弯。通过云端这些数据挖掘方案,我们也可以得到大量需要的数据。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

为了更好的检测针对4D-Label标注的效率和成本,我们开发一整套的看板,从成本、产量、良率、运行效率、数据的有效性等各个维度进行观测。通过看板我们也可以看到真值生成的地点分布、场景分布以及时间分布等,这些分布对真值尤其是静态真值非常有价值。

同时,我们也构建了完整的数据血缘,从数据返回到标注到模型更新,我们可以准确的追踪每一批数据在中间的各个环节的数据的使用率和处理情况,通过数字化的方式对整个数据运营的成本进行更精细地把控和优化。

05

4D-Label发展趋势

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

接下来,我来介绍一下4D-Label技术后续的发展趋势。

首先介绍一下4D-Label和数字孪生或者数据仿真之间的关系。4D-Label一个重要的模块,就是对场景进行4D重建并且得到结构化的信息(即标注的动静态真值)。数据仿真的核心模块在于场景库的构建。得到大量的场景库之后,根据一定的规则进行新场景的合成,例如得到某个场景之后,把场景里面的车辆、运动物体,进行擦除、添加和编辑得到新的场景,并通过通过对新场景的渲染得到训练样本,也可以同时拿到结构化的数据来进行各种仿真,包括规控的仿真,感知的仿真等。所以,4D-Label相当于是数据仿真的一个重要的素材库。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

通过数据仿真,我们可以解决很多的问题。而且相比较于传统游戏引擎的仿真在真实感上会有有更多的优势。从这幅图左侧展示的是一个传统游戏场景的仿真,它的场景是通过图形学的方式直接构建的,在真实性上和真实场景相差很多。右侧展示的一个最新的Unisim(CVPR2023)方案,是比较好的走通了场景重建、合成以及渲染的流程。也就是说,它所有的素材都是从真实场景里面重建出来的,并且通过神经网络的方式进行渲染,所以它的可视化的真实感要比传统的仿真器得到的效果更加的逼真。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

仿真数据可以帮助我们解决很多量产中的实际问题。举两个例子,一个是智能驾驶场景中的痛点的问题—corner case的收集问题。在真实场景里面,像驾驶场景里面的翻车,高速路上出现的宠物或行人,这些场景的数据非常难以采集,成本非常高。通过数据合成的方式,大规模地来生成这样的一些训练样本是一种非常有效的解决方式。这里我举一个2D的案例,检测在路上发生事故的车辆,这在实际中是很难采集的。但是当有了这些前景(翻车)素材之后,就可以通过简单的图像编辑技术来得到真值。在实际的验证过程中,这种方式也能够非常有效地提升任务的性能。这是一个2D的任务,那对于3D的任务呢?比如说,要做一些锥桶的真值生成,或者是做一些滑动的或者侧翻车辆真值,我们就需要用到3D重建的技术用来恢复它底层的3D几何,包括静态场景和动态车辆,再通过数据合成和渲染的技术,把这些场景合并在一起。相对于全场景的仿真,这种方案实现起来比较容易,效果也比较明显。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

另一要举的例子是跨车的泛化性问题。在3D感知任务里面,车辆的大小尺寸发生变化会导致相机的安装位置发生变化,会严重影响3D感知任务的性能。这就会导致很多车辆的数据不能复用,研发成本居高不下。用数据仿真解决跨车泛化性的问题,其主要是的思路是首先进行4D场景的重建,包括静态重建和动态重建,之后进行不同安装位置传感器的仿真用于生成真值。这样的话,只需要少量采集车采集数据,就可以自动生成不同的传感器布局的真值,实现不同车辆的数据复用,从而降低研发成本。

在这里,我们举另一个简单的案例,采用Vidar合成不同安装位置的车型的真值。当车辆的形状发生改变的时候怎样复用已有的数据。像特斯拉因为是单一车型,所以用了几何矫正(Homography 变换)的方式,把相机归一化到同一平面上。但是,它存在很大的局限性,即只能解决相机是纯旋转的情况,而当相机有高度变化的时候,这种矫正的方法就不能够满足需求了。

如果相机存在高度变化,就需要获取场景准确的depth信息。利用前面提供的Vidar方案,可以获取每个像素的真值。虽然像素的深度值不是很准,但是利用来做视角的变换以及新视角的合成是足够用的。用这种方式,可以用来模拟当传感器发生变化的时候生成新的真值。用Vidar的方法本质上是一种对场景进行显式重建的方式,另一种方案是采用Nerf进行重建,这是一种隐式的重建方法,将场景表达成MLP进行重建、编辑和渲染,相比较于显式的重建效果更优,上面介绍的unisim方案就属于这一类。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

此外,用4D-Label生成的真值,可以做不同环节的仿真测试。4D Label重建得到场景里面动态和静态的结构化的信息之后,可以输入到自动驾驶系统里面,去完成各个模块的仿真,比如规控的仿真、定位的仿真以及感知的仿真。其中最难的是感知的仿真,它需要输入的数据具有高度真实感。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

再进一步的话,我们不但可以做仿真测试,还可以做云端和车端上的感知方案一体化。4D Label真值生成方案,实际上就是在云端走了一套包括感知、定位、决策及规控等完整的智驾方案。只要把上面介绍的多模和纯视觉的感知方案里面一些几何或者rule-based东西都换成大模型,实际上它就是一套云端的智驾方案。

把云上和端上的智驾搞成一体的智驾方案,可以减少维护的成本。云上不但是提供真值数据给端上模型,还可以把知识蒸馏给端上模型。而端上模型可以发掘一些corner case用于迭代云上模型。

试驾<a href=腾势N7:辅助驾驶达到主流水准,正在补上最后一块短板">

另外一个趋势就是大模型会在4D Label标注中发挥越来越重要的作用,从简单的分割检测任务,到更高级的标注任务比如行为预测等,以知识迁移的形式,实现不同任务、不同场景的知识共享。这个是我们用业务数据简单做的一些测试,这是一个SAM分割大模型,能够在2D图像中得到一些polygon的标注,相较于人工标注可以提升5到6倍的标注效率。右侧是我们做的一个BEV视角下的纹理拼接图直接用SAM模型来做分割的效果。在没有经过预训练的情况下,可以看到像路沿以及车道线的分割效果都已经是非常好的。

这就是我今天要介绍的主要内容。最后,总结一下:

1)面向BEV的真值系统的4D-Label,是模型迭代效率和成本一个非常重要的因素。而迭代效率和成本,就是AI产品的核心竞争力。

2)对于 4D-Label,不管是多模的标注,还是纯视觉的标注,高精度、高稳定的定位和建图是标注的基础模块。无论是对于静态标注,还是对于端到端的动态标注,都需要准确的pose。

3)在端上部署端到端模型是实现数据闭环的必经环节。一些重要的后处理任务,会从端上走到云上,成为一些真值标注的方案,甚至会成为云端的智驾方案,也就是我刚才介绍的云端一体的架构。

4)数据仿真合成会是解决corner case的一个非常有潜力的途径,将来一定会成为一个非常重要的智驾模块基础设施。

这就是我今天要介绍的主要内容。也欢迎大家关注我们之后在自动驾驶方面的课程,谢谢大家。

  • 凤凰网汽车公众号

    搜索:autoifeng

  •  官方微博

    @ 凤凰网汽车

  •  报价小程序

    搜索:风车价

网友评论
0人点赞
|
评论0
加载中...

大家都在看

趣图推荐