深入研究:特斯拉的 Autopilot 和自动驾驶架构 VS 基于激光雷达的系统们
原文作者 Paul Fosse,翻译:胡嘉禾
(译者注:作者首页 https://cleantechnica.com/author/pfosse/ )
在此文中,我打算试试来个非常技术也非常复杂的课题——就是特斯拉和其他自动驾驶系统的技术细节——然后试试能让非工程师的人能理解它。这个目标我可能能达成也可能达不成,看完请在评论里跟我说说你觉得我完成得怎么样。如果过程中太技术了然后你不小心学了一些你没想学的东西,我感到抱歉,也感到毫不抱歉。
我先回顾一下特斯拉所作选择的一些历史背景,看看黑客从观察特斯拉的 V8 和 V9 网络里收集的一些信息,再来解释为什么特斯拉现在来看最有可能成为第一个让自动驾驶在常见场景中(任何人能开车的地方)运行的公司。
我在这个网站上读过很多优秀的相关文章,解释了要造一辆全自动驾驶车所需的不同部件的不同方面。Michael Barnard 写的关于 “激光雷达、毫米波雷达、超声波雷达和被动视频(摄像头)” (译者注:我以后会慢慢都翻的)之间的差别的文章,能给你很好的基础知识,看完就可以开始慢慢了解设计师们如何从这些里面做选择。
基本来说,特斯拉用了三样成熟且低成本的技术来完成他们最擅长做的事:
1. 雷达,能在各种情况下(亮、暗、以及不同天气)看得到前方一个挺远的距离;
2. 超声波雷达,能在各种情况下测距;
3. 被动视频,能看得到各个方向上的远距离还能在各种人类可以安全驾驶的情况中识别不同的物体。
另外,Steven Hanley 去年的文章(译者注:我以后会慢慢都翻的),写的是当时新的研究表明激光雷达不是全自动驾驶的必要部件,那篇文章里有个 6 分钟的视频可以让你窥见马一龙对这个问题的一些思考。
读完这两篇文章之后,我就知道了特斯拉将和整个行业走上一条不同的道路,然而我当时依然好奇为什么特斯拉会这么决定。直到我听了 Rob Maurer 本周采访 Jimmy_D 的录音,我才把碎片信息终于拼到一起,明白了特斯拉为什么会走它选择的这条道路。
录音中 Jimmy_D 一上来先解释了神经网络是做计算机程序一种方法。我自己是 34 年的软件工程师,我对人工智能和神经网络基本都很清晰的了解,这两种技术多年来被高估以及多年不能实现大家的预期。之前看一个说法,是 J. S. Denker 说的,算是总结了这两项技术在行业里的印象:“神经网络是做所有东西的次最佳选择。”最近这一印象有所变化,但是在我讲这个之前,我要讲讲神经网络哪里和普通的编程不同,然后给大家举一个传统编程无法解决的领域的例子。
传统编程中,开发者要写一系列指示来告诉计算机要做什么。当机器学习尤其是用特定的神经网络来做机器学习时,你不需要告诉计算机该怎么做,你就给他灌一堆数据然后设计一个让他学习这些指示的系统就行了。
Jimmy_D 在采访中给出的例子是那个看图猜猫狗的。看的图可以是任何分辨率,也可以是黑白或者彩色,可以是近的或是远的,可以是各种角度。里面的动物什么年龄、品种、颜色也都可以。这个动物可能在跑、坐、睡、跳等等。
这里你就能想象,写传统的程序做这个事时你就必须用 “if, then, else, end” 这样的语句逻辑,所以要么就根本做不出来这么一个程序要么就需要巨大的开发团队花 N 多年来开发。但是随便一个小孩子则能很轻松的完成这个任务。他是怎么做到的呢?因为他是通过不同的实例学习的,不是像学英语拼写一样靠学习规则。
比如:
i 都在 e 前面
除非在 c 后面
或者念法和 a 一样时
比如 neighbor 和 weigh
(译者注:原文是 i before e, Except after c, Or when sounded as “a,” As in neighbor and weigh. 是英语国家孩子学拼写的时候背的小口诀)
这个例子可以看到我们学说一种语言和学习拼写时的对比,我们学说话(包括学习如何认出狗还是猫)靠的是我们自己的“神经网络”,而学习拼写时我们就像是传统的计算机程序——你需要牢记所有规则以及这些规则的例外情况。
所以,现在你理解了方法间基本的区别,还有一个很重要的信息是 2012 年发生的改变一切的一个转捩点。每年都有一个比赛叫“大规模视觉识别挑战”(译者注:原名 Large Scale Visual Recognition Challenge),一直以来每年比赛的胜者都是大的成熟的开发团队,直到 2012 年。
2012 年三个硕士学生用了一个他们花大概 6 个月开发出来的基于神经网络的模型震惊了行业,他们赢了!
神经网络(想想上面说的狗和猫的例子)在图像识别方面一直以来都优于传统编程,但是问题是如果你得用 100 年的处理能力去训练你的模型,那就什么用都没有了。
上述几个学生发明的创新方案是他们运用高端游戏卡的图像处理器(GPU)去训练他们的模型,而没有用一般的 CPU。用于一般目的的 CPU 在运行多种负载以及能对 30 年以前的老软件一样适用这两方面具有极大优势,但是他的这些灵活度也同时说明 CPU 们是 “万事皆通,无一精通。”(译者注:原文 Jack of all trades and master of none,表示博而不精)而 GPU 们则在数学和其他几个方面十分优秀。
这一转捩点改变了很多行业引领者这对复杂问题的解决方式,包括谷歌如何翻译一对较难互译的语言(比如,日文和英文)以及许多公司如何搞语音识别。我在三个月前首次在 CleanTechnica 发表的文章中说过,特斯拉也开发了一个能将矩阵乘法的计算速度提高 10 倍的新芯片(矩阵乘法是神经网络的主要运算)。
特斯拉队 Team Tesla
那么,特斯拉为何选择它这条路,毕竟其他所有人都走的是激光雷达路线,我觉得这个可以从三个方面解释:
特斯拉当时是个钱不多的小型初创公司,所以团队必须用便宜的传感器(比如毫米波雷达、超声波雷达和摄像头,都是挺便宜的)。行业里其他人有过或者依然有厚厚的钱口袋,所以他们有实力去玩昂贵的激光雷达系统。
特斯拉在 2012 年后(上文提到的转捩点)开始,或者说重新开始投入精力,且意识到这一转捩点改变了一切。
最重要的是,马一龙意识到了,设计让一台计算机去和人一样地开车(用摄像头做眼睛)比尝试重建全世界已经存在了一百多年的道路要快得多、便宜得多。无数文章讲到我们要想实现自动驾驶,需要新的道路、新的 5G 网络,更便宜的激光雷达……但是特斯拉的决定是,如果我们能就单单解决图像识别的问题(就是一辆车/一台计算机可以分辨一只狗一只猫一辆自行车一辆卡车),那么车就可以像人一样的去自动驾驶,而不需要去等新的路修好,新的网络弄好或者激光雷达降价了。
好了现在我们小小的理解了一些关于神经网络和特斯拉正在开发世上最牛的运行神经网络的硬件的内容,我们来聊聊 Jimmy_D 在特斯拉 V9 软件里发现的东西吧。
V9 运用了一个神经网络搭配一组权重值来处理全部 8 个摄像头。这样可能会让训练变得更难,毕竟每个摄像头看外面世界的视角不同,但是 Jimmy_D 表示希望这样一般性的抽象能够意味着如此训练这个神经网络,能使它对物体从各个视角观察的样子有更深入的理解。
他发现的另一项强化是这套网络每次同时处理 3 个颜色通道和 2 个帧。他猜测说这两帧来自于不同的时间点且因此可以用来探察动作,还能帮助判断图像中什么是前景什么是背景。并且,判断出一个物体的相对速度也有利于决策这个物体到底是个汽车、自行车还是行人。
现在看这次更新将处理的巨大扩张的数据量,已经大概达到了 2016 年 10 月以来所有车上装的 V2 和 V2.5 硬件的极限,未来为了进一步攫取重要的性能增量,我们则必须要等待下个春天的 V3 硬件了。
激光雷达队 Team LIDAR
所以,为什么其他所有人都选择激光雷达路线呢?因为啊,在 2007 年,配备了激光雷达的车辆创造了历史,他们成功地在城市环境中巡航穿过,并且遵守了交通规则。
这一说就十年前了,所以为什么现在我们还没实现自动驾驶呢?因为,根据我听的 Jimmy_D 的广播,巡航穿过城市且遵守交通规则是小儿科的东西。真正的难点是如何像一个真人一样开车,这样不要惹到路上开车的其他驾驶员。
咱们看哈,如果一辆自动驾驶车在路上什么也没碰着,但是却引起了一堆其他事故(或者更简单,引起其他驾驶员的困惑和不解),因为可能你驾驶的方式异常导致周边的司机都很蒙,社会(政府)会很快把这样的技术禁止掉。
但是如果各位在大公司或者政府机构中工作过,你就知道一旦一个组织沿着一个方向开始走,让他承认这个方向是完全错误的或者让他把资源投入到另一个方向就非常难了(由于管理者过分的自尊包括大型组织的组织惯性)——直到竞争对手打自己的脸。
我认为谷歌的体系有成功的机会,毕竟这家公司拥有强大的经济实力,然而他的方法的真正痛点来源于对三样东西的依赖:
谷歌的自动驾驶车只能在谷歌已经进行过高密度测绘以及处理过的区域中驾驶。
这些车需要激光雷达,但是他们无法在激光雷达成本下降之前部署上百万辆配置激光雷达的车辆。
要想让他们的自动驾驶车的驾驶方式不影响其他司机和行人,则要求车内有巨量的手写软件。
谷歌是有足够的钱来驱动上述前两点且有软件能力来驱动第三点的,我因此不会认为谷歌会在竞争中被甩下。但到他们能搞定一个城市,还是很难在其他城市容易地实现模化,因此他们可能在地方上取胜,却仍然会在尝试扩大市场规模的过程中败下来。
另一个问题是对在建区域和绕路的适应。
任何基于高精地图的解决方案(即,它看不懂路标)都很可能在未提示的环境变化下失灵。以摄像头为双眼然后按照路标像人一样躲开在建区域绕道应该相对更加灵活并具有更强的适应性。
谷歌的团队可能还没意识到它现在正把所有时间和金钱花费在像不要撞到别的东西这样简单的小问题上,且表面上看来甚至还没有开始去研究如何识别实时指引人类在世间通行的路标这个问题。
计算机的历史就是利用增长的算力去替代某些专门的设备。可以试试列 50 条你用来看这篇文章的手机所替代掉的东西。[有点儿无关但很有趣的作者记:根据文章不同,二分之一到五分之四比例的读者用智能手机来阅读我们的文字,我现在是在笔记本电脑上编辑这篇文章,这可是最近我写东西时越来越会注意到的事情]
总结
我是这样看这场自动驾驶之战的未来的,以上我提到的证据能说明,如果特斯拉能在另一竞争对手之前通过图像识别来领导市场,那么特斯拉队应该也能比激光雷达队更快的把这一解决方案进行规模化,其因有二:
特斯拉现在已经比对方有了更多的在路上跑的车,车上也都带着所有必要的传感器。
特斯拉的解决方案并不依赖对于道路信息的细节知晓,毕竟这套方案的设计初衷是阅读路标并对路标座出反应,并非把所有可能路线都提前计算好。
到 2019 年,我们将会看到这两只队伍开始放出更先进的落地设计,看他们之间的竞争必然令人兴奋。同样重要的是对于每支队伍他们需要知道自己家和别人家哪些东西才是可行的,并且针对这些信息快速做出反应。自动驾驶市场预计将在未来五年增长超过 36%,它必然是未来值得关注的重点!