这一篇文章是根据Tesla Autopilot 部门主管Andrej Karpathy 在二月份时所
做的一场演讲写的。Andrej Karpathy 专门研究深度学习以及影像识别,他在
史丹佛大学念博士时是李飞飞的学生,毕业后加入OpenAI,2017年时加入Tesla。
他在这场演讲时提到很多Tesla 目前正在做的事情,其中最有趣的应该是利用
软件算法制造出鸟瞰图,以及如何应用软件算法来辨识距离,甚至可以做到辨
识每个像素的深度是多少。
演讲影片:
https://youtu.be/hx7BXih7zx8
=====================================================================
https://36kr.com/p/708377901357573
特斯拉高管揭秘自动驾驶技术:48种神经网络上阵,最多可检测1000种物体
特斯拉是怎么靠摄像头,来做到城市自动驾驶的?
编者按:本文来自微信公众号“车东西”(ID:chedongxi),作者James,36氪经授权发
布。
近日,特斯拉更新了自动驾驶软件的2020.12版本更新,在这一版更新中,特斯拉加入了
交通信号灯和停车标志识别的自动驾驶功能。如果特斯拉选配了FSD完全自动驾驶能力套
件,就能通过OTA升级体验车辆在红灯前自动停下,绿灯亮起后又自动加速的自动驾驶功
能。
这项功能正式发布,为即将到来的特斯拉城市道路自动驾驶打下基础,也标志着特斯拉向
“完全自动驾驶”又迈进了一步。
https://i.imgur.com/rwIbUDd.gif
▲特斯拉交通信号灯识别功能
对交通信号灯和停车标志的识别实际上并不容易。对于驾驶员来说很容易识别的内容,对
于还不太聪明的机器来说还是个不小的挑战。例如,不同车道有不同的交通信号灯,停车
标志也是五花八门,有些还被遮挡,这就非常考验机器识别的效率和准确性。
今年2月,特斯拉人工智能高级主管Andrej Karpathy发表了一个演讲,他在演讲中阐述了
特斯拉是如何凭借视觉系统识别道路环境,并应用于自动驾驶当中的。
https://i.imgur.com/CygIlsj.png
▲Andrej Karpathy的演讲视频
特斯拉利用“影子模式”,在驾驶员驾驶的过程中,自动驾驶电脑进行实时同步计算,但
不参与车辆控制。一旦驾驶员的操作和机器的计算有所出入,特斯拉的自动驾驶电脑就会
记录下这个案例,并上传给特斯拉总部。在收集到大量的数据之后,特斯拉将不同场景进
行分类,机器学习之后就能让整个识别算法更加“聪明”。
在应用于车辆时,特斯拉还会利用机器学习,用二维的图像计算出三维的场景,就能准确
判断与障碍物之间的距离,实现更加精准的自动驾驶功能。
特斯拉自动等红灯,离城市自动驾驶又近一步
4月24日,特斯拉向用户推出了2020.12软件更新。在这一更新中,特斯拉正式推出了“识
别交通信号灯和停车标志并做出反应”功能。
选配有FSD的特斯拉车主在更新软件之后,车辆就可以自动识别红绿灯和停车标志。如果
前方有禁止通行的红灯或停车标志,特斯拉会在车机屏幕上提前发出提示信息,告诉驾驶
员距离前方停止线的距离。
如果驾驶员没有及时采取制动措施,车辆制动系统就会及时介入,并缓缓停在停止线之前
。在绿灯亮起之后,车辆会自动继续加速前进。如果驾驶员在需要停车的路口确认安全之
后,踩下加速踏板,车辆也会重新加速前进。
https://i.imgur.com/8AG21ZO.gif
▲特斯拉软件更新后车主的测试
在行驶过程中,车辆可以检测到前方的绿灯、黄灯闪烁和红灯,并在车机上显示。如果检
测到前方有红灯或停车标志,车辆会提前提醒驾驶员停止线的位置,如果驾驶员没有做出
反应,车辆就会自动减速并停在停止线前。如果驾驶员确认安全后希望前行,只要踩下油
门踏板,车辆就会继续加速前进。
不过,由于这项功能刚刚发布,运行的逻辑会比较保守,车辆在一些情况下不会尝试自行
通过交叉路口。随着使用这一功能车辆数量的增加,特斯拉自动驾驶计算芯片进行机器学
习后会让这项功能更加完善。
根据此前公布的特斯拉自动驾驶使用手册,这项功能实际也有一定的局限性。特斯拉表示
,虽然车辆可以自行监测前方的交通信号灯和停车标志,但驾驶责任完全由驾驶员负责。
驾驶员需要始终注意行车道上发生的情况,并随时准备采取紧急措施。
https://i.imgur.com/qioQP0A.png
▲特斯拉交通信号灯和停车标志识别功能使用手册(美国版)
值得注意的是,用户手册中有这样一句话:如果在特斯拉汽车行驶较多的路段,停车标志
和交通信号灯的识别准确度会更高。也就是说,特斯拉确实是依靠深度学习让算法变得更
加优秀,并且同一场景学习的次数越多,识别准确率也就越高。
此外,信号灯和停车标志识别功能也不是在所有场景都可以使用。特斯拉在使用手册中表
示,在美国地区,铁路道口、禁区、收费站、人行横道区域、不清晰或临时的交通信号灯
、复杂信号灯和车道指示灯等环境下都无法启用这项功能。
这项功能更新是特斯拉FSD自动驾驶系统的一大进步,也让特斯拉距离城市道路的自动驾
驶更近一步。
今年2月,特斯拉人工智能高级主管Andrej Karpathy在ScaledML会议上的一次演讲,就透
露了特斯拉自动驾驶系统的最新进展。利用机器学习的算法,特斯拉就能准确判断路旁的
信号标志,同时也能计算出与停止线、障碍物之间的距离信息。
特斯拉强在哪?上百万车主帮特斯拉测试软件
在特斯拉人工智能高级主管Andrej Karpathy的演讲中,首先对特斯拉自动驾驶系统的工
作原理进行了讲解。他表示,当前特斯拉主要依靠视觉系统采集图像信号,自动驾驶电脑
进行计算之后,就能控制车辆的车速和转向,从而实现自动驾驶。在这个过程中,自动驾
驶电脑的计算是最重要的一环,需要人工智能算法提供支持。
https://i.imgur.com/Wkir1z6.png
▲Andrej Karpathy演讲现场
在今年2月美国加州车管局(DMV)公布的自动驾驶路侧数据可以发现,2019年全年,特斯
拉官方进行的自动驾驶公路测试仅有12.2英里(约合19.6公里)。与百度、Waymo、
Cruise等公司每年动辄数十万上百万英里的自动驾驶测试里程相比,可以说特斯拉官方相
当于没有进行测试。
如果不进行大量的自动驾驶测试,特斯拉又如何进步呢?原来,特斯拉的测试者是百万量
级的特斯拉车主,依靠“影子模式”进行自动驾驶测试的。
2016年,特斯拉发布了“影子模式”,在驾驶员驾驶过程中,装有HW1及更新自动驾驶电
脑的特斯拉就能实时进行自动驾驶运算,但不会参与控制车辆的方向和速度。如果驾驶员
的操作和自动驾驶电脑的操作有较大出入,自动驾驶电脑就会自动记录下这个案例,并上
传给特斯拉。
从2018年正式启用至今,影子模式已运算了超过30亿英里(约合48.3亿公里)的驾驶里程
。每天,特斯拉自动驾驶研发团队都会收到大量的案例:驾驶员停车,自动驾驶电脑继续
前进;驾驶员向左微调了方向,自动驾驶电脑直行前进;当然,也会有驾驶员发生碰撞,
但自动驾驶电脑避开危险。
举例来说,路旁的停止标志并不全都清晰可见,有些被树叶挡住,有些属于临时标志,有
些标志在夜间非常模糊,还有部分停车标志左转停车,右转不用停……这些并不清晰的标
志就有可能对自动驾驶电脑产生干扰,一旦识别出错,可能就会造成驾驶事故。
https://i.imgur.com/Sdem0m1.png
▲上图:不清晰的停车标志;下图:有条件的停车标志
为解决这个问题,特斯拉利用了数据引擎对算法进行训练。首先,车辆将收集的数据回传
至特斯拉自动驾驶研发部门,然后特斯拉相似的场景进行分类,同一类的机器学习训练,
让特斯拉的算法更强大,也更加“聪明”。
https://i.imgur.com/9ExOLAg.png
▲特斯拉的“数据引擎”机器学习模型
在对算法进行训练之后,特斯拉会持续关注自动驾驶电脑对类似场景的识别准确率,形成
下面这个表格。
从中可以看出,特斯拉对Stop Sign(停止标识)这一种路牌,竟然给出了至少14种可能
存在的情况,包括大雨、大雪下的路牌、被挡住的路牌、校车上路牌、甚至还有门上的路
牌、手持路牌等。
也就是说,特斯拉的目标是要在各种特殊情况下,都能识别路牌。
https://i.imgur.com/4Vy7IX9.png
▲同一标志在不同场景下的准确度评估
回到正题,特斯拉在训练完模型后,会把算法通过影子模式进行测试,对每一个场景的识
别准确率进行重新评估,准确率不断提高,也就意味着算法正在一点点进步。当识别准确
率提升到了较高水平,特斯拉就可以考虑对所有车辆进行功能更新,增加自动驾驶的功能
和使用场景。
这里面讲一个有趣的小细节。
特斯拉此前推送了识别雪糕筒的更新,有用户为了弄明白特斯拉能识别哪一些雪糕筒专门
进行了一个堪称变态的测试。
这里测试的道具除了大小高低不同的雪糕筒之外,他们竟然还有一个穿着雪糕筒衣服的人
类作为道具。从视频中看,只要穿着雪糕筒衣服的人类在移动或者站着,特斯拉就能识别
出这是一个人。但如果这个人蹲下不动,就会被识别为雪糕筒。
https://i.imgur.com/MihqYNa.gif
▲外国网友穿着雪糕筒的衣服,但没有骗过特斯拉
这也就说明,特斯拉在识别雪糕筒这件事儿上,也同时考虑到了大量的特殊情况,才会表
现出这种成绩。
从算法的代码层面来说,特斯拉把它们的深度学习网络称为HydraNet。其中,基础算法代
码是共享的,整个HydraNet包含48个不同的神经网络,通过这48个神经网络,就能输出
1000个不同的预测张量。理论上来说,特斯拉的这个超级网络,能同时检测1000种物体。
完成这些运算并不简单,特斯拉已经耗费了7万个GPU小时进行深度学习模型训练。
https://i.imgur.com/LDGRiA5.png
▲特斯拉HydraNet网络
虽然工作量很大,但由于大部分工作由机器承担,特斯拉的人工智能团队仅由几十人组成
,与其他自动驾驶公司数百人甚至数千人的规模相比,确实规模不大。
二维图像秒变3D,算法还能自己改代码
在经过大量的机器学习训练之后,特斯拉的算法会逐渐成熟,这套算法也会以OTA升级的
方式分发到每一辆特斯拉汽车当中,在车主实际驾驶过程中还能进一步试错,让算法更加
完美。
研发这套算法的最终目的是要实现特斯拉的自动驾驶功能,最终还是需要车上硬件互相配
合才能实现。
特斯拉全车共配备了8个摄像头,一个毫米波雷达和12个超声波雷达,监测外部环境,向
自动驾驶电脑实时传送信息。
https://i.imgur.com/3hADxjC.png
▲特斯拉车外传感器
简单来看,特斯拉的摄像头、毫米波雷达、超声波雷达以及惯性测量单元记录下当前车辆
所处的环境数据,并将数据发送给特斯拉的自动驾驶电脑。自动驾驶电脑在进行算法的计
算之后,将速度和方向信息传递给转向舵以及加速、制动踏板,实现对车辆的控制。
不过,在日常行驶过程中,摄像头作为传感器捕捉的内容都是二维图像,并没有深度信息
。
https://i.imgur.com/UcCwY1u.png
▲特斯拉摄像头采集的画面可以确定边界,但不包含深度信息
也就是说,虽然二维图像已经可以区分公路和路旁的人行道,但并不知道现在车辆距离“
马路牙子”还有多远。由于缺失这样一个重要信息,自动驾驶的运算可能并不准确,操作
可能出错。因此,捕捉或者建立一个三维的图景很有必要。
传统工程师认为,直接在车顶安装三维摄像机就能解决这一问题。不过,这既要增加车辆
的制造成本,又影响车辆美观。此外,由于车顶面积比较大,如果三维摄像头高度不够,
盲区将会非常大。
特斯拉的工程师又想到用算法解决这个问题。如果有一种算法能够将二维图景的时序、边
缘对齐,投影形成三维图景,这个问题就解决了。
https://i.imgur.com/QHlqv0f.png
▲通过算法得出的“鸟瞰视图”
在计算出三维图景之后,特斯拉甚至可以计算出车辆的“鸟瞰视图”。也就是说,虽然车
辆上方没有摄像头,但通过计算就能模拟出从车辆上方向下看的图景。这样一来,车辆离
障碍物还有多远的距离,车内都能直观地看到。
https://i.imgur.com/I39uSbL.gif
▲特斯拉视觉系统预测的马路边缘和车道线
实际上,特斯拉还有更厉害的地方,那就是算法可以预测流媒体视频中每一个像素的深度
信息。也就是说,只要算法足够好,流媒体视频更加清晰,特斯拉的视觉传感器所捕捉的
深度信息甚至可以超过激光雷达。
https://i.imgur.com/r9LorZ1.gif
▲特斯拉采集视觉信息(上),预测每一个像素的深度信息(中)并投影形成鸟瞰视图(
下)
在实际的自动驾驶应用中,泊车入位和智能召唤两个使用场景下就能充分利用这套算法。
在停车场行驶时,车辆之间的距离很小,即使是驾驶员驾驶,稍不留神也很容易出现刮蹭
事故。对于机器来说,停车场场景的行驶更加困难。在预测到深度信息之后,车辆可以在
超声波雷达的辅助之下,快速完成对周围环境的识别,车辆泊车就会更加顺利。
在完成深度信息的预测之后,这部分信息会显示在车机上,同时也会直接参与控制转向、
加速、制动等驾驶动作。不过,转向、加速、制动这些驾驶策略没有固定的规则,有一定
灵活性。
因此,自动驾驶的驾驶策略没有最佳,只有更好。
特斯拉基础的自动驾驶策略由工程师完成,已经写出了大量的代码,这相当于是驾驶策略
的1.0版本代码。不过,由于实际路况更加复杂,1.0版本的驾驶策略代码实际覆蓋范围较
小,逻辑也难免出错。随着时间推移,必须要不断升级驾驶策略。
Andrej Karpathy表示,如果在机器学习网络中不断升级策略代码,这样既节省了人工成
本,自动驾驶能力进步的速度也会明显加快。
在驾驶员驾驶的过程中,车辆也会收集驾驶员的驾驶习惯。通过对百万特斯拉车主驾驶习
惯的学习,特斯拉的自动啊及时策略就会不断提高。
通过对百万车主驾驶习惯的学习,机器可以编译出自动驾驶策略的2.0版本代码。
https://i.imgur.com/XMRxLmU.png
▲机器编译的2.0版本代码正在逐渐取代1.0版本代码
Andrej Karpathy预测,随着机器的编译能力提高、采集的数据更加丰富,2.0版本的代码
会逐渐覆蓋1.0版本的代码,最终实现所有代码都由机器编译完成,这样的自动驾驶策略
就会更加精确。
结语:自动驾驶之争正转变为算法之争
在自动驾驶不断发展的今天,特斯拉已经形成自己的一派,完全使用视觉识别就能完成自
动驾驶。自动驾驶技术也从之前的摄像头、毫米波雷达、超声波雷达甚至激光雷达的堆料
,逐步转变为算法之间的竞争。
特斯拉利用百万辆每天行驶在道路上的汽车进行自动驾驶计算,其数据源、精准度很可能
已经远远超过其他的自动驾驶测试公司。未来,算法之争还将逐步扩大,同时自动驾驶市
场的竞争也将更加激烈。