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