如何实现“轻高精地图”的城市NOH?毫末自动驾驶的8大亮点_九章智驾的博客-程序员ITS203

技术标签: NOA  算法  机器学习  计算机视觉  编程语言  大数据  

4月19日,毫末的AI DAY,我没顾上看直播,本来打算会后只发一则“简单的小新闻”,结果呢,一看顾维灏的演讲特别“硬核”,很值得认真读一下。在这次发布会的前后一周,毫末技术总监潘兴也有一次与媒体的沟通,并在分享结束后接受了媒体群访,从演讲到访谈同样是干货满满。

我在朋友圈简单地说评论了几句后,竟然有不少人私信问我“演讲稿在哪里可以看到”。为响应广大读者的需求,我决定将这些干货消化之后,梳理出一些精华发出。本文涵盖的内容包括:

1)毫末的数据智能体系MANA

2)Transformer,发挥数据优势的关键武器

3)在轻高精地图的情况下实现城市道路自动驾驶

4)在决策环节引入深度学习算法

5)L2车辆的收集到的数据如何用于L4

6)可否将各场景的数据“打通”

7)从用户视角对ADAS能力做“分级”

8)开放的商业模式

在写这篇文章的过程中,我多次向毫末市场部的谢海杰请教,也参考并引用了车右智能在去年12月发的文章《毫末智行的感知架构在演进中——Transformer在毫末的应用》及焉知新能源在今年3月份的文章《我们研究了特斯拉、毫末「自动驾驶算法」的秘密》中的大量内容,在此向这两篇文章的作者表示感谢。

一.数据智能体系MANA

01

基本概念

2021年Q4,毫末智行发布了自动驾驶数据智能体系MANA。MANA是毫末以海量数据为基础的一整套数据处理工具,包含了数据标注、算法模型、测试验证系统、仿真模拟工具以及计算硬件。MANA是毫末所有产品进化的核心动力。

MANA体系由TARS、LUCAS、VENUS、BASE四个子系统组成。

其中,TARS是毫末在车端研发的算法原型,包括TrasView(感知),TrasGo(认知),规划决策控制、Map(地图定位),Meta(仿真引擎),更多为车端算法服务。

LUCAS是对算法在应用场景上的实践,包括高性能计算、诊断、验证、转化等核心能力;VENUS是数据可视化化系统,包括软件和算法的执行情况,对场景的还原,以及数据洞察等能力;BASE包括了数据的获取,传输,存储,计算,以及新的数据分析和数据服务。

MANA 感知系统的特点在于 “为全局任务设计了一个提取全局信息的 Neck 网络”。这一点其实是非常重要的,因为全局任务(比如可行驶道路的检测)非常依赖于对场景的理解,而对场景的理解又依赖于对全局信息的提取。

截止目前,MANA已完成超过19万小时的学习时长,其虚拟驾龄已相当于人类司机2万年的驾龄。

02

MANA典型应用

(1)数据标注

数据标注在数据处理的成本中占比极高,因而,通过提高自动化水平来降低标注成本也是各家公司努力的方向,目前,毫末的数据标注自动化水平已经达到了80%。在实现方法上,毫末通过“目标粗定位”和“属性精细估计”两个阶段来进行。

“目标粗定位”阶段的第一个分支采用了高精度3D障碍物检测网络和3D障碍物跟踪算法,对3D目标进行检测和跟踪;第二个分支采用了时空金字塔网络内部的2D空间卷积和1D时间卷积,对3D目标的运动属性进行检测,然后系统再将这两个分支检测的结果进行聚合和分类。

“属性精细估计”阶段会根据物体运动状态分类结果来区分静态物体和动态物体,对不同类型的物体有不同的属性精细估计策略。

静态障碍物的标注相对来说会简单一些,而动态障碍物的标注,除了标静态障碍物必须有的属性,也需要对动态障碍物特有的一些关键属性,比如朝向角、运动姿态、速度等也会再进行详细的标注。

对于动态物体的属性精细估计,包括物体尺寸估计和位姿估计,这也是自动标注的重点和难点。

对此,毫末的做法是:

1)在自车和目标物相对运动的过程中,系统从多角度、多维度对目标物进行观测,然后,有效利用多帧点云提供的时序信息对障碍物进行运动检测;

2)再采用以目标为中心的跨时间点云聚合方法,对这些点云做一次压缩,让其从稀疏点云变成稠密的点云;

3)点云压缩后,利用改进的PointNet网络进行精确的3D框回归,再次对物体的运动轨迹进行全局优化实现位姿的精确估计。

目前,这一套方法已经进入毫末的生产环节。

(2)数据存储

数据存储方面,目前的难点主要有两个:如何降低成本;如何结合自动驾驶的特性进行更好地处理。

为降低存储成本,毫末搭建了数据挖掘的体系LUCAS,该体系从用户回传的海量数据中筛选出价值的数据,然后把这些数据该送标的送标、该训练的训练、该使用的使用、该缓存的缓存。

对这些数据,毫末会按其价值做分级管理——主要是根据数据的新鲜度、需求紧急程度、数据用途等维度,对数据划分热度级别。

比如,对于几个月之前的数据,毫末会对其进行编码并存储在数据库中,而原始数据则存储在成本更低的地方。

比如,毫末会根据自动驾驶对数据的使用需求,对数据进行分类,比如事故类、售后类、接管类、体感类、产品类、研发类等。由于需求不同,不同类别的数据生命周期、实效要求、处理流程、处理成本均不同,会采取不同的策略进行存储。

自动化的筛选手段再加上分级存储策略,数据的存储成本自然会降低。

(3)数据融合

为做好视觉和激光雷达数据的融合,毫末将 Transformer 算法引入到其数据智能体系 MANA 中。

2021年12月,顾维灏在毫末AI DAY 上的介绍,MANA 系统采用 Transformer 在底层融合视觉和激光雷达数据,进而实现空间、时间、传感器三位一体的深层次感知。

不同于目标级的后融合,毫末使用Transformer对图片、点云提取出来的特征向量进行前融合,融合后再通过神经网络进行目标预测。这样既可以解决多相机之间的融合关联,又通过激光雷达有效提升了视觉检测的效果。

二.Transformer,发挥数据优势的关键武器

01

Transformer的定义及优势

Transfomer诞生于2017年前后,它是谷歌为NLP(自然语言处理)设计的算法,这个模型的核心是注意力机制。

所谓注意力机制,大概意思就是,在一句话或者一张图中,transformer会建立起一个词和另一个词、一片段图像(像素)跟其他像素的关系,以判断这些词有什么关系,这两个像素区域有什么关系。

在 Transformer 到来之前,大家一般都是使用基于循环神经网络 RNN 的「编码器-解码器」结构来完成序列翻译。

基于 RNN 的架构有一个明显弊端就是,它属于序列模型,需要以一个接一个的序列化方式进行信息处理,注意力权重需要等待序列全部输入模型之后才能确定——简单理解就是,需要 RNN 对序列「从头看到尾」。

例如:面对机器翻译问题「A magazine is stuck in the gun」,其中的「Magazine」到底应该翻译为「杂志」还是「弹匣」?人类在看到「gun」一词时,会将「Magazine」翻译为「弹匣」,但对机器来说,并不会这么简单。

基于RNN的机器翻译模型需要一步步地顺序处理从 Magazine 到 gun 的所有词语,当它们相距较远时,RNN 中存储的信息将不断被稀释,翻译效果常常难以尽人意,而且效率非常很低。

这种架构无论是在训练环节还是推理环节,都具有大量的时间开销,并且难以实现并行处理。而这个时候,工程师又想到了一个方案,就是在标准的 RNN 模型中加入一个「注意力机制」。

这个注意力机制,源自于人脑的注意力机制。即当人的大脑接受外部信息时,如视觉信息、听觉信息时,往往不会对全部信息做处理和理解,而只会将注意力集中在部分显著或者感兴趣的信息上,这样有利于滤除不重要的信息,从而提升信息处理效率。

当时,谷歌团队赋予这个加入了注意力机制的RNN模型一个新名字:Transformer。

因为引入了注意力机制,Transformer 并不关心顺序,在计算相关性时,每个元素的重要性是根据数据本身的语义信息计算出来的。因此,可以轻松地提取任意距离元素之间的相关性。这样就保证了不管在时序上相距多远,元素之间的相关性都可以被很好地保留。

比如,The animal didn’t cross the street because it was too tired。这里的it到底代表的是animal还是street呢,对于人类来说能很简单的判断出来,但是对于机器(如果用RNN来处理的话)来说,是很难判断的,而Transformer的注意力机制就能够让机器把it和animal联系起来。

在自然语言处理领域取得广泛应用后,Transformer 也被成功移植到了很多视觉任务上,比如「图像分类,物体检测」等,并同样取得了不错的效果。

为什么源自自然语言领域的算法,在视觉上同样适用呢?

主要原因在于:虽然图像本身不是时间序列数据,但可以看作空间上的序列,视觉任务一个关键的步骤就是要提取像素之间的相关性,普通的 CNN 是通过卷积核来提取局部的相关性(也称为:局部感受野),而Transformer 则可以提供“全局的感受野”。因此,特征学习能力相比 CNN 要高很多。

可以说,Transformer尽管并不是给图形处理用的,但它所能揭露的信息内在关系的本质,却比CNN更深刻。

有研究表明,当训练数据集增大到包含 1 亿张图像时,Transformer 的性能开始超过 CNN。而当图像数量增加到 10 亿张时,两者的性能差距变得更大。

简单理解就是,Transformer 在海量数据的处理能力上具有巨大冗余优势。

自动驾驶圈中,最先使用Transformer来做感知算法的是特斯拉,最关键的原因是,特斯拉的数据规模都很大。现在,毫末希望能成为仅次于特斯拉的第二名。

02

Transformer在毫末自动驾驶中的应用

在特斯拉的FSD应用中,Transformer的作用非常有限。其只是利用了Transformer技术在对于图像信息进行“自注意力/Self Attention”全画幅关系的捕捉和跨视角图像信息之间视角转换所必须的“互注意力/Cross Attention”关系的刻画和转化。

但在毫末智行,根据顾维灏在去年12月份的AI Day上所描述的,Transformer不仅仅完成了对于纯视觉信息的BEV的视场角度转化,而且完成了camera和lidar之间异构但互补的传感器信息的融合,即所谓的跨模态raw data的融合工作。

毫末还提出将 Transformer 引入到其数据智能体系 MANA 中,并逐步应用到实际的道路感知问题,比如障碍物检测、车道线检测、可行驶区域分割、交通标志检测等等。

(1)用Transformer做时间和空间上的前融合

据上次AI DAY上披露的情况,在毫末的自动驾驶方案中,Camera的纯视觉和Lidar的纯激光感知在各自的识别结果出来之前是完全各自独立的。两个堆栈完全各自独立,没有交集和融合,也就是没有所谓的“前融合”技术。

这个思路的好处是:两个系统各自独立的实际后果是可以给对方提供备份能力,这也是Mobileye所强调的;坏处是:没办法发挥Lidar和camera这两种异构传感器互补的性质,不能从原始数据上联合地提取最有价值的融合信息。

此外,顾维灏曾称,现有感知系统存在“时间上的感知不连续、空间上的感知碎片化”的问题。

所谓“空间上的感知碎片化”,是指车身四周的Lidar、camera由于角度安装的原因,多个传感器实体无法实现空间域内的连续覆盖和统一识别。其直接结果就是,很多摄像头都只看到了目标的一部分,因此无法根据残缺的信息做出正确的检测,后续的融合效果也就无法保证;或者是,一个超长或者超尺寸的物体被多个传感器捕捉,从而被错误识别为多个目标的现象(这个问题在早期的Autopilot上也普遍存在,直到Autopilot的3D化)。

所谓“时间上的感知不连续”,指摄像头和激光雷达的识别,都是以时间上断续的帧为单元来实施的,并未设计跨越时间尺度的、Frame by frame的时域网络来处理这个问题。比如,采用单独的物体跟踪模块将单帧的物体检测结果串联起来,这其实是一种后融合策略,因此无法充分利用时序上的有用信息。

如何解决这两个问题呢?毫末的答案是:用 Transformer 做时间和空间上的前融合。

在空间上,使用transformer对图片、点云提取出来的特征向量进行前融合,融合后再通过神经网络进行目标预测。这样既可以解决多相机之间的融合关联,又通过激光雷达有效提升了视觉检测的效果。

在时间上,前融合的逻辑也类似,即会将多帧的特征向量进行前融合后,再通过神经网络的预测,进而获得时间上更好的预测连续性。

比如transformer对于车道线识别就是在空间上把多个摄像头拍到的车道线融合为一个,从而解决了“空间上的感知碎片化”和“时间上的感知不连续”问题。 

与 Transformer 在一般的视觉任务(比如图像分类和物体检测)中扮演的角色不同,Transformer 在空间前融合中的主要作用并不是提取特征,而是进行坐标系的变换,这个变换过程是完全由数据驱动的,也是任务相关的。

关于“时间上的感知不连续性”,在没有高精地图作为先验信息的时候,复杂的车道线会因为感知的噪声跳变,即上一帧时,这个地方车道线在你左侧50厘米,一秒钟之后的,这个车道线可能就跳到左侧45厘米,整个车道线在抖,用户实车感受的时候,会感受到这个车在“蛇行”。

而通过Transformer的注意力机制,系统便可以修正这种感知跳变引发的噪声,从而在时序上做到稳定的输出。在这种机制下,系统可以看到整个车道线的输出在视野上会更远,以及车道本身的拓扑结构,从而实现更精细化的输出结果,使得整个车道线做到所见即所得,便于下游做规划决策。

8aaf54b65d0f39edb9f64e65e9b55839.png

17bc0164636b566651262c8db3f020e6.png

关于“空间上的感知碎片化”问题,上图是毫末的自动驾驶系统在不用高精地图的情况下,纯凭感知看到的车道线。

这个路段上有车道线的变化,消亡、新增,最底下这张图可以看到是一个环岛。到前面有车道的匝道,还会遇到路型的变化,有一个汇入车道,有一段车道线断掉了;路口中间没有车道线,过了路口之后整个路型向左边进入一个环岛。

车上共有6个摄像头,并且这6个摄像头都看到了车道线,有旁边的,有前面的,有后面的。在这种复杂的情况下,使用Transformer的注意力机制,系统可以非常有效地解决多个相机之间的拼接问题。

如果不采用Transformer模型,就只能跟以往一样,对不同传感器的数据做后处理,这时候就会受到传感器的标定误差等的影响,车道线拼起来之后就不连贯。

潘兴提到,之所以用车道线举例,相比于高速,车道线是在城市里面变化最大的一个典型感知难题。

高速上的车道线很整齐,不管是车道线划白线的质量还是规整程度和连通程度都是挺高的,但城区内的车道线是比较复杂的,很多时候在城市里面模糊了,政府没有来得及重新刷,有可能重新刷了之后,旧的车道线没有抠干净,新的车道线还在,就导致新旧车道线的交替重叠。很多时候,这个路口一开始两个车道,到了路口的时候多了一个潮汐车道,就变成了二变三;很时候,二变三对得还不是很正,有可能直着开就冲出路去了。

面对复杂的车道线问题,用大模型,尤其像Transformer这种注意力机制解决这种问题就非常有优势。

但其实,不光是车道线,各种障碍物等交通元素都会逐步被纳入Transformer的处理范围。

三.如何在缺少高精地图的情况下实现城市辅助驾驶

01

城市自动辅助驾驶的感知难题

城市NOH和高速NOH的场景会有很多差别,最为显著的三点是:路口多、变道多、拥堵多。路口的红绿灯是一个不可回避的话题。

a8affff8f358aa7a2c0c288a7661a2ab.png

一个路口有很多红绿灯,尤其是不规则的路口,其实能够看到很多红绿灯,左边、右边、人行道、正前方都能看到。到底哪个红绿灯管你自己那条车道?这个问题就会比较困难。

9c1afcc1dd646195c16fe50f976af79f.png

通常,很多自动驾驶公司在测试阶段的做法通过高精地图来解决这些问题——在高精地图里面就知道,在一个具体的计算机坐标下面这个地方有红绿灯、这个红绿灯管哪条路;而且,在监测的时候就可以跟地图做对照,很容易知道前面的红绿灯距离我多远。

然而,对量产车来说,在实际的城市场景里面,当前国家还没有审批通过城市内的高精地图。即便是审批通过了,一时半会儿也很难做出来——不同于Robotaxi通常只需要几条街上的三五十公里的高精地图,而量产车需要的是100个城市、300个城市、1000个城市的高精地图。

可能一开始,只是北上广深等少数道路结构比较完整的大城市会有高精地图,然后再逐步向其他城市拓展。

毫末方面表示,未来在有合规的城市级高精地图出台之后,他们也会在城市NOH上使用高精地图,来进一步保证车端感知的精确度。但现阶段,在那些缺少高精地图的城市,智能辅助驾驶车辆该如何解决红绿灯的问题?

02

尚无高精地图可用,那用什么?

既然当前还缺少城市级高精地图,那就得通过训练把感知算法做得更好,这是毫末的思路。

我们仍以红绿灯难题为例。把全国各地的红绿灯数据都收集过来做训练显然不大可能,毫末的做法是,通过仿平台搭建了各种不同的光照、天气下的红绿灯场景,再用这些场景做模型训练。

为扩大训练的样本量、弥补真实场景下数据样本不均衡的问题,毫末通过3D仿真引擎获得大量不同光照、不同背景下的合成数据。

不过,在通常情况下,合成数据的质量不如真实数据,两者的主要差在于特征空间及概率分布不一致。其中,特征空间不一致可以理解为,红绿灯经常被雨水或灰尘弄脏,造车数据失真;概率分布不一致则指图片风格不一致,比如仿真的图片明显感觉比较假,光线、颜色等和真实世界还是有区别。

这两个“不一致”问题不解决,合成数据便无法被充分利用。因此,要最大限度地使用合成数据,就需要进最大可能缩小合成数据跟真实数据在特征空间和概率分布上的“不一致”,进而使得目标函数f在真实场景中拥有最小的预测误差,从而可进一步提升红绿灯识别的准确率。

对缩小两者在概率分布上的不一致,毫末采用的是迁移学习领域中的混合迁移训练方法,即利用合成数据“定向弥补”真实场景中缺失的数据样本,并及不断调整训练策略,从而减小二者特征空间的概率分布差异。

8be8ece38ec99dd5e7c2fe56c82f3e72.png

可以看到下方右图中特征空间的可视化示意图,通过有目标的定向补足相应数据及混合训练之后,合成数据与真实数据的特征空间更为接近。

说到仿真数据、合成数据,我们就有必要介绍一个概念:迁移学习。

迁移学习是人工智能领域的一个专业概念,通俗来讲,就是机器学习人类可以 “举一反三”的能力,将在完成任务A的过程中学习到的知识迁移到任务B中。

比如,一个小孩子在QQ飞车里学开车,虽然是仿真的操作,但上了他爸的车,他也就真的会开了;比如,学会骑自行车,就比较容易学摩托车;比如,学会了C语言,在学一些其它编程语言会简单很多。

迁移学习的目标是将知识从一个任务迁移到另一个任务,使用一个或多个任务来帮助另一个目标任务。

毫末采用的是混合迁移学习方案。所谓混合迁移学习,也是迁移学习的一种,模型的迁移效率会明显高于单一迁移学习模型。对感知数据的混合迁移学习应该就是将合成数据和真实道路的数据结合起来,提高合成数据的价值,然后用合成数据训练算法模型,再将这个算法模型应用到真实路况里。

前面提到,关于红绿灯主要有“识别”和“绑路”两类问题,“识别”比较好理解,“绑路”指在红绿灯比较多的情况下,如何分辨出“哪个红绿灯管哪条路”,这实际上是一个确认红绿灯和道路的拓扑关系的问题。对此,毫末设计了一个双流感知模型,将红绿灯检测和绑路问题分解成“what”和“where”两个通道。

其中,what通路主要负责红绿灯的识别信息,主要包含对红绿灯灯箱的检测和灯型分类,分别输出红绿灯的颜色、形状和朝向信息;而where通路主要负责红绿灯绑路,即输出目标车道的红绿灯灯组——在这里,毫末会通过训练生成feature map的卷积神经网络,表达这个红绿灯和道路结构的关系。

d2f6bbcd62b50303a75b52149d003377.png

b94b0675da7919befa3eb53278e375af.png

最后,毫末会使用“空间注意力机制”将二者结合起来。其中,spatial attention模块中紫色的部分对应图像中控车红绿灯经常出现的位置,从而毫末的双流模型将输出绑路后目标车道的红绿灯通行状态。需要注意的是,这里的“空间注意力机制”的模型与上面介绍的车道线识别模型是相互独立的。 

潘兴说,通过这种方法,毫末的自动驾驶车辆便可以在没有高精地图的情况下,纯凭感知,就可以处理、识别红绿灯,以及知道这个红绿灯跟道路的关系。“不管红绿灯在什么位置,只要一‘绑定’,系统就可以找到这个红绿灯在道路上的拓扑信息。”

据顾维灏在演讲中披露:“基于这种方法,毫末进行了大量测试,在不同城市、不同距离、不同转向、不同光线的条件下,也能准确地识别出红绿灯信号。”

03

“强感知”路线的技术壁垒

潘兴在演讲中将毫末这条路线称之为“重感知”,那么,这种技术路线的壁垒是什么?

对此,潘兴如是解释道:“这里面的核心难点是感知算法的精度。因为感知算法的精度如果做不高,在我们这种方案里面,即使你的拓扑信息都搞对了,其实车也开不好,而且更何况拓扑信息本身也是有精度的。”

为什么强调的是感知算法的精度,而不是传感器的精度?潘兴说,感知系统能看到某个地方有路型变换、能准确地策动车道线距自车的距离、车道线的曲率,主要还是靠算法。

04

毫末跟特斯拉一样吗?

说起不用高精地图做出城市自动驾驶,特斯拉是一个绕不过去的话题。

特斯拉一直强调自己没有用高精地图,不少人因此产生误解。实际上,特斯拉确实是没有用到高精地图这么个“零部件”,但他们做了众包建图,然后又用众包建图的数据来训练感知算法,可以理解为,他们的感知输出结果里面天然就带有了一些地图信息。

简单粗暴地说,我们可以理解为,特斯拉是“将高精地图这个功能集成到了感知算法中”。

随着头部车企自动驾驶算法能力的增强,今后,这一路线或将成为趋势。

四.路径规划环节引入深度学习算法

当我们从高速走向城市,不可避免地会遇到很多更复杂的场景。比如:我们试图左转过路口时需要等待前方掉头车,还需观察对向直行车辆的动态以及和其他右转车交互。

处理这样的场景,过去在做测试的阶段是写非常多的规则式场景判定(if...else...)和参数设定。然而,在城市里基本上每一两公里就有一个十字路,那么多规则,你写得过来吗?

而且,规则写多了,可能会自相矛盾——有的研发的人写了几千条规则,自己就混乱了。规则越来越多,就会引发逻辑爆炸,越来越难以维护和调和。即使写好的规则,当突然加入一个新的交通参与者或者扰动因素时,也会带来失效。

针对这一痛点,毫末的做法是,通过TarsGo提供一个车端的模型,通过模型学习和立体化学习的手段,学习人类司机在这些场景下面的动作,然后再用新的模型替代掉原来的一些if...else....规则。

事实上,早在2021年12月份的AI DAY上,顾维灏就提到了在决策环节引入场景数字化和大规模强化学习。

场景数字化,就是将行驶道路上的不同场景进行参数化的表示。参数化的好处在于可以对场景进行有效地分类,从而进行差异化的处理。在将各种场景数字化了以后,就可以采用人工智能的算法来学习。

一般情况下,强化学习是完成这个任务的一个比较好的选择。如何对每一次的驾驶行为进行正确地评价,是决策系统中强化学习算法设计的关键。毫末采取的策略是模拟人类司机的行为,这也是最快速有效的方法。

当然,只有几个司机的数据是远远不够的,采用这种策略的基础也是海量的人工驾驶数据,而这恰恰又是毫末的优势所在——毫末还有一个模块就是LUCAS Go,会为TarsGo提供高价值人类的驾驶数据。

cdb97e91c97164605874ce61227a47be.png

在这一过程中,可解释性标注扮演着重要的角色,即通过可解释性标注,可以解释驾驶员决策行为背后的原因,从而也能让认知决策算法的推理结果变得“可理解”。 

比如,在路口,自车需要跟其他车辆进行交互和博弈,因此,光知道自己怎么开是不够的,还需要了解其他车辆在这种场合下的反应,比如,车为什么会有这个动作,这个人为什么会这么开车,接下来要不要超车,要不要变道?

但其他车辆的行为很难预料,在不同情况下的表现都不一样。如果不能进行一个有效的可解释性标注,就有可能导致在训练的时候模型不容易收敛,并且可能会把一些人不太好的驾驶习惯也学进来。

所以,要想这些数据,就需要对他车司机的行为及意图做一个人类可解释的标注。比如,车辆突然向右偏移一点,是他算出来左侧有大车加速过来。车辆要能够把影响他决策的种种因素给出权重概率,而不是一个无法解释的黑箱。

在这个过程中,毫末用到了阿里的M6模型。M6是目前中文社区里面一个最大的多模态预训练模型,参数规模达到了10万亿以上。它一开始主要是针对于图片、文本在电商领域的应用,包括视频理解、自然语言处理、图像生成等等。

M6在自动驾驶领域的应用标志着AI模型能力的普惠化——自动驾驶公司不光能够用自己的采集车、用户的车传回来的数据迭代自动驾驶的能力,同样也能够利用阿里云在智慧城市中路口、交通流的数据,来进行训练学习。

4dc26f644892ee4fc69c206e87db8b6c.png

acaf1c3a4049ae8e4467c35894f2ca20.png

通过M6预训练的多模态模型,系统不但能够预测人类司机是怎么开的,而且能对这个司机的动作给出一个文本集的解释,这个文本集是人类可以理解的。

然后,通过数据的后处理,系统就可以对这些可解释的问题进行归类以及清洗和筛选,以确保的自动驾驶算法拿到的数据是干净的、符合人类驾驶习惯的、符合社会公序良俗的,是一个可以用来训练的数据。

潘兴说,通过这些符合预期的数据,他们就可以训练出一个车端智能的算法,替代掉车端大量的规则,进而来迭代自动驾驶的算法。

去年年底,某头部造车新势力CEO在演讲中说:“判断和决策今天还没有真正给车下指令,因为现在不仅没用到深度学习,甚至连机器学习也没用到,只是用的编程。”但从这一点来看,毫末自动驾驶的决策算法可能已经超过这些头部新势力。

五.如何用L2的数据做L4?

截至今年4月,已有6款量产车型(坦克300、拿铁、玛奇朵、哈弗神兽、坦克500等)搭了载毫末智行的智驾系统,用户行驶总里程已经突破了700万公里。按计划,未来两年,搭载毫末智能驾驶系统的乘用车数量将超过100万台。

这一行驶里程,是毫末强调“数据优势”的底气所在。不过,已经上路的量产车,都没有装激光雷达。这些数据,能否直接用来训练L4的算法?如果不能,需要对它做怎样的优化?在4月13日,笔者向潘兴抛出了这个问题。

潘兴的回答是:用2D的数据做好自动驾驶是比较难的,要从2D数据里面得到3D信息,才能把这些数据的价值真正发挥出来。因此,能否把视觉数据能够标注成一个带有3D信息的数据,是未来能不能向更高级自动驾驶功能挺进的一个重要门槛;如果你无法跨过这个门槛,那些数据的价值其实就没有那么大了。

六.可否将各场景的数据打通?

当前,除乘用车自动驾驶外,毫末也在发力末端物流配送(不仅有线控底盘,还有算法),那么,在不同场景获取的数据可以打通吗?

对这个问题,潘兴的答案是:这些数据肯定是可以打通的,但是物流车传感器的型号、位置和乘用车其实还是有很大区别的,其次物流车行驶的区域和乘用车现在行驶的区域虽然很接近,但是也有一些区别,所以这些数据要用好的话,其实也需要一些技术手段。

七.从用户视角来对ADAS能力做分级

毫末方面认为,ADAS的分级,目前具有极大混乱性,而且都不是从用户体验的角度出发的,因此,他们提出从用户视角理解产品能力分级,让用户对车辆通过性有相对准确的认知。

近期,毫末自己定了一个辅助驾驶通过性的能力指针“行驶环境熵”,这是一个和车辆周围环境交通参与者的数量、相对距离、相对位置、运动方向相关的函数。根据这个函数,把交通环境定义了7个等级,然后在这个7个等级下,对毫末产品和行业产品的测试和能力进行对比。

特别是辅助驾驶进入城市后,使用率会大大增加。毫末希望能给用户一个稳定性的认知,也希望能够和行业从业者共同定义这个能力标准。当然,毫末也会持续提升自动驾驶能力的通过性。

八.开放的商业模式

目前,长城汽车是毫末在乘用车领域的唯一客户。按毫末也计划在接下来将技术开放给其他主机厂。

如何跟其他主机厂合作呢?毫末智行设计了“6P开放合作模式”。即合作方可以选择采用毫末的全栈技术解决方案,可以选择在数据智能云端服务层面与毫末合作,也可以选择软件或硬件层面,或者功能模块层面的合作;甚至可以选择和毫末进行源代码级别的定制。

毫末“6P开放合作模式”就是在全栈解决方案到源代码之间这6个产品层面都可以开放式探索合作的可能。

c40c5772bd41d00c780bd0fc43f6b1e3.png

5ef7d621c5dfc5cdf4ca296600629f8f.png

参考资料:

我们研究了特斯拉、毫末「自动驾驶算法」的秘密

https://mp.weixin.qq.com/s/Y35KuGAKZyVynu2QRCTsWw

毫末智行的感知架构在演进中——Transformer在毫末的应用

https://mp.weixin.qq.com/s/dGAoyHK15uCUpl5KBS3HUw

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiuzhang_0402/article/details/124507462

智能推荐

微信扫码:关注公众号后网站自动登录的实现原理_公众号:Java后端的博客-程序员ITS203

点击上方Java后端,选择设为星标优质文章,及时送达作者:destiny链接:segmentfault.com/a/1190000022188562序言常见方式平常大家见到过最多的扫...

微信小程序与微信公众号同一用户登录问题_powerfuler的博客-程序员ITS203_公众号小程序openid

微信小程序与微信公众号同一用户登录问题最近在做微信小程序与微信公众号登录合并的接口。整理相关资料以及个人认识的心得写了这篇文章与大家一起分享。首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的openid,不能区分是否为同一用户,然

牛客练习赛52 BGalahad 树状数组_Pikachu_Yj的博客-程序员ITS203

传送门题意: 求一个区间的和,但如果某一个数在这个区间出现了多次,这个数只能被计算一次。官方题解:按右端点从小到大排序。建立树状数组ccc,维护贡献的前缀和。由于权值ai 满足1≤ai≤500000,所以不用离散化,直接维护 last[ a[i] ] 表示元素 a[i] 上一次出现的位置。设当前更新到的位置为t 。如果ai没有出现过,即last[ai]=0,则不产生影响;否...

Qt信号和槽机制_lsfreeing的博客-程序员ITS203

一个小例子一个实际例子带有默认参数的信号和槽信号和槽的进一步使用和第三方库信号槽使用Qt一个小例子一个小的C++类声明如下: class Counter { public: Counter() { m_value = 0; } int value() const { return m_value; } void setValue(int value)

Unity3D 动画回调方法_七大黍的博客-程序员ITS203

欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内unity3d培训、学习第一品牌。最近发现很多coder.在用Unity开发游戏的时候都需要一个需求就是..动画播到某一帧就要干什么事情.而且希望能得到回调.在unity里面的window菜

MySQL-Connector-ODBC免安装版本的配置和使用_晓琴儿的博客-程序员ITS203_mysql-connector-odbc

0x00 ODBC介绍ODBC(Open Database Connectivity,开发式数据库连接)是微软公司为应用程序访问关系型数据库时提供的一组标准接口规范。ODBC对不同的关系型数据库提供了统一的API,使用该API来访问任何提供了ODBC驱动程序的数据库。0x01 mysql-connector-odbc的下载MySQL官网:下载Connector/ODBC我选用的是免安装版本,安装版本直接下一步安装即可。0x02 mysql-conne...

随便推点

java程序实现双机热备_实现高可用的两种方案与实战_江量的博客-程序员ITS203

我之前在一片文章用Nginx+Redis实现session共享的均衡负载中做了一个负载均衡的实验,其主要架构如下:把debian1作为调度服务器承担请求分发的任务,即用户访问的是debian1,然后debain1把请求按照一定的策略发送给应用服务器:debian2或者debain3,甚至更多的debain4、5、6……状态和数据可以放在外部的分布式缓存服务和分布式数据库服务中,这样应用服务本身...

linux部署web App_我有颗小粒的痣的博客-程序员ITS203

服务器阿里云服务器Apache tomcat只能在官网下载tar.gz文件详见:https://blog.csdn.net/jenyzhang/article/details/70159769注意事项:openJDK的安装目录:/usr/lib/jvm/java-8-openjdk-amd64根据

CSP认证 中间数 (C++)_Absorbent的博客-程序员ITS203

问题描述试题编号: 201612-1 试题名称: 中间数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在一个整数序列a1,a2, …,an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。   给定...

Rails3.2使用mongoDB学习笔记之mongoid_hotsunshine的博客-程序员ITS203

前段时间写过一个mongo_mapper的demo程序,在写那个测试程序的时候,看见很多人都说mongoid更好,于是打算用一下试试,写了好久了,最近公司比较忙,没时间整理,现在贴出来。新建项目[code="ruby"]rails new spec_mongoid[/code]一、mongonid 官方首页[url]http://mongoid.org/[/url]...

interface学习_狮子QH的博客-程序员ITS203

interface的应用场景(1)类型转换(2)实现多态1、底层分析golang中的接口分为带方法的接口和空接口。带方法的接口在底层用iface表示,空接口的底层则是eface表示。下面我们透过底层分别看一下这两种类型的接口原理。以下是接口的原型://runtime/runtime2.go//非空接口type iface struct { tab *itab data unsafe.Pointer}type itab struct { inter *int

推荐文章

热门文章

相关标签