在谈自动驾驶的数据时,除数据规模外,我们说得最多的就是“数据质量”,而所谓“高质量的数据”往往特指极端工况数据。如何从大量的场景数据中高效地将极端工况数据筛选出来并仅将这一部分数据回传至后台,也成为衡量一个自动驾驶公司数据处理能力的最关键指标之一。
在各种已知的筛选极端工况数据的方法中,特斯拉首倡的影子模式,无疑是最有影响力的那一种。
影子模式已被视为走“渐进式”路线的公司能把数据优势充分发挥出来的关键武器之一。国内的很多车企和自动驾驶公司也都在谈影子模式。
然而,过去一年多以来,笔者在跟一些车企的自动驾驶负责人及自动驾驶公司CTO等交流后发现,看上去无比高大上的影子模式可能被“神化”了,实际操作中会遇到很多问题——
1.影子模式的定义,是不清晰的;或者说,多数人对影子模式概念的理解,是不完整的。
按常规的理解,“影子模式”的核心在于,在有人驾驶状态下,系统包括传感器仍然运行但并不参与车辆控制,只是对决策算法进行验证——系统的算法在“影子模式”下做持续模拟决策,并且把决策与驾驶员的行为进行对比,一旦两者不一致,该场景便被判定为“极端工况”,进而触发数据回传。
不过,智加科技首席科学家崔迪潇博士的说法是:影子模式属于特斯拉数据闭环的一部分,并不直接对应于数据筛选。除利用控制端的轨迹差异筛选数据外,影子模式的另一种应用场景是,验证新功能是否能正常工作,或者是否带来副作用。
车右智能联合创始人张洪滨的解释则是:这仅仅是影子模式的一部分,而且是很小的一部分。
张洪滨认为,从原理上讲,有望在短时间内商业化的自动驾驶在研系统,其背后的神经网络结构都不是端到端的系统,而是感知、预测、规划和控制四个主要模块上,分别主要利用NN网络实现。 因此更具备现实意义的影子模式是可以提供更多更大范围极端工况,包含标注的和非标注的训练数据 。
根据特斯拉AI负责人karpathy在CVPR2021披露的信息,为了在车队中拿到尽可能多的高质量数据,特斯拉开发了大量的trigger 触发器( 221个),工作在shadow mode方式下:
可以看到, 这里大量存在的 trigger 中,不是每一个都会和人类司机的行为挂钩的。比如, radar vision mismatch,如果出现毫米波雷达和摄像头的判断不匹配的情况,比如做目标监测时,毫米波雷达看到了,而摄像头没看到,影子系统就会触发数据上报;再比如, 视觉下 bounding box 发生抖动超过一个阈值,这段数据也会上报 ……
这些数据都会被直接送到 dojo 上相关算法的相关模块,有的是标注好的 、有的是需要额外标注成本的、有的可能就是压根不需要标注的….. 诸如此类,会被录入 training set 。
可见,并非所有的影子模式都是依赖人类司机的驾驶决策来标注和触发数据回传的。不过,国内车企在谈“影子模式”的时候,仍然集中在“拿系统的决策算法跟人的驾驶行为做比较”这个层面上。
去年,在被问及 “除影子模式外,你们还有哪些用来收集极端工况数据的方法”时,一位无人驾驶公司的CTO 也提到了 “将毫米波雷达和摄像头的监测结果做比较,如果不一致,则触发数据回传”。当然,他们并没有将此归类为“影子模式”。
崔迪潇博士也补充道:除影子模式外,还有大量的数据收集器可以工作在自动驾驶模式下(这些数据,对最终车辆控制并不产生影响)。
2. 按照实现原理,影子模式不应该占用太多的计算资源,也不会增加自动驾驶处理时延,不过,目前 L2量产车上搭配的感知芯片基本都是Mobileye的EyeQ 4,而封闭的Mobileye并不允许车企用他们的芯片来做影子系统,这意味着,车企需要专门为影子系统再额外配一颗芯片。
如果每辆车上都添加影子系统芯片,这对成本控制显然是不可承受之重,因此,车企大概率只会在个别车辆上做影子系统。
当然,如果主芯片是由 “更开放”的英伟达提供的,可以同时做影子模式,不过,目前,仅有小鹏P7和雷克萨斯LS的量产车上装了英伟达的芯片。后续,最有机会大批量做影子模式的,应该是搭载了地平线征程3的车型。
3. 若系统的驾驶行为和司机的驾驶行为不一致,当时的场景便被视为 “极端工况”,但这个逻辑成立的前提是假定“司机的驾驶方法一定是对的”,进而认为“只要系统决策跟司机不一样,决策算法就是错的”,但问题在于,司机的驾驶方法就一定是对的吗?更何况,在同样的场景中,不同的司机的驾驶方法都不完全一致,如何判断谁对谁错?
因此,有必要为影子模式中引入一个“上帝视角”——如果司机的行为是对的,决策算法就应该“见贤思齐”;如果司机的行为是错的,则决策算法就应该有足够的定力确保自己“不被误导”。
去年12月,时任福瑞泰克架构总师的汪浩伟在一场题为《下一代自动驾驶的几大关键技术设计策略》的演讲中提到,当司机的驾驶行为与自动驾驶控制行为产生差异时,会产生两种情况:
A.差异过大, 则判定可能是司机的驾驶过程出了问题,系统会对司机提出警报。如司机急踩油门超过一定的速率和深度,系统通过对环境的探测,对比实际应该执行的驾驶风格,判定司机可能是误把油门当成刹车踏板,此时系统会发出误踩制动警报告知司机当前操作为误操作。
B.差异较小, 则说明自动驾驶算法本身还不够完善,需要从当前的实际驾驶情况学习新的自动控制策略。如在某一个工况下,系统判定需要减速,并以较大的减速度进行减速,结果,导致车辆跟随前车行驶时停止距离较大;在随后的训练中,系统需要学习司机在该工况下实际踩踏板的深度和速率,因此系统后续发送的加速度会尽量模仿司机的加减速度及速率。
崔迪潇博士还举了一个例子:有些场景,如果司机采用了滑行(无油门、无刹车)的驾驶行为( 即 “省油模式”),而算法却没有触发“省油模式”,则影子系统会触发感知、预测及决策各模块的数据回传。
看起来,这里已经提到了一个 “上帝视角”的判断逻辑标准,用于判断司机 和机器的控制谁更优,从而帮助自动驾驶算法做下一步的优化控制。但在具体实践中,如何确保这个判断标准的有效性,依然是个挑战。如果司机错了, “上帝”却没有看出来,便会触发对无效数据的回传,甚至可能引发对于驾驶行为参数的误调整。
不过,对这个问题,张洪滨的解释是:在端到端系统中,司机的大规模普遍行为会引发端到端网络模型的驾驶偏向。比如某个区域普遍被接受的速度惯例,未必和当地交管部门的限速指标直接划等号,你在这个大环境下学习到当地的驾驶习惯,不见得是坏事儿。从另一个角度说,影子模式依赖车队的规模,在车队规模足够大时,激进的驾驶行为往往被平均掉了。
4. 影子模式的评价机制并不科学 ——它无法直接拿到决策端的数据,而是从执行端(有一套控制算法在“空跑”)的轨迹“倒推”决策环节是否出错。这就遇到一个问题,如果决策本身是OK的,但控制端有问题,而影子模式却误以为是决策端出了问题呢?
还有一种可能性,表面上是系统的决策跟司机的决策不一致,但实际上,决策算法本身是OK的,是上游的感知环节出了问题,进而误导了决策。如何将这种情况跟决策算法本身出错的情况区别开来?
实践中,很多公司用的是“追溯法”。
比如在某个场景下出现了 “不该有的急刹车”,工程师需要去追溯感知环节的数据。如果感知环节没有看见所谓的“障碍物”,只是预测系统预测到旁边某个人要cut in了,然后决定刹车,结果,那个人实际上并没有cut in,这就是预测 算法的问题;若急刹车的原因是感知环节判定 “前方有障碍物”,那就是感知出了问题。
考虑到现阶段自动驾驶的感知难题仍未彻底解决,感知失灵误导预测和 决策的问题时有发生,所以,当前用影子模式收集到的 “预测/ 决策失灵 ”场景数据,颗粒度特别粗,有很多其实都是无效数据。
然而,这些无效数据,已经是影子模式经过“精选”后认为“有价值”的,因而不会保留在车端,而是需要回传。回传这些无效数据,既浪费流量,又浪费存储空间。
此外,诚然可以通过 追溯把因感知失灵误导决策的无效数据过滤掉,但这些工作都需要由人工来完成,费时费力,成本极高。
汪浩伟认为,对于影子模式数据的处理,如果要一个一个去人工处理,对资源的消耗太大。“一种设想是引入深度学习中的增强学习方法,让系统自发的去学习,但这就意味我们要全盘接受一个通过‘训练’而完善的决策算法,这一点目前还无法做到的;所以,现在还是基于测量统计学的方法论,来处理采集得到的数据。”
5.某些场景下,感知模块已经出错了,但从控制端来看,系统开跟人开没什么差异,这种场景的数据便无法通过影子模式获取。
原因是,感知算法分检测模块和后处理算法模块,若 检测 模块出了 问题,但 后处理算法模块 还是能够把 检测模块 漏检或者 误监的痕迹给 “抹平” ,使跟踪 出的结果是 平滑的 、 准确的, 那决策和控制就不会受影响。
为了把这种场景的数据筛选出来,一些公司的做法是,观察检测端到跟踪端的数据之间有没有很大的跳变,如果有,就触发数据回传。但这个工作量会很大。
只有等感知的问题基本都解决了,自动驾驶能进入 “拼决策 算法 ”的阶段后,影子模式的价值才能真正凸显出来。
6.数据都回传回来了,你有没有能力使用?数据发挥价值的最主要途径就是仿真,但用真实道路做仿真的难度很大,目前只有极个别公司具备这些能力,大部分公司只能用算法建模的数据做仿真。
如果不具备用真实数据做仿真的能力,则无论影子模式收集了多少数据,其价值也无法充分发挥出来。也正因为如此,有一些原先声称在做影子模式的车企后来改口 说,当前,收集回来的数据 “尚未被激活”。因此,接下来,这些走渐进式路线的公司需要加大对仿真技术的投入。
7. 哪怕仿真能力补齐了,走渐进式路线的公司,也未必就能凭借做 “影子模式”积累的数据打败直接做L4的公司。据多位业内资深专家分析,能否将L2的车辆(通常传感器配置比较低)上积累的数据复用做L4的算法训练,会是走渐进式路线的公司们面对的最大挑战之一。
针对 “数据打通”问题,很多车企的策略是在L2 的量产车上做 “硬件预埋”,但传感器正处于快速迭代的过程中,目前“预埋”的硬件能否“一次到位”,还是个很大的悬念。
(这个观点,我们在《Robotaxi公司做L2前装量产,机遇与挑战并存》一文中有更详细的解读。)