Comma.AI无人车幕后的人工智能算法,懂?
编者注:本文作者为奇点大学创始教师之一、无人车专家Brad Templeton。
图片来源:comma.ai
如今,世界上最让人神往的黑科技大概就是深度神经网络了,尤其是卷积神经网络,例如“深度学习”。这些网络正在征服人工智能和模式识别领域一些最大的难题。随着它们的进步,AI领域见证了许多里程碑,出现了达到、或超过人类能力的计算机系统。前阵子刷爆你朋友圈的阿尔法狗,就是该领域内一个新晋秀才。
尤其是在图像识别领域。在最近几年,神经网络系统在一些任务中已经开始超过人类,例如识别照片中的路牌,甚至在医学扫描影像中,比放射科医生更能够识别癌症。
这些网络正在影响机器人汽车的研发。他们为机器人技术和无人车驾驶带来了视觉系统应用,带来了重大进步,并且进步速度超过预期。两年以前我说,在没有激光雷达的情况下,视觉系统还不够好,要应用在安全的无人车上还早着呢。虽然那一天还没有到来,但是已经非常近了,没法再说“还早着呢“。与此同时,激光雷达和其他传感器也在进步,并且价格降低。Quanergy(我是该公司顾问)计划250美元的8线激光雷达今年可以出货,100美元的高清激光雷达在未来几年可以出货。
深度神经网络是MobilEye的一个主要工具,MobilEye是制造相机系统和机器视觉ASIC的耶路撒冷公司,针对ADAS(高级驾车助理系统)市场。这是在特斯拉无人驾驶中使用的芯片,特斯拉称,它做了很多自己的定制研发,而MobilEye称重要的部分还是来自于他们。NVIDIA通过宣传他们的高端GPU是汽车良好运行这些神经网络所必须的超级计算工具,强势进入了无人车市场。当然,这两家公司就GPU和ASCIC哪个更好没法达成一致――这个我们之后细说。
Comma.ai来了!
二月我乘坐的一辆实验车,把这个概念发挥到了极致。这个小创业公司Comma.ai由首个破解iPhone的黑客George Hotz带领,因为短时间内造出了功能类似其他汽车公司的无人车,吸引了媒体的目光。一月份的时候,我写过一篇文章介绍他们的方法,包括他们如何快速破解汽车的网络,简化电脑对汽车的控制。
他们是利用了CNN(Convolutional Neural Network, 卷积神经网络),而且几乎只用了CNN。他们的车从一个摄像头把图像导入网络,从网络中输出命令,调整方向盘和速度,让车子保持在车道内。这样,系统内的传统代码很少,只有神经网络和一些控制逻辑。
来看看视频,坐着无人车兜个风:
神经网络就是通过训练得来。 人们驾驶汽车,而汽车向驾车的人学习,懂得当视野里看见东西时该如何操作。 为了帮助训练,他们还给汽车配备了激光雷达,可以提供精确的环境3D扫描,可以更确定地监测道路上其他车辆和行人。让网络在训练中知道“在这些位置上真的有东西”,网络可以学会只通过摄像画面,就识别出同样的东西。开车时,网络得不到激光雷达数据,但是它确实能输出它认为其他汽车所在的位置,开发者因而可以测试它的视力如何。
这个方法既有趣,又惊悚。 这让我们可以开发靠谱的自动驾驶,但是与此同时,开发者也不太清楚其中的机制到底怎么一回事 ,而且,永远也没法搞懂它做出选择的依据。如果它出错,开发者大致也不知道为什么它会出错,虽然他们可以给系统更多的训练数据,直到系统再也不犯错。(他们还可以重播其他记录数据的情景,来确保新的训练数据不会带来新的错误。)
你需要大量的数据。用视觉系统开车,你得把摄像头提供的2D画面分隔为独立物体,建造一个你所看见的3D地图。你可以用视差角度、相对运动和两个摄像头,就像人类一样,但是你还得在这些形状中识别模式,从不同的距离、角度和光照条件看到它们时都能识别。 这长久以来都是是视觉领域的大挑战之一 ――你必须了解物品在不同光线下的情况,在阳光下、在散光下、在夜晚(在汽车灯光和其他灯光的照射下)、当阳光直射摄像头时、以及当树木在你的目标物体上投下移动阴影时。你必须在所有这些情况下,区分人行道、车道线、路肩、碎片垃圾以及路上的其他车辆。
而且你必须做到完美,也许开一百万英里只犯一次危险错误。一百万英里在视频里大约是二亿七千万帧画面。 幸运的是,不完美也没关系。 不能时时刻刻都识别每个物体也没关系。如果这一帧漏掉了这个物体,下一帧识别出来就没关系。真的,作为人类,你大概会同时看很多帧画面从而追踪运动,所有你只要别连续几秒钟都看走眼了就行。人类大脑虽然已经棒呆了,但是也不能在一个绝对静止的照片中毫无遗漏看到每一个细节,但是在一两秒中的视频中,大脑可以很好识别每一样东西。
就现在来说,大部分人们还不能如comma.ai所愿,答应让神经网络担当整个系统。这种方法也许能够制造需要人类监管的自动驾驶,但是对于完全自动且无监管的驾驶操作,我不太确定这是否是一个好方法。但是如果你有摄像头,神经网络会帮助你了解摄像头看见的是什么。
激光雷达 VS 视觉
如果告诉你,谷歌早期汽车几乎都不用摄像头,你也许会很震惊。 激光雷达系统太好用了,以至于摄像头唯一的用处大概是辨别红绿灯 (激光雷达不能分辨光和颜色)。从那以后,谷歌确立了作为神经网络技术领导者的地位,因此我们可以推测,谷歌内部已经努力在激光雷达、摄像头和其他传感器上做了“传感器融合”,可能已经非常擅长用神经网络来协助车辆。其他公司,例如Zoox和Daimler,也显示了在融合摄像头和激光雷达方面的实力。
2013年,我就激光雷达和摄像头的对比发表了一篇文章。在文章中,我指出激光雷达现在是可行的,而且一定会更加便宜,但是视觉不一定,而且需要一个技术突破才能达到要求。虽然我们还没有突破这个阈值,新的神经网络科技有希望让技术实现超越。
激光雷达的不足之一是低像素。 因此,虽然它不太可能监测不到车前的障碍物,它有可能搞不懂这个障碍物是什么。用CNN融合激光雷达和摄像头,可以让系统变得更强,能够识别物体意味着能够更好预测未来方向。
摄像头还可以弥补激光雷达的其他短处 ――近红外线激光雷达对深色物体(例如,黑色车子)有大约100米的识别范围。在高速公路上,100米的范围一定不够你用。视觉没有范围限制(除了在晚上),虽然东西离你越远,你图像像素的要求就越高,至少在你必须注意的范围内(主要是面前的路上)。像素越高,视觉处理所占用的CPU越多。因此MobilEye更新的组件中带有3个视野。一个是“远射镜头”的视觉,用来看正前方远处的物体,还有两个更宽的视野,用来看更近、更靠近两侧的物体。这是使用视觉的一个好策略。更棒的是,如果知道前面道路的起伏,你可以把注意力集中在路上,不用浪费像素或者处理路两边的东西。
一些人希望,视觉可以越来越好,足够让汽车像人一样不需要地图就能在任何道路上行驶。这项技术大致可以应用在非常简单的道路上,例如高速公路,大致相同,容易理解。 然而,这对人工智能研究来说是一种错误的思维方式。 就像飞机并不像鸟儿那样煽动翅膀飞行,机器系统也没必要非得照搬人类的方式。不需要地图就能够良好分类视野中的物体,这样的视觉系统也可以在没有人类的帮助下建造地图。当一辆车不止一次开过某个区域,制造地图的系统就可以获益,并且从足够多的云端超级计算机中获益。
图片来源:ideas.4brad.com
这种方法(可能)搞不定的地方
我在1月写了为何无人车中真正的阻碍是测试――虽然无人车成功面对这很多挑战,其中最大一个挑战是(向你自己和其他人)证明你真的做到了。
这是神经网络面临一个问题,因为很难知道他们是不是好用。 你不知道为什么他们可以运行,你只能衡量他们的表现。你可以用旧的传感数据重新测试你的神经网络,但是你很难百分白确定,刚才的训练不会在新情境下带来原本没有的新问题。
另一方面,传统系统过于复杂,以至于很难判断他们的表现。如果测试题目是“开一百万英里/公里,不发生两起以上事故,包括在模拟器想象出来的、和真实世界中记录的常复杂情况“,那么可能对策都是一样的, 系统到底是怎么样做出决定,这无所谓。
奇怪的法律优势
神经网络还可能面临一个奇怪的――我甚至想说“扭曲的”――法律优势。如果发生了事故,必然会引发一场混乱,大家想要弄明白事故发生的原因。尤其,原告的律师会热切想要证明开发者一方存在某些失误。
对于传统代码来说,你可能会发现原因是一种传统的bug ,例如臭名昭著的大小差一错误或其他类似错误。你会看到产生bug的原因(并能够修正bug),然后你可以大声宣布程序员,或者质量控制,在某种程度上存在失误。
但是对于神经网络,其中的bug并不是传统代码。 如果神经网络发生错误,我们没法清楚了解为什么,所以,不太可能说某人或某项操作失误了,除非法庭裁决认为整个神经网络概念就是一个失误。
那是一个更加复杂的问题,但是大致来说,如果团队遵循良好的职业习惯,发现失误就更难了。失误不是某种错误,而是勤奋工作的好人应该避免的错误,不过,出现失误并不是因为人们大意了。
这个扭曲的因素就是, 你对系统的内部机制了解越少,越不会被指责疏忽大意。
Via RoboHub