人工智能知道驾驶员何时极度犯困
3 级自动驾驶仍需驾驶员保持警觉
困驾存在巨大的安全隐患。据美国国家公路交通安全管理局估计,2017 年,美国约有 90,000 起车祸由困驾司机所致,造成约 50,000 人受伤和 800 人死亡。
虽然汽车制造商致力于研发自动驾驶汽车,但他们尚不能将驾驶员从驾驶任务中彻底解放出来。在这个不可预知的世界里,充斥着漫不经心的行人、恶劣的天气和糟糕的路况。在这种场景中导航车辆,即使最先进的人工智能 (AI) 技术也会捉襟见肘。在可预见的未来,大多数车辆都不会超越 3 级自动驾驶水平,这就要求驾驶员时刻保持警觉并在车辆发出请求时立即接管。困驾一直是个问题。
汽车必须确定驾驶员的意识状态。对此,潜在的解决方案不尽相同。一些解决方案是利用系统跟踪驾驶员的眼皮,但这些系统在某些照明条件下或当驾驶员转头看向别处时会出现问题。另一些解决方案是评估驾驶员的驾驶动作,例如转动方向盘。但是,在自动驾驶汽车中,当驾驶员没有转动方向盘时,这种评估则不起作用。不过,格拉茨科技大学的一项新研究发现了一种新方法,可通过巧妙应用人工智能从心脏电活动中确定犯困情况。
数据中的模式
训练强大的机器学习分类算法需要大量经过标注的示例。为了生成经过标注的训练示例,奥地利团队使用了定制的驾驶模拟器。这可不是某种电子游戏或您在电子游戏厅内看到的赛车座椅。格拉茨自动驾驶模拟器 (ADSG) 基于的是 MINI Countryman 整车。八个液晶面板将驾驶员环绕,音响系统发出风噪和发动机噪音,低音扬声器使整个装置都在振动。
格拉茨科技大学工程系教授兼团队负责人 Arno Eichberger 说道,“这个想法非常切实可行。这对于文中提及的困驾专项研究尤为适用,因为这种单调的驾驶场景仿真起来没那么难。”
他们于是重现了夜间在无任何其他车辆的高速公路上驾驶的场景。“对于一些司机来说,他们获得了完整的微睡眠,”他说道。
该团队收集了 92 位司机的数据。每位参与测试的司机要来实验室两次:一次是在充分休息后,一次是在感觉疲劳时。在疲劳状态下受试时,他们至少需要有 16 个小时处于清醒状态,或者他们前一天晚上的睡眠时间不超过 4 个小时。每次前来受试时,他们都参与了手动驾驶和自动驾驶两种场景。
“我们的基本想法是建立一个独一无二的困驾司机大型数据库,该数据库也可以供公众使用,”Eichberger 表示。
虽然研究人员收集了驾驶员的各种数据,包括眼球运动、呼吸、出汗、注视方向和瞳孔扩张情况,但这项研究完全依赖于通过心电图 (ECG) 电极测量的心脏活动。
客观地衡量犯困程度仍然是一项研究挑战。但格拉茨科技大学的研究人员在进行相关研究时,邀请交通心理学家观看驾驶员的录像,并根据驾驶员打哈欠、打瞌睡和长时间眨眼给出他们的最佳评估,从而创建了真实值标签。这些心理学家提供了以下四个标签之一:警觉、中度犯困、极度犯困和入睡。这项研究将后两者合并为极度犯困。
Eichberger 表示,应至少有三个类别的犯困程度,因为如果只有两个类别(警觉和极度犯困),则当汽车发出警告,提醒您处于极度犯困状态时,您已经处于危险之中了。
深度睡眠
Eichberger 团队使用了一种称为深度学习的机器学习方法。该方法涉及多层神经网络。他们构建了卷积神经网络,这是一个专用于处理空间输入的网络。这类算法可用来查看猫的照片,辨别其中复杂的模式,并将该图像识别为猫。
以往的困意检测方法使用手动编码规则来处理 ECG 信号,这些信号以复杂的波形形式传播而来。每次心脏跳动时,心电图中就会生成波形 R 峰。程序员以编程方式让软件寻找这些 R 峰,测量它们之间的时间长度,并计算这些时间跨度的变化程度,从而生成与困意相关的心率变异性统计数据。但这些方法可能会遗漏隐藏在 ECG 信号中的其他重要信息,而研究人员并不知道要寻找这些信息。深度学习的强大之处在于,它能够找到那些微妙的模式,这是人类凭经验产生直觉的方式。
那么,如何将专为图像设计的卷积神经网络应用于只是一系列电振幅的 ECG 信号呢?为什么要这样做呢?第一个问题的答案是,将波转换为图像。
Sadegh Arefnezhad 以第一作者的身份在 Energies 上发表过一篇有关该新方法的论文。他使用 MATLAB® 中的 Wavelet Toolbox™ 创建了小波尺度图。时间序列数据可以被视为许多不同频率的短时“小波”的总和。MATLAB 将波分解成这些更简单的小波。x 轴表示时间,y 轴表示频率。在小波尺度图中,每个点的亮度代表该频率的小波当时的振幅。
为什么要在将波馈送入神经网络之前将其转换为着色图像?MathWorks 首席软件工程师 Wayne King 说道,“这一思路是,信号的时频视图可以使相关特性比原始时域数据更明显。重要的是,通过创建图像,研究人员能够充分利用卷积神经网络,这是计算机科学家们多年来精心打磨的成果。”
Arefnezhad 将这些图像连同真实值困意标签一同馈送入一个神经网络中。该神经网络是他在 MATLAB 中使用 Deep Learning Toolbox™ 构建的。Arefnezhad 表示,“这款工具使用起来非常方便。我可以添加不同类型的层,并轻松创建自己的神经网络。”他训练该神经网络将 ECG 信号分类为警觉、中度犯困或极度犯困。该网络会根据对错进行自我调整。
使不均衡的数据均衡
网络的末端是一个重要层,它会考虑到数据不均衡这一现实问题。例如,在人工驾驶测试中,只有 6% 的样本来自极度犯困的驾驶员。如果算法只是猜测其他两个标签,那么它几乎每次都是正确的。因此,Arefnezhad 增加了一个层,以在训练过程中对极度犯困的样本给予更多的关注。他说道,其他一些研究人员馈送的算法数据是在犯困和不犯困之间平均分配的数据。
神经网络包含由定义虚拟神经元之间的连接强度的参数。这些参数在训练过程中会发生变化。研究人员还在训练期间使用了超参数。他们设置这些值来控制学习率(参数为响应反馈而发生变化的程度)以及在训练期间添加的噪音量(这会影响网络的稳健性)。有些人凭经验选择超参数,有些人则使用穷举搜索法来进行多次尝试。Arefnezhad 采用了贝叶斯优化。这种优化方法运用概率论随着时间的推移缩小搜索范围。
该团队基于前所未见的图像测试了该网络,并将其表现与其他两种机器学习方法进行了比较,这两种方法都依赖于从 ECG 数据中手动提取的特征。首先,他们收集了 R 峰之间的所有区间。然后,他们计算了 11 个值,如一组区间内的标准差。他们将这些值馈送到以下两个分类器之一:k 最近邻 (KNN) 模型和随机森林。在这些基线方法中,最佳的方法莫过于随机森林。采用该方法在手动和自动驾驶模式下对困意进行分类时,其精度分别达到了 62% 和 64%。
深度学习神经网络又比该方法略胜一筹。其精度分别达到了 77% 和 79%。让 Arefnezhad 感到惊讶的是,它竟然能够在尺度图中找到正确的线索。他看着这些图像说道,“您看不出警觉的司机和中度犯困的司机之间有太大区别,但神经网络很容易识别出来”。
展望前路
Eichberger 和 Arefnezhad 期待未来有许多方法可用于此项研究。在实际应用中遇到的明显障碍是,他们使用胸部电极收集 ECG 数据,但驾驶员日常并不会佩戴这种电极。其他传感器,例如智能手表,可能会取代胸部电极。研究人员还在开发能够从肤色变化中检测出脉冲的摄像系统。Eichberger 说道,“研发推向市场的解决方案并非我们的本意。我们旨在证明,可行技术使我们以目前所知的方法无法企及的方式对驾驶员犯困程度进行更有效的分类成为了可能。”
他们还希望将得到的 ECG 数据与其他数据相结合,使整个系统更加稳健,以防其中一个信号失效。他们想要创建个性化的分类器,因为信号可能因人而异。如果对分类器进行微调,则驾驶员可能需要在模拟器中花些时间提供数据。
Eichberger 和 Arefnezhad 计划从固定模拟器转向测试轨道。这样做可能有助于他们解决另一个问题:“目前,应该如何设计车辆发生故障时启动的接管程序尚不得而知,”Eichberger 说道。“它该如何告知驾驶员接管车辆?它应该允许驾驶员在多长时间内做出响应?”
如果汽车能使驾驶员远离中度犯困的状态,则接管车辆会顺利得多。Eichberger 说道,“因此,知道驾驶员何时刚进入中度犯困状态,甚至在此之前可能就已知道,这不啻为巨大的进步。”