当道路维修人员施工时,一条四车道的街道变成两车道,一名工人一手举着“停止”标志牌,一手示意车辆从另一边通过。这时,道路上驾驶汽车的司机完全不用思考就知道怎么通过,更不必停下车辆。
然而,这种情况将会让自动驾驶汽车停下来,因为自动驾驶汽车无法同时理解工人手中的标志牌和工人的手势,这两种意思对自动驾驶汽车来说太复杂了,它们不知道做出何种反应。
无论是人类还是计算机作为驾驶人员,每天都会遇到这种情况或者更为复杂的情况,很多时候读懂肢体语言非常关键。例如,在城市的某个街道拐角处,一名行人不顾红灯的指示,已经走到了道路中间,他停在道路中央查看手机时同时挥手让车辆继续拐弯通过。同时,路边又有一名行人一边朝街道对面的朋友挥手,一边闯红灯通过马路。对于人类驾驶员来说,他只需要扫一眼这些手势,就知道怎么操纵汽车了。但对于一辆自动驾驶汽车来说,这两个人的手势和意图简直是天大的谜团。
想在不阻止车流的情况下安全、无停留地应对这些挑战,需要自动驾驶汽车在非常规情况下了解行人的各种手势和动作,有时候还有一些肢体语言。人类驾驶员可以对这些手势和肢体语言不假思索地做出反应,但对于正在学习理解周围环境的计算机系统来说,这些都构成挑战。
世界各地的自动驾驶汽车开发人员已经进行了数年的研究,希望帮助自动驾驶汽车至少理解一些基本的手势,最初重点关注骑自行车的人给出的信号。通常而言,开发人员依靠机器学习来提高车辆识别现实情况并理解如何应对。通用汽车旗下的自动驾驶公司Cruise从200多辆自动驾驶汽车中收集这种数据。这些纯电动汽车已经行驶了数十万英里,只是在充电或进行定期维护时才停下来。通用汽车的这些自动驾驶车辆学习的速度非常快,因为它们行驶在山岭起伏的旧金山街道,这是美国路况最复杂的街道之一。
Cruise意识到,机器学习模型并不总是拥有足够的训练数据,因为这些汽车在现实世界中往往没有太多遇到重要手势的机会。自动驾驶汽车需要从不同的角度和不同的距离,在不同的光线条件下识别每种情况,不同的条件可以产生大量的可能性。如果仅仅使用这200多辆自动驾驶汽车,将需要数年的时间才能就不同的情况获得足够多的信息。
Cruise找到了一种解决这方面数据缺口的创新方案:对人类手势进行动作捕捉,游戏开发人员常常用这种技术来创造角色。Cruise一直在招聘游戏开发人员,希望获得模拟现实世界的专业知识,这些开发人员正在积累人类手势和肢体动作方面的数据,帮助自动驾驶汽车学习并理解这些手势和肢体动作。
首先,数据收集团队建立一个完整的清单,列出人们如何使用自己的身体与世界和其他人进行互动,例如招手打车、走路时打电话、为了避开行人步道上的施工场所而走到汽车的车道里。首先研究的一个手势是,一位行人向自己的朋友招手,自动驾驶汽车可能误以为是向自己发出的信号。进一步研究的手势是人们在自动驾驶汽车旁边做出,但不是命令这辆汽车的,例如,停车场的服务员指导旁边的汽车泊车时的手势,或者道路上的施工工人对其他车辆展示的引导标识。
最终,研究团队初步列出了使用手势传达的五种关键信息:停止、前进、左转、右转以及“不”。研究团队使用了美国人普遍接受的手势。当然,人们用来表示这些信息的手势并不统一,因此研究人员从一开始就知道,收集的数据将不仅仅包括这五种手势,还需要包含许多其他手势。最终到底需要包括多少种手势,研究人员目前也不确定。
创建人类手势和肢体动作方面的数据需要使用动作捕捉技术。动作捕捉系统有两种:光学和非光学系统。利用光学技术的动作捕捉系统使用很多摄像机,这些摄像机分布在一个围绕舞台的大型网格结构中,摄像机拍摄的视频可以对人物全身衣服上用于视觉标记的3D位置进行空间定位。这个系统有多种形势,可以产生极其详细的捕捉,包括面部表情捕捉。这种技术可以让电影演员演示非人类的角色,就像2009年的电影《阿凡达》一样,也可以让游戏行业记录运动员的运动,从而开发出以体育为主题的视频游戏。
不过光学运动捕捉需要在工作室里进行,对大量摄像机进行布置和调试,所以Cruise选择了基于传感器的非光学动作捕捉。这种技术使用微机电系统(MEMS),可以进行便携式无线操作,不需要专门的工作室。这提供了很大的灵活性,可以将系统应用到真实的场景中。
每个非光学动作捕捉系统都包括19个传感器装置,这些装置连接在身体的关键部位,包括头部、胸部以及臀部、肩膀,前臂和腿部。每个装置的大小和一枚硬币差不多,里面包含一个加速度计,一个陀螺仪和一个磁力计。这些都连接到一条安装了电池组、控制线和Wi-Fi无线电的带子上,传感器的数据以无线方式传输到安装了专门软件的笔记本电脑上,这让工程师可以实时查看和评估数据。
Cruise从工程师团队招募了五名具有不同身体特征的志愿者,他们在身高、体重和性别方面都有差别,这些人穿好衣服,到相对不受电子干扰的地方。每个志愿者都摆一个T型姿势:直立,双腿并拢,手臂伸向两侧,这样可以对动作捕捉系统进行校准。然后这些志愿者一个接一个地做出清单上的动作。在七天的数据收集过程中,志愿者一遍接一遍地做出清单上的动作,分别用两只手演示,有时还用双手演示,志愿者还会表现出不同的动作强度。例如,如果一辆汽车在施工区域行驶太快,那么示意汽车紧急停止的动作强度就大。如果示意一辆汽车需要减速并在路边停下来,那么动作强度就小一些。研究团队最终获得了239个三十秒的数据集。
Cruise的工程师将这些数据输入到机器学习模型中。首先,他们确保所有的手势都已经正确记录,而且没有其他的噪音和不准确的数据。然后,工程师让软件依次识别并理解每种手势。
除了提供了由不同的人展示、从不同角度看到的各种手势之外,动作捕捉还提供了非常清晰的数据:无论衣服的样式或颜色如何,无论光线条件如何,人体姿势基本上是一致的。这些清晰的数据使工程师可以更有效地训练机器学习系统。
一旦对自动驾驶汽车进行了运动捕捉数据的训练,它们将能更好地适应城市驾驶面临的各种情况。其中一种情况是道路建设。旧金山总是有大量的建设项目在进行之中,这意味着自动驾驶汽车经常遇到指挥交通的工人。使用手势识别系统,自动驾驶汽车能够在理解人类各种手势的同时安全地经过施工路段。
例如,如果有三名施工人员挡住了自动驾驶汽车计划使用的车道,其中一名工人指挥着交通,另外两名工人在评估道路情况。指挥交通的工人一只手拿着指示牌,这个指示牌像一个停车标志,但写着“慢行”,而另一只手示意车辆继续前进。为了安全地穿过这个地方,自动驾驶汽车会将这个人识别为控制交通的人,这辆自动驾驶汽车会这样正确地理解手势:它应该转向另一个车道,向前行驶,同时忽略在对面停下来但似乎有通行权的汽车。
在另一种情况下,自动驾驶车辆意识到,有人进入十字路口,没有理会闪烁的“请勿行走”标志,而这个人实际上是在引导交通,不是横穿道路的行人。自动驾驶汽车会注意到人是面对着它,而不是像准备过马路的人那样向他呈现着身体的侧面。车辆还会注意到,这个人的一只手臂举起,而另一只手臂正在移动,示意车辆通过。所有这些都使自动驾驶汽车能够理解,即使发现有人站在交汇道路的中间,车辆仍可以继续前进。
训练自动驾驶汽车理解手势只是一个开始,研究出来的系统必须不仅能够识别人的基本动作,还应该识别更多东西。Cruise仍在用测试车辆在现实世界中行驶时收集到的视频来测试手势识别系统。同时,Cruise已经开始进行这样的训练:让系统理解人类携带东西或推动其他物体(例如自行车)的概念。这很重要,因为推动自行车的人的行为通常与骑自行车的人不同。
Cruise还计划扩展数据集,希望帮助自动驾驶汽车更好地理解骑车人的手势,例如,左手指着上方,肘部成90度角,这意味着骑车人将向右转;伸直的右臂也是相同的意思。Cruise的自动驾驶汽车已经可以识别出骑自行车的人,并且会自动减速,为他们留出空间。知道骑车人手势意味着什么,这将使自动驾驶汽车能够为骑自行车的人提供足够的空间来给出信号,同时不必停车并造成不必要的交通拥堵。当然,自动驾驶汽车仍然会留意骑车人不给出信号就突然转弯的行为。
自动驾驶汽车将在未来改变我们的生活方式,机器学习已经帮助我们在这个领域取得了很大的进步,创造性地使用运动捕捉之类的技术将使我们能够更快地教会自动驾驶汽车在城市里行驶,使道路变得更安全。