自动驾驶的历史中曾出现过这么一则奇怪的事故:2016 年美国佛州的高速公路上,司机约书亚 · 布朗开启特斯拉自动驾驶(Autopilot)模式,接着双手离开方向盘。

在一个路口,一辆白色卡车向左拐弯,正巧遇上布朗驾乘的特斯拉。



天空下的白色卡车|pixabay

据当时的目击者称,当白色卡车出现在面前时,布朗的特斯拉依然全速行驶,并径直撞上卡车的底部。调查显示,当时特斯拉的时速是每小时 119 公里。

布朗当场死亡。

但特斯拉依旧继续行驶,并逐渐偏离道路,直到撞上两个围栏,以及一根电线杆后,才停下。



事故示意图|Wikimedia Commons by Jzh2074

官方对这场事故的解释是:“无论是自动驾驶仪,还是驾驶员,都没有注意到拖车白色的一面映衬着明亮的天空,所以没有刹车。”也就是说,自动驾驶将阳光下的白色货车,认成了天空。

而这之后的五年里,又有至少三辆特斯拉,朝着白色卡车全速冲去——似乎自动驾驶依然无法分辨白色的巨物与发光的天空。

在自动驾驶的眼睛里,世界总是不太一样。

自动驾驶怎么看世界?

自动驾驶的眼睛主要由毫米波雷达、激光雷达和摄像头等传感器担任。

毫米波雷达利用电磁波的反射,测量物体的距离、速度等物理信息。它的抗干扰能力强,探测距离远,适合在雨雪风沙等恶劣的天气下使用。它还可以隐藏式安装,不影响车辆的整体外观。但它无法测量高度,世界在它眼里是扁平的。



购物平台上的毫米波雷达|淘宝截图

激光雷达则可以看到 3D 的世界,与毫米波雷达类似,激光雷达也是通过发送脉冲—接受反射的方式计算物体的距离、速度等信息。但因为激光是以光速传播,它的测量会更加精准。激光雷达每秒发出数千个脉冲,通过计算不同角度的反射光波,激光雷达可以还原出目标物体的三维立体图像。

激光雷达扫描示意图|Wikimedia Commons 

但想知道眼睛里的东西是什么,还是要交给摄像头。在算法的加持下,摄像头可以识别出前面的是人、动物还是建筑,不过,依旧是以 2D 的形式,像是看照片那样。

目前主流的识别方案是多传感器融合,像国内某些代表性车型,会拥有 5 个高精毫米波雷达,13 个车外摄像头和 1 个车内摄像头。

而特斯拉则坚持只用使用摄像头(在最新的更新中,特斯拉甚至放弃了车上最基础的超声波雷达,真的实现了全车无雷达纯视觉),理由是担心雷达和摄像头感知不一致时,汽车会不知道该相信谁。但更基础的理由是:一,纯摄像头方案成本更低;二,算法的突飞猛进的确能够弥补摄像头相比雷达的劣势。



特斯拉车内显示|unsplash

但不管哪种路线最终胜出,传感器都只能看见,要理解这些“看见”意味着什么,还是要靠感知算法。搭配不同传感器传来的信息,目前的算法可以知道汽车所处的位置和道路的模样,理解交通信号灯,追踪路上不断出现的障碍物,还可以读懂路标上的文字。

“老实的自动驾驶,已经胜过新手司机”,一定程度上的确如此。

当马路中央蹦出一只皮卡丘

但当一只皮卡丘蹦到马路中央时,自动驾驶一定是懵的。

当一只皮卡丘蹦到马路中央|Giphy

这种“罕见又突发”的意外情况,在自动驾驶行业中被称为边角案例(corner case, CC)。这是来自是系统测试中的一个术语,原意指出现多个参数都在极端情况下的情形。文章开头的事故,就是一例典型的 CC。

CC 通常被分为五个层次,对应着自动驾驶认知意外的不同复杂情况:某个像素点不清晰;场景从“习惯”切换成“不习惯”;出现不知名物体(但位置和目标清晰);位置和目标也不明确;直至目标、场景、环境的全面“意外”。

但任何一个小型 CC,都可能造成严重的后果。

大马路上出现一只可爱的黄毛电气老鼠,就是一种“未知物体”层面的 CC,识别失败的后果要么是你遭受十万伏特电击,要么是被精灵训练师爆锤。而真实世界中可能发生的事情只会更糟,沃尔沃的澳大利亚技术经理在2017年曾爆料,自家公司的自动驾驶不认识袋鼠。



袋鼠:“你不认识我”?|Giphy

“汽车通过利用地面作为参考点来探测动物,以确定物体的距离”,这位技术经理说,但当袋鼠蹦蹦跳跳地穿行在公路上,蹦在空中时,自动驾驶会将它识别成一件天空中的物体,判定它的距离比实际远很多;而当袋鼠落地,自动驾驶又会将它识别得比实际距离近一些。



自动驾驶难以识别袋鼠的蹦跳|Giphy

我们可以想象一个澳大利亚的沿海公路上,几只欢快跳跃的肌肉袋鼠旁,一辆自动驾驶汽车不知所措地面对着眼中这忽大忽小忽远忽近的不明物体,停也不是,走也不是。

想想都替它感到害怕。

一只激光笔干翻自动驾驶

下图可见,目前主流的传感器皆有其短板,都可造成对道路情况判断的不准确。



在传感器的局限下,算法变得很容易被“欺骗”。

曾有人实验过,将一束普通的激光照射在有轨电车上,自动驾驶就会把电车认作青蛙;当激光照射在海龟身上,海龟在自动驾驶眼中就成了水母;如果激光再变换一下颜色,它还会把一条蛇,依次识别为袜子、麦克风、菠萝蜜、玉米,或热狗肠。



激光变颜色,蛇就变形态|参考文献 [1] 

有自动驾驶的安全专家分析,这可能是因为算法将激光束的颜色也辨认为原有物体的一部分,比如当波长为 400nm 的激光束照射在“刺猬”上时,刺猬的刺与激光束引入的紫色结合后,会被算法最终辨认为“刺苞菜蓟”。



激光下,刺猬变刺苞菜蓟|参考文献 [1] 

如此迷惑算法的成功率很高,在室内和室外的测试中,成功率可以分别达到 100% 和 77.43%。而这样的激光笔,二三十块钱就能买到一只。

另一个 CC 产生的重要原因,来自于目前图像识别数据的无法穷举。图像识别的训练方法主要是人类塞资料,机器记忆和归类。算法像一个记忆力超群的小孩,可以记住塞入的任何资料和场景,但它尚不是成熟变通的高手,交通标示牌上黏了片树叶、摄像头上趴了只昆虫、都有可能让算法输出截然不同的结果。

为什么CC这么重要?

自动驾驶领域用“二八定律”形容解决 CC 问题的重要程度——要花 80% 的时间,才能解决这看似“罕见”的 20% 问题——他们说,这是通向真正意义上自动驾驶的必经之路。

精确识别 CC,正确处理 CC,这其实是安全和效率(或者说驾驶体验)平衡的问题。人们都是期待自动驾驶的绝对安全,却也没有人愿意接受每小时五公里还时不时频繁刹车的自动驾驶交通体验(况且低速与刹车同样会带来安全问题)。



没有人愿意接受频繁刹车的自动驾驶体验|Giphy

自动驾驶的危险和普及障碍不但来自于“有,但认不出”,也会来自“无,但误判了”。特斯拉曾经的“幽灵刹车”事件就是一个典型。

一名特斯拉车主在旧金山行驶时,路上飘着只塑料袋。“突然,汽车好像锁住了”,这名车主回忆,它的特斯拉从大约 40 公里每小时,突然自动减速到 24 公里每小时,“但它立刻松开,因为塑料袋移开了“。



公路上常见的塑料袋也会影响自动驾驶|Wikimedia Commons by Ivan Radic 

这名车主还比较幸运,至少他的车没有在旧金山车来车往的公路上突然刹车。2022 年 2 月至 6 月,美国国家公路交通安全管理局共收到了 404 起关于特斯拉莫名突然刹车的投诉。车主们用“幽灵刹车”形容这种遭遇——在没有危险情况发生时,开启自动驾驶辅助模式的特斯拉突然刹车或减速,这会提升追尾事故的风险。

美国卡内基梅隆大学专注于自动驾驶汽车安全方向研究的教授菲尔·库普曼分析,这或许是特斯拉的开发人员没能正确设定汽车的决策阈值导致,特别是特斯拉的信息识别几乎只依赖摄像头,而没有雷达等其他传感器的辅助。



公路交通,本就是我们创造出的最复杂系统之一|Giphy

好消息是,如今,特斯拉通过算法优化,已经解决的智能刹车的问题。但在我们通向“真·自动驾驶”的路上,还有更多的奇特案例等待解决——公路交通,本就是我们创造出的最复杂系统之一。