自动驾驶车通过动作捕捉,学会阅读街上人们的肢体语言
大数据文摘出品
来源:IEEE spectrum
编译:lin
想象一下,工人正在修复路面上一个大坑洞,因此拥有四条车道的马路缩小为两车道。一名工人左手松松地举着停车标志,用右手挥手示意汽车通过。如果是人来开车的话,自然不会考虑是否要遵循手势或标志,而是会平稳前进。
然而,这种情况可能会让自动驾驶汽车停下来。它会理解停止的标志并停下来,但是那个手势呢?这对于自动驾驶系统来说要复杂得多。
在这些情况下,解读肢体语言是关键。
所以,要想在不影响交通流量的情况下,安全、无缝地应对这些挑战,就需要自动驾驶系统了解用于引导人类司机应对意外情况的常见手势,以及行人处理事情时的手势和肢体语言。
世界各地的自动驾驶汽车开发人员多年来一直致力于让自动驾驶汽车至少理解一些基本的手势,最初的重点是自行车手发出的信号。一般来说,开发人员依靠机器学习来提高车辆识别现实环境并了解如何应对的能力。
Cruise,一家为城市设计自动驾驶汽车服务的初创公司,他们从200多辆自动驾驶汽车中收集数据。在过去的七年里,这些汽车每年行驶数十万英里;在疫情爆发之前,它们昼夜不停地在路上行驶,只有在充电(他们的汽车是全电动的)和定期维护时才会休息。我们的汽车学习速度很快,因为它们正在旧金山的丘陵街道上行驶,旧金山是美国最复杂的驾驶环境之一。
但他们意识到,机器学习模型并不总是有足够的训练数据,因为汽车在现实世界中体验重要手势的次数不够多。汽车需要从不同的角度、不同的距离以及在不同的光照条件下识别出每一种情况——这些限制因素的组合产生了大量的可能性。如果仅仅依靠汽车的真实体验,将需要数年时间来获得这些事件的足够信息。
他们在Cruise找到了一个创造性的解决方案:人类手势的动作捕捉(mo-cap),一种游戏开发者用来创造角色的技术。Cruise一直在雇佣游戏开发者,以获得模拟详细世界的专业技能,他们中的一些人则承担起捕捉数据的挑战,以便教他们的车辆理解手势。
首先,他们的数据收集团队会建立一份完整的清单,列出人们使用身体与世界和他人互动的方式,比如打出租车,走路时打电话,或者走到街上躲避人行道施工。从自动驾驶汽车可能会误解为指令本身的动作开始——例如,行人向朋友挥手。接着,他们又做了其他一些靠近车辆但不是针对它的手势,比如停车人员在车辆旁边的车道上挥手示意车辆开进车库,建筑工人举着要求车辆暂时停车的牌子。
最终,他们提出了一个用手势传达的五个关键信息的初始列表:停、走、左转、右转,以及我们常说的“不”——也就是那些与过路车辆无关的常见动作,比如自拍或取走背包。研究人员使用了普遍接受的美国手势,假设汽车会在右边行驶,因为他们是在旧金山进行测试。
当然,人们用来发送这些信息的手势并不是统一的,所以研究人员从一开始就知道他们的数据集必须包含远不止五个例子。到底有多少,他们不确定。
创建这个数据集需要使用动作捕捉技术。有两种类型的mo-cap系统:光学和非光学。光学版的mo-cap使用分布在一个巨大网格状结构上的相机,这个结构围绕着一个舞台;来自这些摄像机的视讯流可以用来三角定位演员穿着的全身套装上的视觉标记的3D位置。该系统有几种变体,可以产生非常详细的捕捉,包括那些面部表情。这种技术允许电影演员扮演非人类角色,比如2009年的电影《阿凡达》,也允许游戏行业记录运动员的动作,以开发以体育为主题的电子游戏。
然而,光学运动捕捉必须在工作室中使用复杂的多摄像头设置来完成。因此,Cruise选择了一种非光学的、基于传感器的动作捕捉版本。这项技术依赖于微机电系统(MEMS),携带方便,无线,不需要专门的工作室空间。这给了研究人员很大的灵活性,允许他们把它带出工作室,放到现实世界的位置。
他们的动作捕捉每一套都有19个传感器包,它们附着在身体的关键部位,包括头部、胸部、臀部、肩膀、上臂、前臂和腿部。每个包裹大约是一枚银币大小,包含一个加速计、一个陀螺仪和一个磁强计。这些设备都被连接到一条包含电池组、控制总线和Wi-Fi收发器的皮带上。传感器数据无线传输到一台运行专用软件的笔记本电脑上,让工程师实时查看和评估数据。
研究人员从Cruise工程团队中招募了5名身体特征各异(包括身高、体重和性别的差异)的志愿者,让他们穿上套装,并把他们带到相对没有电子干扰的地方。每个工程师兼演员首先摆出t形(站直,双腿并拢,手臂伸向一侧)来校准动作捕捉系统。从那里,演员做了一个又一个手势,这些手势来自他们团队从真实数据中创建的手势列表。
在7天的过程中,研究人员让这5位演员一遍又一遍的使用这套手势,每只手分别使用,有时也一起使用。他们还要求演员们表达不同的强度。例如,对于在施工区内超速行驶的汽车发出紧急停车信号的手势,其强度可能会很高。当运动表明汽车应该减速并逐渐停止时,强度会降低。研究人员最终得到了239个30秒的剪辑。
Cruise使用来自动作捕捉系统的数据来生成简笔画(下图)和道路工人的动画(上图),作为教会自动驾驶车辆识别人类手势的努力的一部分。
然后,工程师准备数据,输入到机器学习模型中。首先,他们验证了所有的手势都被正确记录下来,没有额外的噪音,并且没有旋转错误的传感器提供了错误的数据。然后工程师通过软件对每个手势序列进行运行,以确定序列中每一帧的关节位置和方向。由于这些位置最初是三维捕获的,软件可以计算每个序列的多个二维透视图;该功能允许我们通过递增地旋转点来扩展手势设置,以模拟10个不同的视点。
研究人员创造了更多的变化,通过随机放下身体的不同点来模拟真实世界中某些东西隐藏了这些点,然后再一次递增地旋转剩下的点来创造不同的视角。
除了提供不同的人从不同的角度所做的各种各样的手势,动作捕捉也给研究人员提供了非常干净的数据:人体姿势的骨骼结构是一致的,无论服装的风格、颜色或光线条件可能是什么。这些干净的数据让他们更有效地训练机器学习系统。
一旦汽车接受了动作捕捉数据的训练,它们就能更好地驾驭城市驾驶呈现的各种场景。其中一个例子就是道路建设。旧金山总是有过多的建设项目在进行中,这意味着汽车经常面对着指挥交通的工人。使用cruise的手势识别系统,汽车将能够在理解他们各自的手势的同时,安全地绕过多个工作人员。
举个例子,三名公路工人挡住了一辆自动驾驶汽车计划行驶的车道。其中一名工作人员负责指挥交通,另外两名工作人员负责评估道路损坏情况。指挥交通的工人手里拿着一个牌子;它有八条边,像个停车标志,但上面写着“慢点”。他用另一只手示意车辆向前走。为了安全通过十字路口,自动驾驶汽车将识别这个人是控制交通的人。车辆将正确地理解他的手势,即它应该转到另一条车道,向前行驶,并忽略在十字路口对面停车但似乎拥有路权的汽车。
在另一种情况下,车辆会意识到,有人进入十字路口,无视闪烁的“禁止行走”标志,实际上是在指挥交通,而不是一个闯红灯的行人。汽车会注意到这个人是面对着它的,而不是表现出他的立场,就像准备过马路的人会做的那样。它会注意到这个人的一只手是抬起的,另一只手在移动,以便给车辆发出信号让它过马路。它甚至会记录武断的行为。所有这些使汽车明白,即使在十字路口看到有人,它也可以继续向前行驶。
训练自动驾驶汽车理解手势只是一个开始。这些系统必须能够探测到不仅仅是一个人的基本运动。研究人员正在继续测试手势识别系统,使用测试车辆在现实世界中行驶时收集的视频。与此同时,研究人员已经开始训练系统来理解人类搬运或推其他物体的概念,比如自行车。这一点很重要,因为推自行车的人通常与骑自行车的人行为不同。
研究人员还计划扩大数据集,以帮助汽车更好地理解骑自行车的人的手势——例如,左手向上,肘部呈90度角,意味着骑自行车的人要右转;右臂直向外也有同样的意思。自动驾驶汽车已经能识别骑自行车的人,并自动减速为他们腾出空间。然而,知道他们的手势意味着什么,可以让汽车确保给骑自行车的人足够的空间来执行有信号的操作,而不会完全停下来,造成不必要的交通堵塞。(当然,汽车仍然会注意那些没有表明意图的自行车手的意外转弯。)
在未来几年,自动驾驶汽车将改变人们的生活方式。机器学习在这方面已经帮助研究人员走了很长的路。但是创造性地使用像动作捕捉这样的技术可以让研究人员更快地教会自动驾驶车更好地在城市中共存,让我们的道路更加安全。
相关报道:
https://spectrum.ieee.org/transportation/self-driving/selfdriving-cars-learn-to-read-the-body-language-of-people-on-the-street