版权归原作者所有,如有侵权,请联系我们

[科普中国]-同事告诉我,他刚刚叫醒了一个睡着的卡车司机 | 夏炎

我是科学家
原创

2020年10月25日,“科普中国-我是科学家”第28期“AI:人工智能,或者爱”演讲现场,Momenta研发副总裁夏炎带来演讲:《同事告诉我,他刚刚叫醒了一个睡着的卡车司机》。

夏炎演讲视频:

以下为夏炎演讲实录:

2020.10.25 合肥

大家好,我是Momenta夏炎。

“Momenta”是“momentum”(动量)的复数。在物理学中,动量和速度是对偶的概念。我的“初速度”是从合肥开始的,大三时在 陈小平老师 的实验室学习,之后,不断积累“动量”,现在在Momenta从事自动驾驶的研究。

做自动驾驶这样有意思的技术,最欣慰的事情莫过于有意思的技术真正落地,实现产品化,从而产生商业价值,进而产生意义。

2018年的某一天,我旁边的一位同事很开心地告诉我:“我的算法叫醒了一个卡车司机,避免了交通事故的发生。”

那是一个夜晚,这位司机驾驶着一辆货车跑在高速公路上。货车司机是一个非常辛苦的职业,当时这位司机非常困。我们的设备安装在货车上方,可以通过摄像头看到驾驶舱内的状态。当这个司机开始打瞌睡时,我们设备上的算法是能够识别出他的疲劳状态,就可以发出预警。在预警发出几秒钟之后,车前面就突然出现了一个障碍物,正是因为我们的预警,司机才能够把这个障碍物避开。如果当时司机还是一个瞌睡、疲劳的状态,可能当时真的会发生一场交通事故。

这是我第一次感受到,我们所做的技术真正对社会产生了意义,我们在做有意思、也有意义的工作。

那么,从技术上,这种预警是怎样实现的呢?

司机疲劳警示底层技术的实现 | Momenta

首先,驾驶舱内会有一个红外摄像头,能够实时捕捉到驾驶员的图像。

我们可以用模型抽取这些图像中的一些特征,来识别人脸的身份。

head pose指头部姿态,这个小人的XYZ和三个角度分别是多少,都可以通过摄像头进行智能识别。

这是一个睁闭眼的状态。眼睛的睁闭度也可以自动识别。

这是视线方向。向下看?向右看?向左看?都可以识别出来。

综合头部姿态和视线所注意的方向,还可以识别出当前这个司机在注视驾驶舱的哪一块区域,是驾驶中控屏还是后视镜,是左边后视镜还是右边的,或者,是在低头玩手机。通过这些信号,就可以识别司机的状态。

另外,司机在驾驶时可能会有一些异常动作——

比如抽烟,这是一种比较危险的驾驶行为。

比如打电话,这种行为也可以通过一个简单的摄像头来进行识别。

打哈欠,这是疲劳驾驶的典型标志。我们通过摄像头实现识别,并发出预警。

当然,自动驾驶不只是对驾驶员状态的警报,它其实是一个非常大的范畴。现在已经有很多对“自动驾驶”的讨论,但我还是要简单阐述一下:其实自动驾驶是有两种落地的形态,一种是 人机共驾 ,一种是 完全无人 ,这两种形态实际上是不一样的。

先说人机共驾。比如我们购买的乘用车,其车载芯片中已经安装了一些智能的功能,在车主开车时,智能芯片里面的算法能够提供一些智能驾驶的功能,协助司机在大部分场景中完成驾驶。这种是人机共驾形态,驾驶舱内是有人的。产品面向的客户侧重乘用车主。

完全无人形态,顾名思义,驾驶座上不需要有司机。但完全无人的形态对技术的要求很高,其对应的落地场景是自动驾驶出租。

这是两种完全不一样的产品落地场景。

像人机共驾的形态,它所提供的价值是什么?比如说刚刚过去的国庆,很多地方都发生了大堵车。堵车时,首先要跟着前车,距离不能太远,否则会被加塞;但也不能太近,不然会追尾。不能太远也不能太近,需要要踩一脚油门,踩一脚刹车,这是一个非常机械、往复、疲劳的活动。通过人机共驾形态的智能驾驶产品,可以把驾驶员从疲劳往复的活动解放出来,进而解放人们耗费在交通拥堵中的一些精力。

完全无人形态的最大应用场景是什么?比如自动驾驶(无人驾驶)出租。因为我们的出行需求非常大,出租车或者网约车实际上是一种常用的形态。但是出租车、网约车都是由司机去进行这些枯燥而往复的活动,如果说我们能够把司机解放出来,解放人类的时间去做更多有意义的事情,价值就创造出来了。

我要特别说明的是,虽然现在国内很多城市,比如北京、上海、苏州都已经出现了自动驾驶出租的试运营,但其实驾驶座上都有一位安全员,因为完全无人驾驶这种形态,还处于试运营的发展过程中,还没有完全成熟到驾驶座上没有人的形态,所以这是两种不同阶段的自动驾驶。

做自动驾驶,一定要真正地对社会产生价值、创造意义。

那么,对于人机共驾这样一种形态,我们所追求的意义在哪里?

你可以想想一个城市人的日常生活:每天上下班或上下学,从家里的停车场开车开到城区,上城市高架路,再下高架路,进到城区,再进到学校或者单位的停车场把车停下来,周而复始。至少在工作日,每天都是从一个停车场到另一个停车场的活动。它所覆盖的场景包括停车场,城区,和高速或高架路,这三个主要的典型场景。如果说人机共驾形态的自动驾驶功能,能够使驾驶员在这三个场景中变得更轻松、更安全,这实际上就是智能驾驶在人机共驾形态落地产品的主要价值。

下面将对人机共驾这一形态在这三个场景中的应用分别进行介绍。首先介绍一下高速场景,现在屏幕上显示的是苏州下班晚高峰时在高速路上的场景。大家可以看到屏幕上有一个scene,这实际上是装在车上面的前视摄像头的视野。人机共驾形态的车上一般都会装有很多传感器,传感器就像眼睛一样能够探测周围的世界,比如摄像头,毫米波雷达以及高精度地图。这些传感器都被放在一个车载芯片上面。

可以看到方向盘是自动控制的,没有人工干预。在拥堵场景中,也可以实现自主变道,如果前面车速度较慢,我们的车可以自主进行变道。那么,变道行为是如何产生的?其实是通过摄像头、传感器去识别到汽车周围的环境信息,并且知道周围的车都在什么位置,让车自主学习去做一个决策,进行驾驶行为。

下了高速之后就进入城区了,我们进入普通的城市道路。城市道路比高速场景要更复杂一些。首先,先看一下用来捕捉周围环境的技术。

开车的朋友都知道,与高速场景不同,在城市道路行驶时,旁边的车道跟你的车道不一定是同样速度的。这就需要我们自己的车做避让,这样才能通过。

此外,城市道路中经常会有一些违规行驶,比如横穿马路的三轮车。我们需要对这些违规车的行为进行预测,来保证车辆安全地通过。

在城市里还会经常遇到施工场景,这里有一个施工车,旁边放了一堆锥桶,需要通过传感器去识别这些障碍物的位置,并做出智能的路线规划。这个紫色线条代表是规划出来的路线,帮助驾驶员把施工的场景绕过去。

再比如说城区中会遇到的路口汇流,包括加塞这种需要汽车避让的交通环境,都需要通过传感器,来让车“看”到这些目标,进而去避让它,同时,保持一个合理的速度行驶。

此外,路口还会有很多行人,会有行人闯红灯横穿马路。我们也需要所以要合理地避让行人,顺畅安全地行驶过路口。

我们看一下在道路狭窄且多车交互的复杂场景中,我们自动驾驶算法的表现。我们的车遇到了一辆逆行的三轮车,同时还有大卡车进行加塞,右侧又有需要避让的摩托车和行人。这时,我们就需要在保证安全的前提下去做处理。图中,左边是真实场景,右边是通过算法识别并结构化的环境的信息,算法就是通过这样的信息识别做出智能判断。

在城区行驶一阵后,我们到了停车场,这是今天要与大家分享的最后一个场景。在停车场,车辆也是通过传感器、摄像头、超声波雷达以,及IMU和GPS这一类惯性导航的设备对周围的环境进行观察。

图片的最右边是一个矢量化的停车场的地图,显示出车辆通过摄像头、传感器实时感知、识别到的车位,车辆和行人的信息。图中,一辆车挡住了我们的去路,我们需要通过小幅转动方向盘进行避让,最终把车停到目标车位。这个驾驶座内没有司机,我们实现了自动泊车入位。

等到车主想要取车离开的停车场时,人在电梯口,手机按一个按钮,就能把车叫过来,然后,车主上车,这个车自动地把她带离车库。

刚才介绍的三个典型场景,从高速,到城区,到停车场,是一个端到端的自动驾驶,其目标是将连续自动驾驶的时长最大化,以人机共驾的形态,提升司机驾驶的安全性和智能性。

但是,在某些特定场景,小规模的区域里面可行,我们就能够去落地自动驾驶技术。真正做落地的产品,一定是可规模化的。也就是说,我的车不仅要在合肥能用,在蜀山区能用,而且也要在北京能用,在新疆能用。如此,当行驶的公里数增加,一定会遇到各种各样的corner case(边角案例),各种各样的长尾问题。当这些场景积累起来,就是数量非常庞大的一些问题。

比如说,像图中这样大卡车,不像正常的车是一个钢体,而是在车体中间有转动的部分。另外,普通的小轿车有四个轮子,像这种大货车经常会有八个轮子,十二个轮子等等。此外,在很多的场景中,我们还会遇到车体本身的形态被遮蔽的情况。本来一个摩托车上可能是载一个或者两个人,但也有载三个人的情况偶会发生。像这些场景,我们应该怎么处理?车轮有四个、八个、十二个;摩托车载入有一个、两个、三个……如果每遇到一种场景就用一个if else语句解决,那是难以穷尽所有可能的。

车辆数越多,场景越规模化,公里数就越多。千亿公里,实际上是自动驾驶需要达到的最小里程数。千亿公里是什么概念?相当于地球到太阳系尽头行星距离的20倍。这么长的距离,在实际运行中所能遇到的corner case也一定是非常多的,可能是百万级的。即使是用一百万个工程师,我们也无法通过使用“if else”这样的规则式来穷尽、解决这些问题。

所以我们提出的解决方式,不是去写很多的规则,而是去构建体系、去自动化地解决问题。我们所构建的人工智能的体系,很像一个轮子,我们叫它“飞轮式体系”。这个体系里面有三个关键因素,也是做人工智能问题经常要去解决的三个问题。

首先,如何设计算法?这个算法不是像我刚才讲到被if else这种规则所驱动的算法,而一定要是能被数据驱动的算法。

有了数据驱动算法之后,我们就要去思考,如何实现可规模化地获取量产的数据?只有获得了大量的、规模化的数据才能够去解决规模化的问题。

有了数据和算法之后,如何能让两者自动化地转起来?这个实际上是一套闭环自动化的工具链。这是构建人工智能产业体系的三个非常重要的因素,也是我们解决问题的方式。

通过刚才简要的介绍可以看到,自动驾驶涉及到的、需要解决的问题是非常多的,从环境感知到行为预测,驾驶预测,到驾驶决策规划算法。我们希望能够用有意思的、有挑战性的技术去解决这些问题。

自动驾驶对社会产生的价值,实际上是提高驾驶安全、驾驶的舒适性和智能性,这是非常有意义的。

“先有意思,再有意义”是我做事情的一个原则,因为,有意思让你出发,有意义让你坚持。

谢谢大家。

演讲嘉宾夏炎:《同事告诉我,他刚刚叫醒了一个睡着的卡车司机》 | 拍摄:Vphoto

作者:夏炎

监制:吴欧

策划:麦芽杨

编辑:麦芽杨 杨婧 凝音

排版:凝音

校对:夏晓茜