先看一项关键更新。特斯拉近期推送了自动驾驶软件2020.12版本,其中最重要的变化是新增了交通信号灯和停车标志识别功能。换句话说,只要车辆选配了FSD完全自动驾驶能力套件,通过OTA升级后,车辆便能在红灯亮起时自动停车,绿灯亮起后自动提速前行。
这项功能的正式落地,意味着特斯拉在城市道路自动驾驶领域又迈出了重要一步,也为未来实现完全自动驾驶奠定了关键基础。

▲特斯拉交通信号灯识别功能的实际演示
不过,说起来容易做起来难。识别交通信号灯和停车标志,远比想象中复杂。对于人类驾驶员来说一目了然的信息,在机器眼中却完全是另一番景象。例如,不同车道可能对应各自独立的信号灯,路边的停车标志形态各异,有些被树叶遮挡,有些藏在拐角处。如何让机器在瞬间精准识别?这考验的是识别算法的效率与准确性。
今年2月,特斯拉人工智能高级主管Andrej Karpathy在一次演讲中,详细介绍了特斯拉如何依靠视觉系统解读道路环境,并将其转化为自动驾驶决策。感兴趣的可以观看那段视频。

▲Andrej Karpathy的演讲视频内容解析
这里的关键在于“影子模式”。当驾驶员正常驾驶时,车辆背后的自动驾驶电脑也在同步计算,只是不参与实际控制。如果驾驶员的操作与电脑的判断出现偏差,系统会自动记录这个“案例”,并上传至特斯拉服务器。海量数据汇集后,特斯拉会对不同场景进行分类,利用机器学习不断训练算法,使其越来越“聪明”。
最终在车辆端,机器还能通过机器学习将二维图像“还原”成三维场景,从而精确判断障碍物距离,让自动驾驶更加可靠。
一、特斯拉自动等待红灯,城市自动驾驶更进一步
4月24日,特斯拉正式向用户推送2020.12软件更新,核心功能便是“识别交通信号灯和停车标志并做出反应”。对于选配FSD的车主来说,更新后车辆能够自动识别红绿灯和停车标志。如果前方遇到红灯或停车标志,车机屏幕上会提前显示距离停止线的位置。如果驾驶员未及时制动,系统会主动介入,让车辆缓缓停在停止线前。绿灯亮起后,车辆又会自动加速通过。当然,如果驾驶员在需要停车时确认安全后踩下油门,系统也会配合加速。

▲车主实测特斯拉软件更新后的效果
具体来说,车辆在行驶中能够检测前方的绿灯、黄灯闪烁和红灯,并在屏幕上显示。一旦发现红灯或停车标志,系统会提前提示并主动减速停车。如果驾驶员判断安全后想继续行驶,踩下加速踏板即可恢复行驶。
不过,由于刚刚发布,这套逻辑目前相对保守,比如在某些交叉路口不会自行尝试通过。当然,随着使用该功能的车辆增多,这套算法将从海量实战中不断自我优化。
特斯拉官方也在使用手册中明确表示:车辆虽然能自动识别交通信号灯和停车标志,但最终驾驶责任仍属于驾驶员。驾驶员需要时刻关注路况,做好随时接管的准备。

▲特斯拉交通信号灯和停车标志识别功能使用手册(美国版)
注意手册中的一句话:在特斯拉行驶较多的路段,识别准确度会更高。这也印证了特斯拉确实在利用深度学习反复打磨算法,同一场景学习的次数越多,识别就越精准。
当然,并非所有场景都支持该功能。目前在美国,铁路道口、禁区、收费站、人行横道、不清晰的交通信号灯、复杂信号灯以及车道指示灯等环境尚不支持此项功能。
无论如何,这次更新对特斯拉FSD自动驾驶系统意义重大,也让城市道路自动驾驶的落地预期更加清晰。今年2月Andrej Karpathy的演讲其实已经透露了相关的核心算法进展:利用机器学习判断路旁标志,同时计算与停止线、障碍物的距离。
二、特斯拉强在哪?上百万车主帮它测试软件
在这次演讲中,Andrej Karpathy首先介绍了特斯拉自动驾驶系统的工作原理。简单来说,它主要依靠视觉系统采集图像,然后通过自动驾驶电脑进行计算,控制车速和转向。整个过程中,计算能力是关键,背后依赖人工智能算法。

▲Andrej Karpathy演讲现场
说到这儿,有个数据挺有意思。今年2月加州车管局公布的自动驾驶路测数据显示,2019年全年特斯拉官方进行的自动驾驶测试只有12.2英里(约19.6公里)。这与百度、Waymo、Cruise每年动辄上百万英里的测试里程相比,简直微不足道。那特斯拉如何进步?
答案就在“影子模式”。2016年特斯拉推出该模式后,每一辆配备HW1及以上自动驾驶电脑的特斯拉,在日常行驶中都会同步计算,但不参与控制。一旦驾驶员的操作与机器判断出现分歧,这个“案例”就会被记录并上传。从2018年正式启用至今,影子模式已经处理了超过30亿英里(约48.3亿公里)的驾驶数据。每天,特斯拉的研发团队都会收到海量案例,例如“驾驶员停了车,但电脑预测继续走”、“驾驶员向左微调方向,电脑认为应该直行”,也包括“驾驶员撞了东西,但电脑提前检测到危险”。
举例来说,路边的停车标志并不总是清晰可见,可能被树叶遮挡,也可能是临时、夜间的模糊标志,甚至有些停车标志写着“左转停、右转可不停”。这些千奇百怪的干扰,都会给机器识别带来巨大挑战。

▲上图:不清晰的停车标志;下图:有条件的停车标志
如何解决?特斯拉布局了一个“数据引擎”来训练算法。车辆收集数据回传后,特斯拉会进行分类,然后用同类场景反复进行机器学习训练,持续迭代算法。

▲特斯拉的“数据引擎”机器学习模型
训练之后,特斯拉会持续跟踪算法在各类场景中的准确率,并形成表格。从表格来看,光是“Stop Sign(停止标识)”这一种标志,特斯拉就列出了至少14种特殊场景,包括大雨、大雪、被遮挡、校车上路牌、甚至门上路牌、手持路牌等。目标就是保证在任何特殊情况下都能准确识别。

▲同一标志在不同场景下的准确度评估
算法模型训练完毕后,会通过影子模式进行实测,持续提升各类场景的识别准确率。当准确率达到足够高的水平后,特斯拉就会考虑向所有车辆推送功能更新。
这里插一个小细节。之前特斯拉推送了一个识别雪糕筒的更新,有用户为了测试它的能力,硬是做了一个堪称“变态”的实验。道具不仅有各种大小高低的雪糕筒,还让一个穿着雪糕筒衣服的人类参与测试。结果发现,只要这个人站着或走动,特斯拉能识别出他是人;但如果这个人蹲下不动,就会被误认为是雪糕筒。

▲外国网友穿雪糕筒衣服测试,但没有骗过特斯拉
这说明,即便是“识别雪糕筒”这种细分功能,特斯拉也把大量特殊情况考虑进去了。
代码层面,特斯拉将深度学习网络命名为HydraNet。基础代码共享,整个网络包含48个不同的神经网络,能输出1000个不同的预测张量。理论上,这个超级网络可以同时检测1000种物体。为了完成这些计算,特斯拉已经耗费了7万个GPU小时进行模型训练。

▲特斯拉HydraNet网络架构
工作量大归大,好在大部分由机器代劳,特斯拉的人工智能团队只有几十人。相比其他自动驾驶公司动辄数百人甚至数千人的规模,这个团队确实非常精干。
三、二维图像秒变3D,算法还能自己改代码
经过大量训练后,算法会逐渐成熟,通过OTA升级分发到每一辆特斯拉。在实际驾驶过程中,算法还能继续自我迭代,越来越完善。
最终要实现完整的自动驾驶功能,还需要硬件配合。特斯拉全车配备了8个摄像头、1个毫米波雷达和12个超声波雷达,持续监测外界并将数据发送给自动驾驶电脑。

▲特斯拉车外传感器分布
大致流程是:摄像头、毫米波雷达、超声波雷达以及惯性测量单元记录下环境数据,自动驾驶电脑通过算法计算后,将速度和方向指令传递给转向系统、加速踏板和制动踏板,完成车辆控制。不过,日常行驶中,摄像头拍到的都是二维图像,没有深度信息。

▲特斯拉摄像头采集的画面可以确定边界,但不包含深度信息
通俗点说,二维图像虽然能区分公路和人行道,但无法告诉你车子离“马路牙子”还有多远。缺失这个信息,自动驾驶的判断就容易出错。那怎么办呢?传统思路是在车顶安装三维摄像头,但成本高、不美观,而且如果高度不够,盲区会很大。
特斯拉的工程师们决定用算法解决问题。如果能用算法将二维图景的时序、边缘对齐,然后投影出一个三维场景,问题就迎刃而解了。

▲通过算法得出的“鸟瞰视图”
算出三维场景后,甚至可以模拟出“鸟瞰视图”——明明车顶没有摄像头,却能模拟出从上方往下看的画面。这样一来,车辆离障碍物有多远,车内屏幕就能直观显示出来。

▲特斯拉视觉系统预测的马路边缘和车道线
更厉害的是,这套算法还能预测流媒体视频中每一个像素的深度信息。换句话说,只要算法足够强,视觉传感器获取的深度信息甚至能超过激光雷达。

▲特斯拉采集视觉信息(上),预测每一个像素的深度信息(中),并投影形成鸟瞰视图(下)
在实际应用中,这种能力在泊车入位和智能召唤两个场景中已经表现得很突出。停车场里车子间距很小,驾驶员稍不留神都可能蹭到,机器操作就更难了。有了深度信息之后,车辆在超声波雷达协助下能更快完成环境识别,泊车更顺畅。
这些深度信息一方面在车机上显示,另一方面也会直接参与控制转向、加速、制动等动作。不过驾驶策略没有固定规则,有一定灵活性,没有“最佳”只有“更好”。
目前,特斯拉基础的驾驶策略由工程师编写了大量代码,算是1.0版本。但实际路况太复杂,1.0覆盖范围有限,而且容易出现逻辑漏洞。随着时间推移,必须不断升级。
Andrej Karpathy说,如果在机器学习网络中持续更新策略代码,既能节省人力成本,自动驾驶的进步速度也会明显加快。车辆在日常行驶中记录驾驶员的习惯,然后通过对百万车主驾驶习惯的学习,机器就能自动编译出自动驾驶策略的2.0版本代码。

▲机器编译的2.0版本代码正在逐渐取代1.0版本代码
他预测,随着机器编译能力提升和数据越发丰富,2.0会逐渐覆盖1.0,最终全部由机器编译完成。到那时,自动驾驶策略的精确度将达到一个新的高度。
结语:自动驾驶之争,正转变为算法之争
在自动驾驶领域,特斯拉走出了一条独特的道路——纯视觉方案支撑起完整的自动驾驶能力。曾经大家比拼的是摄像头、毫米波雷达、超声波雷达甚至激光雷达的硬件堆料,现在趋势越来越明显,竞争正在转向算法层面。
特斯拉依靠百万辆在路上行驶的汽车,每天都有大量实际驾驶数据指导算法进化。其数据规模和真实场景的覆盖面,很可能已经远远甩开了其他自动驾驶测试公司。接下来,算法之争还会继续升级,自动驾驶市场的竞争也将越来越激烈。
