![地平线 Horizon SuperDrive 最强解析:优雅从容——下一代城区领航新范式](http://oss.zhidx.com/uploads/2024/05/6641ea136e211_6641ea136aff0_6641ea136afc0_640-16.png)
刘景初:各位朋友下午好,我是地平线 SuperDrive 产品的架构师刘景初,今天借北京车展这个机会,分享一下我们地平线在高阶自动驾驶一年以来新的思考和实践。
今天的主题,在产品构型之初,其实也是想了很久我们应该做一个怎样的系统?最后,我们选的词“优雅从容”——一般不常用来形容一个machine。但是,待会等我讲到相关内容时,大家可能就会理解,为什么我们需要这样一个性格的系统,才能真的做出一个足够好用、大家爱用的城区领航智驾产品。
01、高阶智驾市场现状与趋势
NOA这个名词大家都已经很熟了,渗透率也在逐年升高。
基本上,在价格稍高的车型上,NOA搭载率很高了,已经成了标配。如果在价钱稍高的车型上不带,大家可能就会觉得这个车型和别的车型相比,智驾功能方面有点落后,从而NOA配置慢慢变成了一种必需品。
但城区NOA比赛可以说才刚刚开始。从23年第一批车企在车上量产城市NOA产品以来,已经有很多用户在路上试乘过,有很多功能在各个城市都已经开通。
但大家普遍试下来会发现一些很典型的待改进的地方:
一是系统不成熟需要人高频接管。目前系统还是处于蹒跚学步的状态,消费者是抱着尝鲜、支持新品的态度看着它 show off一下,实在不行会给它兜个底。
二是用户付费意愿低。除非是标配,但凡要为它付钱,消费者会想现在的阶段值不值得。
三是功能有待优化。还有很多功能连贯性不够强,没法做到从a点到b点可以一直使用。
如果把整个现状套用到一个新技术在整个产品化过程中的生命周期模型里面,其实刚刚处于最起点。在一个新技术扩散的过程中,最起点的时候会有一些先锋用户会为它买单,但还不够。
如果让它成为最终所有人都能用到的产品,中间还有几步要走:
第一步是先要达到一定的渗透率,比如6%的渗透率,让更多的人去愿意用它,之后再逐渐达到更高的渗透率。尤其要跨越一个鸿沟,让更多人觉得这个系统对我来说是有用的,而不是一个玩具,在某些时候真能帮到我。甚至要让一些用户觉得这个系统是真的好用,比自己开的强,真的愿意把方向盘交给它控制。只有跨过了这道坎,我们的系统才能往后走。有很多技术没有跨过这道坎就挂了,其实也是一件很可惜的事情。
为了能让这项技术继续往后走,我们的观察,如果要刻画一下是如下图:
指标上面,左边是现状,右边是下一步需要达到的状况。城区道路的MPI接管要翻几倍;城区快速路的MPI接管基本上也翻了4-5倍;高速路的MPI接管也翻了几倍,因为场景更简单,甚至是提升了一个数量级。
第二步是城市NOA大规模量产。智驾系统需要提升性能,达到用户感知性能的状态是接管率足够低,只有用户觉得大部分时候它是安全的,才愿意把方向盘交给它。另外,作为一个产品来说,用户意识到它有用、好用,并愿意为它付钱,才是可持续的。其实达到这样的状态时,竞赛才刚刚开始。因为所有的系统都是才踏进这个门,并且发现这是一件很难的事情。
第三步是进入主流市场。最终我们通过不断地优化,把成本降到足够低,使其变成一个主流产品。
抽象化这个过程,我们认为有三个阶段:
第一阶段要达到“可用”。大家觉得物理上它是安全的,虽然磕磕绊绊,但它不会撞车。
第二阶段是“好用”,在某些场景下真的能帮到我。最重要的一点是要有心理安全感,而不止是物理安全感。我心里虽然知道它不会把我带到沟里面,但是不代表开车的过程中不会某些时候手突然一攥,感觉到有些操作稍微有点危险。它需要一种拟人化的操纵方法,在开车的过程中,我们能够对它的行为有一定预期,没有太多行为上的意外。就像我们自己开车一样,可以把所有情况都处理了,让我们觉得好用。
第三阶段是真正“爱用”。这个阶段意味着它会有更多定制性,更贴近每个人、每个场景的需求,在使用的过程中可以逐渐跟人融合,就像一个人的拓展状态,可以让消费者放心地使用、自如地使用,并且爱上智驾功能。这时的智驾系统会隐于幕后,就像是手机里面的通话功能,陪伴用户每刻每程。不仅如此,这个阶段的智驾系统还要affordable,成为每个人都配得起的智驾应用。
Highway(高速)上的Pilot产品应该很多人都体验过,已经过了可用的门槛了,可能部分已经接近好用了。当你上班的路上开个会,再听个小曲,还是比较享受的,上班路上还能放松一下。
但是,城区智能驾驶系统显然还没有达到用户眼中的“可用”状态。我们把它简单总结成四个表现:
1.怂,拥堵更添堵,导致体验接管。
有时候很怂,尤其是在路口的时候,恨不得给它一脚油,过路口的时候基本不想用。而直道上,有无NOA又没什么区别,毕竟都是顺着道开。
2.莽,抢行太冲动,导致安全接管。
有的时候又很莽,当真的博弈时,有时候系统会突然抢行,出乎意料。
3.急,为了快速开城,系统可用性下降。
很多友商也很急。开城这个词大家都见过,但开城却并不能保证系统性能在所有城市都维持同样的水准。这会导致早开的地方大家用的比较爽,有一定的口碑。但是越开越有更多的Corner Case,大家可能会对整个系统的感知有断崖式下降。
4.贵,不利于功能普惠与大规模市场落地。
用不起的东西哪怕做出来了,也是镜花水月。要做到足够的便宜,让每个人都能用得起的科技产品,才是好产品。
现在的系统基本上是Passive和Aggressive的状态。Passive状态,就是但凡有个人,系统就卡住不动了。而Aggressive状态,就是有的时候我们作为驾驶员时明明知道旁边有危险应该等,但它突然“自信地”来了一脚油门,冲动抢行。
02、下一代高阶智驾系统的挑战
作为一家科技公司,我们肯定要去想什么是一个可达成的路径。我想从技术视角和用户视角两个角度分析一下这个问题的解决维度。
从技术角度来说,是两个词:Scale Up、Scale Out。
Scale Up指的是通过无限堆料的方式,能够让一个系统在一个特定、受控小的ODD范围内性能更优。典型就是Robotaxi,在一个封闭的地方,例如园区、港口,通过极致堆料和极致调优,智驾功能加TeleOps(远程操控)就能够实现无人驾驶。
另外一个维度是Scale Out,就是大家期望中的开城,是在ODD无限扩展的情况下,把车随便扔到一个地方,功能都能用。而现在,能做这件事的主要还是高速单车道这样的简单场景。
而我们要做一个好的城区NOA产品,显然要同时做到这两点。因为在城市里,不可能限制只在某条路上开,肯定要让大家也能在野生环境里去用这个系统。首先它隐含的就是Scale Out,再加上开城,因为所有城市都要开;Scale Up也是,因为城区是所有智驾场景的母场景,是场景浓度最丰富的区域。如果没有足够的性能上限,那它在城市里就是一个不好用的产品。
从用户的语言来说,用户可感知到的一个是MPI,就是Scale Up。另外一个就是ODD,用户能在越来越多的地方使用智驾系统。ODD的扩展,意味着想去哪个地方,随便按下激活键就能进功能,而且性能是特别拟人的,和老司机开车的状态一样,这才是我们最终想做的系统。
03、优雅从容的智驾系统Horizon SuperDrive
我刚才不断地在重复拟人化,为什么一直在强调这一点呢?
一方面是好用的智驾系统一定是有拟人的驾驶体验,这也是我们在城区智驾实践过程中总结出来的。
道路不是我们一个人用的,而是一个公共场所。虽然我们自己是做智驾系统,但路上大部分车都是人开的,人有自己的预期、习惯,而且交通基础设施都是为人设计的。虽然我们做的是单车系统,但驾驶本身是群体行为,不是单车行为,那就意味着如果真的想做到安全、高效,就一定要像路上其他老司机一样开车。哪怕我们做得很好,但如果是一个很机械的、很不像人的体验,在路上也会让别人产生非预期行为,因为别人不知道你要干什么。
另外一方面就是系统行为需要符合用户的心理预期,且满足社会惯例。
因为我们是在方向盘后面在supervise这个车的人,我们当然希望尽量少去介入,尽量少有意外,但这个事情的基础是我可以预期它的行为,没有太多预期之外的行为。它能像人一样思考,人怎么动作它也怎么动作,这才是一种更好地人机交互行为。
所以,在拟人这件事情上,是至关重要的。
但拟人这个词还是比较空泛。我们会提取什么样的人是我们想学习的人,因为人也是各种各样的,司机也有各种各样的司机。有赛车手型的、有谨小慎微型的新手司机,也有不光嘴里能聊、驾驶风格也激进的出租车司机,还有领导们坐在车后面会觉得很舒服的国宾司机。
我们想做的系统其实是一个“优雅不怂,从容笃定”的系统。
“优雅”意味着它会更平顺地处理很多场景,“不怂”是不会为了安全而不去做一些人会做的博弈行为,我们也会通过和其他交通参与方协作博弈,达到高效丝滑的驾驶状态。
“从容笃定”更多的是人能感知到的车的状态,它不会很犹豫、纠结,不会出现方向盘狂摆,自车摇摇晃晃,不知道自己在干什么的情况。它会像人一样,在一个相对长的时间周期里通过思考,明白应该怎样去行动,在一个更紧的闭环里通过很平顺的方式把这件事完成了。你能看到的是谋定而后动的状态,而不是一个在路上没有事先的想法、随机应变的reactive系统。
我们希望通过优雅从容的行为,使其能够有更精细的道路表现,比如绕障、转弯、让行、走位。当车在变道插空的时候,不管是有路权还是弱路权都有更好的通过性。我们希望通过这种方式打造一个能力更全面的“六边形战士”,这就是我们最主要的proposal。
如果能做到优雅不怂,从容笃定,那么这套系统一定会更好用。
接下来我们讲一些典型的场景。
首先是路口转弯遇到侧后方VRU(Vulnerable Road User)的城区行驶高频场景。地平线SuperDrive系统不会在路口始终死等VRU通过,当遇到了VRU在避让,等待车辆先行通过,那我们会很果决地过去。而大家都见过其他的系统很慢,会一直等,哪怕行人已经有很强的意图,让车赶紧走,它也不走。
还有一个高频场景,大家会非常有共鸣的是起步。在直行的时候遇到要左转的车辆,我们是有路权的。但是从上一代系统来看,比较难判断这个时候应该怎样,经常在路上会刹一脚,因为很难去精细地判断它的行为,但地平线SuperDrive直接就过去了。一些其他的车辆可能会点刹,甚至本来准备过去,半路发现情况有些变化,拿不准了来一脚重刹。
还有典型的绕行场景,社会车辆占道是城区行驶的高频场景,优雅从容的绕行才能保证通行舒适且高效。地平线SuperDrive能及时检测到前方占道车辆,减速绕行,行驶路径优雅拟人,体感舒适,会让你感觉和正常的驾驶行为没有很大区别,是一个连贯的行为,之后瞬间就恢复状态。而大家可能有尝试过其他系统,当识别到前方占道车辆,会减速刹停,无法绕行,妨碍它车通行,最终导致接管。
分析完用户体验的差别,从技术上说,通过哪些核心点,能够去达到一个“好用”的智驾系统呢?
第一点是更强的端到端系统。在这个系统中让信息流有更多的path是通过纯神经网络传递的,没有在中间添加过多导致信息损失的人工环节,这就是快思考,因为它相当于通过很高效的方式,把一些应该做的事情固化在了系统中。
第二点是交互博弈,也即现在很多系统不太经常提到的慢思考。有时候人也要慢,因为有些场景很难通过反馈的方式去处理,你更需要想一想下一步行为的前因后果是什么,就像下棋一样做几步推演。通过慢思考,能够更好地举一反三,而不是只有见过才能学到,有更好的泛化能力。在交互博弈的过程中,很难通过有限的数据点,把所有交互行为都学得很好,要有一定的Planning行为才可以。
最后一点,是地平线主打的BPU。我们是自研的神经网络加速器,这里面不用说端到端了,交互博弈也有很多更细的软硬结合的设计,能够让一些搜索式的行为、前推式的行为在硬件级别就有加速。
04、感知和规控关键技术解析
在这些技术底座的支撑下,地平线在感知和规控方面都分别做了什么技术创新呢?
首先是感知。我之前有针对地平线BEV在智猩猩做过一次讲解,我们的BEV技术相当于只是一个building block,是中间的一个环节。但现在我们会从一个更广的维度去看它,会从整个场景来考量,但有一些挑战:
1.人车混行,强博弈。这种情况下对多种类型的动态物体都要有很精准的类别及行为的感知。
2.道路环境复杂。意味着所有静态元素、异形障碍物的处理,都要有很精准的召回与反馈。
3.场景多变。有些场景很窄的,有些场景又需要有很远的感知距离。你的系统怎样在一个多变的环境,动态地调整对于精度和距离的折中。
我们的感知团队主要做了几点创新:
1.基于Transformer的端到端感知。这件事情不是新闻,但真的在一个嵌入式系统里做到,还是要花一些effort。
2.动态/静态/OCC三网合一。不是三张网、三个链路,而是高度耦合的一张网、一个链路,互相之间会有帮助。
3.虚拟相机&超视距先验。通过更灵活地利用传感器和数据的方式,达到视角不断变化、更强的超视距先验。
端到端,就是把一些以前有的中间环节串起来,让tensor在中间flow起来。我们通过这样的方式达到什么样的效果呢?直接用数字说话,回归误差、遮挡稳定性等各方面指标都有很强的提升,尤其是像鬼探头场景,通过这样的方式使整个物体输出延迟直接被砍掉了3/4。工程师更喜欢的一点是终于没有那么多代码行数了,我们更多是通过数据的方式迭代整个系统。
接下来看一下视频。
1.鬼探头
出来个人我们也能很快detect。
2.施工区域
对于施工区域我们会circle back。我们不光能检测到中间是一个被围起来的区域,还能知道围起来的是护栏。
3.复杂路口
大家关注两点:
一点是静态的环境是很复杂的,我们能有比较精确的几何和逻辑层的刻画,以及一定的脑补。
另一点是大家可以关注下刚才走过去的那些行人,很多以前的系统识别这些行人会有闪动,有很多tracking上的问题,跟着跟着就跟丢了。但我们基本上可以把每个人跟下来,这是一个能做到很好交互的前提。
4.小区抬杠
这是我最喜欢的一点,停车场的栏杆occupancy也能召回。不用像以前一样遇见个栏杆,我做一个白名单模型,然后又发现另外一种栏杆,又要做一遍。我们直接通过数据驱动端到端的方式来刻画物理世界中哪里是不能走的。
最后,我们会做一个三网合一的感知系统。
还有Multi-Scale多尺度感知。之前为了在小算力系统里面去做这件事情,我们在使用传感器的时候做了很多约束。比如在传感器里面做一些recess和crop,把一些固定的区域拿出来做感知。这件事情以前更多的是因为算力限制。
但现在是在征程6芯片上,硬件上面有了很强的支撑,因为BPU在硬件的数据通路和计算通用、专用计算单元的数据通路上,有更强的可配置性,所以我们可以通过动态的方式不断调整系统中的算力分配。我们把很多算力分给超视距感知,赋予它一个更大的神经网络的感受引。我们也会在一些需要精细感知的地方,把整个系统的算力租赁过去,让它有很精细的感知,尤其是在泊车场景,比如立体车库场景。
而做这样一个感知系统数据,肯定需要下硬功夫,这个大家也都会比较清楚。
讲到规控技术,现在的自动驾驶感知技术虽然实现端到端了,但是感知和规控还是两件事情。感知还是要做端到端,而规控是另外一套不太一样的思路,哪怕是在神经网络设计上。
我们没有直接做一个网络直接从头到尾的端到端系统,那样可能是我们刚才说的系统一,一个直通的通路。我们注意到现在的神经网络系统更缺乏的是做Planning的能力。什么叫做Planning呢?就是有能力去问神经网络what-if,一旦我这样做了,别人会怎么样,别人能怎么样,会发生什么事情?而这个事情一定不是一个单向过程,是一个和整个规控的主链路有交互的过程。
我们整个规控系统的输入是Tensor级别的先验以及实时的结果。过来之后会有这个环境中相对静态的推理,以及搜索模块,还有最终的时空联合轨迹生成。
所有的这些在处理过程中会有一个交互式预测决策神经网络的Core。这个Core有点像一个Word model,能够在你推理的过程中,给它一个Query,你问它What-if,它能告诉你一个答案。而且这个过程不是一次性的,它在每一个Planning Cycle里面会多次调用,而且是前后依赖的调用。通过这样的方式可以形成一个完整的、带有对未来思考的这样的Planning结果,然后送给相对传统的运动规划器做安全兜底,最终会控制。
我们整个规控系统是通过这样的方式去做控制的,相对于以前串行预测决策的规控,会有很大的区别。
因为我们能够像人一样反复思考一件事情,而不是一种前面预测告诉我一件Unconditionally的事情,但我不知道要有什么行为的非交互式的方式。这样是很难做预测的,因为我自己也是场景中的一部分,如果不把我的因素考虑进去,那怎么能做很好的预测呢?
其实预测、决策和Imitation Learning等,在一个大的模型下是一体的。我们希望能够通过这种架构有更好的他车、自车意图的推理,并且是能够迭代的,可以反复去推演。通过这种方式还能让决策更好地处理交互式行为,更拟人。
这里面其实一个产出点是我们的自车行驶的pass级别。
大家可以从视频中的地图上看到,它走的路径不是固定不变。而早期用高精地图的自动驾驶系统都很有机械感,当过一个路口的时候即使走1000遍都是一条路线,甚至更夸张的是如果用一个车队经过路口,这10辆车都是一模一样的,排着队像火车一样过去。
但我们的车不会,因为你在场景中静态路径怎么走和其他车的位置很有关系,比如无保护左转的时候,如果旁边没有车,直接一个内切过去了,如果有车就往前稍微走一点、等一等,我们的车会有这样的外切行为。
博弈也是同样的。
这样的状态靠以前的技术是很难做到的,需要不断地推演我的动作、别人的行为,甚至还要去试探,尝试把世界的天平往我这边推动一点点,才能有更好的结果。这个场景是我们需要在一个拥挤的车流里面,从最右边一路变到最左边。
从我们的人机交互的HMI界面,可以看到一个和上一代系统的显示变道车位不太一样的地方。上一代系统会有一个固定的车位框,垂直于我们的车,因为它没有太好的离散决策过程,只知道要变过去,但不知道自己最终要变到哪,所以只能显示一个垂直的框。但是我们的系统除了有一个框,还会有多个框。这些都是我们认为未来会有的可能性,我们的系统会在自己的尝试和推演中去落实这种可能性,最终在现实中落实出来。
还有绕行,大家在城市中体感会更强烈。在一个很复杂的环境里,旁边停满了车,这时候你很难去很守规矩地、很机械地处理这种环境。
在这里,我们为了处理大公交车,会短暂地压实线;在有儿童的时候,如果是上一代系统可能会停在原地等他,但现在我们会更拟人地绕一下,大家都有心力往前赶,我就能够通过了。其实我们是通过规划框架为系统释放了更多的自由度,但更多的自由度意味着要有更强的能力来handle它,如果hold不住的话系统很容易跑飞了。我们的框架恰恰是能够hold住这种自由度(新的空间维度)的系统,让它在这个空间里有十分惊艳的行为。
算法方面,很多同行都很厉害,也都做得很好。地平线为什么会做这样一个系统呢?更多的不是我们要去卖一个软件产品,而是证明在这个时代,征程6系列芯片是一个更合适去承载这样技术愿景的平台,具体怎么做大家可以百花齐放。
为什么地平线的征程6系列可以做到呢?
第一点是Transformer大模型的高效支持。刚才也谈到了,我们首先很依赖Transformer,现在的芯片如果跑不起来像Transformer这种相对大的模型,那很多高级特性都上不去。
第二点是交互博弈,低时延的快速求解。交互博弈是一个和以前的串行神经网络推理很不一样的Usage pattern,它需要在一个动态的图里动态决定下一步的执行网络及输入。这个过程需要一个相对通用的计算单元和一个相对快速的专用计算单元,之间不断地快速Close loop交互。
第三点是先进算法的丰富算子库支持。从零搭建一个算法是很难,而地平线在这方面也有很强的积累。
大家前两天有关注我们的发布会,就会关注到我们新一代计算架构BPU Nash。基于BPU Nash,地平线新一代芯片征程6系列相对于上一代有大幅提升,包含强大的并行浮点计算的能力,能够让神经网络更好地处理Transformer相关内容;以及特别优化的超越函数;存储系统也进行了大大优化,能够让大家通过无感的方式更快实现各种推理。
重头戏来了,怎么在一个挂了Nash大师名字的系统中更好地做博弈?
一是编程端,通过一个芯片级别的编程是很难编出博弈的,我们需要一个high level的、更软的操作界面。所以我们的系统在软件层面(编程的工具层面)会给大家提供一个 Python like的接口,能够让大家写完Python以后通过编译器自动把它转成高效的机器语言落到芯片上。
同时,我们的芯片上面为什么能做到这一点?是因为我们在BPU里面也有自己的通用计算单元。它像一个更通用、迭代更快,但是处理能力没那么强的配合者,配合我们的 Tensor和Vector单元去做Heavy lifting。通过这样的方式可以不断变化我们动态图中的执行路径。这两者不是一个芯片,而是在一个硬件IP里。它们在硅片上是紧挨着的,所以能够很高效地去做动态的神经网络执行。
通过这样的方式,我们的征程6系列能够很好地支持地平线的技术愿景,达成一个高性能且灵活开放的系统平台。在这个平台上,相信行业里面很多厉害的合作伙伴、开发者也能开发出同样精彩的产品,和我们一起把下一代城区领航系统做出来。
以上就是今天讲解的内容,谢谢大家。