Abstract
背景
驾驶员的行为影响交通安全、燃料/能源消耗和气体排放。司机行为分析试图理解和积极影响司机的行为。通常驾驶员分析人物包括驾驶数据的自动收集和能生成一个分类来描绘出驾驶员攻击性的属性的计算机模型应用。不同的传感器和方法被应用在任务中,然而低成本解决方案和高性能仍然是研究的目标。
本文
本文对不同的Android智能手机传感器和分类算法进行了研究,以评估哪一种传感器/方法的组装能够使分类具有更高的性能。结果表明,特定的传感器组合和智能方法可以提高分类性能。
Introduction
驾驶员监控和分析(Drivermonitoring andanalysis)或驾驶员行为分析(driverbehaviorprofiling)是自动收集驾驶数据(如速度、加速、刹车、转向、位置)并应用计算模型来为驾驶员生成安全评分的过程。
驾驶数据收集可以通过多种类型的传感器来实现,从智能手机中的通用设备,到监控摄像头、远程信息盒和车载诊断适配器等专用设备。
本文的贡献
本文的主要贡献是在现实世界的实验背景下,评估机器学习算法和Android智能手机传感器的多种组合在检测攻击性驾驶事件的任务中的性能。本文执行数据收集阶段,驾驶一辆车,并从几个不同的传感器收集数据,同时执行不同的调动。本文将介绍机器学习方法如何在任务中使用,并评估传感器和技术组合的准确性,旨在找到传感器/技术与每一类行为的最佳匹配。
Related work
Nericell由Mohan等人[17]提出,是一款Windows Mobile智能手机应用程序,用于监测道路和交通状况。它使用智能手机的加速计来检测路面坑洼和刹车事件。它还使用麦克风来检测喇叭声,以及GPS/全球移动通信系统(GSM)来获得车辆的定位和速度。通过比较一组经验预先设定的阈值与加速度计数据的突然变化或与N秒滑动窗口内的平均值来检测刹车、颠簸和坑洞。没有使用MLA来探测这类事件。一些事件检测结果的False Positives(FPs)和Fale Negatives(FNs)包括:4.4%的FN, 22.2%的FP的刹车事件;低速(<25公里/小时)检测颠簸/坑槽,FN为23%,FP为5%;FN和FP用于检测暴露车辆(如摩托车)的喇叭声。
Dai and colleagues[9]提出了一种Android应用程序,旨在实时检测和警报危险驾驶事件,通常与酒后驾驶有关。该应用程序使用智能手机的加速计和方向(偏航、俯仰和滚转角)传感器来检测异常的曲线运动(ACM)和保持速度的问题(PMS),这是醉酒驾驶相关行为的两大类。用一系列方程来确定横向和纵向加速度矢量。如果在5秒时间窗内横向加速度的最大值和最小值之间的差异超过经验阈值,则ACM事件被检测。在任何给定时间,如果纵向加速度超过正或负的固定经验值,则检测PMS。与[17]类似,不使用MLA进行事件检测。实验结果:异常曲线运动FN为0%,FP为0.49%;速度控制问题的FN为0%,FP为2.90%。
Johnson和Trivedi[10]创建了一个名为MIROAD的iPhone应用程序。MIROAD使用基于智能手机的磁强计、加速计、陀螺仪和GPS传感器融合来检测主动驾驶事件,并据此将驾驶员的驾驶风格分为主动驾驶和非主动驾驶。基于DTW算法,采用单一分类器检测攻击事件。所有的处理都在智能手机上实时执行。实验分析表明,97%的攻击事件被正确检测到。
WreckWatch由White等人[18]提出,是一款基于Android智能手机的客户端/服务器应用程序,用于检测车祸。客户端应用程序检测事故,记录相关数据,并将其发送给服务器应用程序,服务器应用程序可以通知相关部门。失事监视客户端使用来自加速度计、GPS和麦克风的数据,并使用基于阈值的过滤来检测事故。事故预测框架由电话状态的11元组模型和评估模型是否表示事故的函数组成。模型变量包括在任何方向上经历的最大加速度,以及是否有响亮的声音发生的指示。一个触发事故检测的场景是当加速度、声音和车辆速度都高于经验阈值。与[9,17]相似,事故检测不采用MLA。实验结果表明,手机掉落不太可能导致FPs,智能手机可能检测不到一些事故,声学数据不足以检测出事故。
Araujo and colleagues[15]展示了一款智能手机应用程序,可以将油耗效率作为驾驶员行为的一个功能来评估。该应用程序还提供了实时驾驶提示,如shift gear earlier和accelerating too high。该应用程序使用OBD蓝牙适配器和Torque Pro智能手机应用程序从车辆传感器收集数据(例如,速度、加速度、转速),而不是从智能手机传感器收集数据。数据采集完成后,app提取一系列特征,并对其应用三个分类器(一个线性判别器和两个模糊系统)。所有的处理都在智能手机上实时执行。
Eren等人[11]提出了一种iPhone应用程序,可以根据危险驾驶事件将驾驶员行为分类为安全或危险。该应用程序可以检测突然转弯、车道偏离、刹车和加速事件。用于事件检测的传感器有智能手机的加速度计、陀螺仪和磁强计。应用程序使用端点检测算法来划分事件的开始和结束时间。通过DTW算法将标定后的事件与模板事件数据进行比较。最后,贝叶斯分类器根据一段时间内发生的事件数量,将驾驶员的行为标记为安全或危险。实验结果表明,15个驾驶员中有14个(93.3%)被正确分类。值得注意的是,本文仅提供了驱动分类结果。因此,不提供事件分类性能结果。
Fazeen和同事[19]使用Android智能手机加速计和GPS来识别车辆状况(速度和换位)、驾驶模式(加速/减速和变道)和道路状况(光滑、不平整、粗糙、有颠簸或坑洼)。检测事件的主要方法是计算连续加速度计读数在某些轴上的持续时间、差异和斜率,并将它们与经验的固定/动态阈值进行比较。例如,工作状态,安全加减速在y轴上的重力不超过0.3g。与[9,17,18]类似,不使用MLA进行事件检测。实验结果表明,路面异常分类准确率为:凹凸路面异常分类准确率为81.5%,坑洼路面异常分类准确率为72.2%,高低路面异常分类准确率为75%,平坦路面异常分类准确率为91.5%,高低路面异常分类准确率为89.4%。
Castignani等人[12]提出了一个基于模糊逻辑的驾驶员行为分析移动工具,该工具利用了Android智能手机中的加速度计、磁强计和重力传感器。这个工具将驾驶员的行为分为Normal, Moderate, 和Aggressive,对应的驾驶分数在0(最好)和100(最差)之间。由于传感器数据是在byUBI-Meter移动应用程序中采集并存储在本地智能手机上,因此分类和评分不进行实时处理。随后,这些数据被发送到Internet上的远程服务器进行处理。Saiprasert和他的合作者[13]使用了GPS、加速度计和智能手机磁强计传感器来描述司机的行为:Very Safe,Safe,Aggressive, 和Very Aggressive。该剖面是通过检测相关驾驶事件实时计算的。事件检测是由DTW算法[20]的变化来执行的。
SenseFleet由Castignani等人[14]提出,是一个针对Android智能手机的驾驶员行为分析平台,能够独立于移动设备和车辆检测危险驾驶事件。该手机应用程序从加速度计、磁强计、重力传感器和GPS智能手机传感器收集数据,并利用模糊系统检测旅途中可能发生的危险事件,如超速、转弯、加速和刹车。应用程序计算每次行车的驾驶分数在0(最差)到100(最好)之间,作为检测到的危险事件的函数。所有的处理都是在智能手机上实时完成的。作者做了几个实验。在其中一个实验中,应用程序正确识别了90%以上的风险事件。
Wahlstrom, Skog和Handel[21]提出了一个基于轮胎滑移(滑移)和车辆翻车的理论可能性的检测危险车辆转弯事件的框架。全球导航卫星系统(GNSS)是Android智能手机GPS的总称,是唯一用于事件检测的传感器。利用经典力学方程,定义了滑移和翻车的理论阈值。滑动阈值根据切向和旋转速度、切向加速度以及车辆轮胎与道路之间的摩擦系数来定义。车辆翻车阈值是根据车辆的重心、轨道宽度和高度定义的。与[9,17 19]类似,事件检测中没有使用MLA。从三款不同的Android智能手机收集的GNSS数据的实验分析显示,FP和FN的平均比率为13%是最佳结果。
本文根据研究发现了一些值得注意的地方
- 除了[21]之外,所有的论文都使用 传感器融合数据作为事件检测算法的输入
- 采用的MLAs可归结为 模糊逻辑[12,14,15]或 DTW的变体[10,11,13]
- 最近的论文使用 智能手机传感器,而不是车辆或远程信息箱传感器
- 一些论文[9,17-19,21]没有使用MLAs来检测驱动事件,而是使用 物理方程或固定/动态阈值或两者的结合来达到这一目的。
本文是在本地运行机器学习算法,但是作者表示未来的版本可能会运行在基于云的方式上,如[22,23]所示。其他与驾驶员行为相关的方法也与社会机制有关,如Song和Smith[24]所做的评价,即在高占有率的收费车道上研究驾驶员行为。在Sun和同事[25]的工作中,我们可以看到一个关于智能和互联社区的更全面的方法。关于基于智能手机的汽车传感系统的更全面的比较,请参考Engelbrecht和他的同事[26]的研究。
Machine learning algorithms
本文比较了四种MLA的性能:人工神经网络(ANN)、支持向量机(SVM)、随机森林(RF)和贝叶斯网络(BN)。之所以选择这些MLAs是因为它们在分类问题的文献中大量出现,而且它们代表了不同的机器学习“tribes”,保证了机器学习算法的多样性。本节主要解释上述MLAs的基本概念。
- Artificial neural networks(ANN)
- Support vector machines(SVM)
- Random forrest(RF)
- Bayesian networks(BN)
Methodology
将工作建模为一个 多标签监督学习分类问题,其中标签是 驾驶事件类型(driving events types)。
本文工作的目标是识别运动传感器(及其轴)、学习算法(及其参数)和滑动窗口(nf)中的帧数的最佳组合,以检测单个驾驶事件类型。
在表单中定义了一个计算程序集
$EA = \lbrace 1:sensor, \ 2:sensor \ axis(es),\ 3:MLA,\ 4:MLA \ configuration,\ 5:nf \ \rbrace$通过训练、测试和评估由指定的MLA(element #3)及其配置参数(element #4)生成的分类器的性能,对传感器(element #1)、它的轴(es)(element #2)和滑动窗口中的帧数(element #5)进行识别。通过更改该程序集中元素的值,本文实现了不同的驾驶员事件检测性能。因此,该评估将对元素值的几个组合进行评估,以揭示对每种驾驶事件类型表现最好的组合。
过程
图1显示了评估管道的高级视图。
第一步
对智能手机传感器原始数据进行采样,并将其从 设备坐标系转换为地球坐标系(图2)。为了实现车辆内部的设备位置独立,这种平移是必要的。转换后的传感器数据存储在智能手机文件系统中。
第二步
从智能手机中检索转换后的传感器数据文件,并将其作为输入来生成属性向量数据集。
第三步
利用属性向量数据集对MLAs的性能进行训练、测试和评估。
如图1所示,第一个管道步骤在智能手机上执行,而第二个和最后一个步骤在普通计算机上执行。
评估性能
本文用来评估每种驾驶事件类型组合性能的度量是ROC曲线(AUC)下的面积[33,34]。分类器的AUC范围为0.0(最差)到1.0(最好),但现实分类器的AUC不应该小于0.5,这相当于随机猜测。因此,计算程序集AUC越接近1.0,它在检测特定驾驶事件类型方面就越好。
Evaluation assembly
sensor
传感器(sensor)是评估组装的第一个元素,它代表了以下Android智能手机运动传感器之一: 加速度计(Acc),线性加速度(LinAcc),磁强计(Mag)和陀螺仪(Gyr)。
- 加速度计测量施加在设备上的加速度,单位是米每秒的平方(m/s2),包括重力。
- 线性加速度传感器类似于加速度计,但不包括重力。
- 磁强计测量应用于设备的微特斯拉(μT)磁场的力,其工作原理类似于磁铁。
- 陀螺仪以每秒弧度(rad/s)来测量设备轴的旋转速率。
这些传感器提供了一个在标准传感器坐标系中具有纳秒精度的三维(x,yez)时间序列(相对于设备)
sensor axis(es)
传感器轴(sensor axis(es))是评估组装的第二个元素
该元素的可用值为
- all 3 axes
- x axis alone
- y axis alone
- z axis alone
比如:加速度计产生了以下数据集
$accelerometer(with \ data\ from\ all\ three\ axes),\ accelerometer_x,\ accelerometer_y,\ accelerometer_z$其中唯一的例外是 磁强计,x轴的值在转换到地球的坐标系统后总是0或接近。因此没有omagnetometer_x 数据集。
本文评估数据来自产生4个数据集的3个传感器,和产生3个数据集的1个传感器,总共有3*4+3=15个数据集。本文在不同的数据集中分离传感器轴,以观察是否有任何一个轴可以作为检测特定驾驶员事件类型的最佳轴。
MLA
MLA是评估组装的第三个元素
评估了MLP、SVM、RF和BN MLAs的分类性能。本文将这些算法的WEKA(版本3.8.0)实现与LIBSVM[35]库(版本3.17)结合使用。本文使用10倍交叉验证来训练和测试这些分类器,以最小化过拟合。
Algorithm configuration
算法配置(Algorithm configuration)是评估组装的第四个元素
本文执行了参数网格搜索,以评估表1中参数值的每一种可能组合。本文对大多数参数值进行实验设置,并遵循[36]中支持向量机的指导原则。对于表1中没有列出的参数,本文使用了WEKA默认值。
sliding window
原始传感器数据基本上由三轴值和一个纳秒时间戳组成,表示采样的瞬间/时间。但是,我们不向分类器发送原始传感器数据。取而代之的是,我们将传感器的时间序列样本以一秒的帧进行分组,组成一个滑动时间窗口,然后总结出一个属性向量。随着时间的推移,窗口在时间序列上以1帧的增量滑动,如图3所示。我们认为$f_0$是当前秒的帧,$f_{−1}$是前一秒的帧,以此类推,$f_{−(nf−1)}$,其中$nf$(评价集的第五个元素)是构成滑动时间窗口的帧数。本文在这个评估中使用了以下$nf$值:4、5、6、7和8。
这些值是通过实验定义的,因此滑动窗口可以容纳收集的驾驶事件的长度,根据事件的aggressive,收集的时间范围为 2 到 7 秒。
本文评估了几个评估程序集的性能,以找出最适合检测每种驾驶事件类型的程序集。装配数是15个数据集、5个不同的nf值、4个BN算法配置(表1)、5个MLP配置、6个RF配置和36个SVM配置的所有组合的结果。
这个结果总共$15 \ast 5 \ast 4 + 15\ast5\ast5 + 15\ast5\ast6 + 15\ast5\ast36 = 3825$个评估程序集
Attribute vector
属性向量是滑动窗口的汇总。每个包含驾驶员事件的时间窗口都会生成属性向量的一个实例。相应地,如果在特定时间窗口中没有驾驶员事件,则不会生成属性向量实例。
本文通过计算构成时间窗口的帧内传感器数据样本上的均值(M)、中值(MD)、标准差(SD)和增加/减少趋势(T)来创建属性向量的实例。向量中属性的数量依赖于滑动窗口(nf)中的帧数量。有$nf$个平均值,中值,标准偏差属性和$nf - 1$个趋势属性。
图4描述了传感器数据的单个轴的属性向量的结构。当数据集由多个轴组成时,每个轴的属性向量被简单地连接起来,并且只保留最后一个向量的class label属性,因为它们都具有相同的值。
向量的属性计算如下:
$$M_0 = M(f_0) \quad … \quad M_i = M(f_{-i},f_0) \tag{1}$$
$$MD_0 = MD(f_0) \quad … \quad MD_i = MD(f_{-i},f_0) \tag{2}$$
$$SD_0 = SD(f_0) \quad … \quad SD_i = SD(f_{-i},f_0) \tag{3}$$
$$T_1 = \frac {M(f_{-1})}{M(f_0)} \quad … \qquad T_i = \frac {M(f_{-i})}{M(f_0)} \tag{4}$$
其中
- $i = [0..(nf-1)]$
- $SF(f_i)$ 是应用于第$j^{th}$帧样本的一个汇总函数$\text{(mean, median, or standard deviation)}$
- $SF(f_j,f_k)$ 是应用于样本从第$j$个帧到第$k$个帧的汇总函数($j<k$)
向量的class label attribute 来自于 驾驶事件的ground-truth
类标签class label是driving event,它的开始时间戳在帧$f_{-(nf-1)}$中样本的第一个时间戳和帧$f_0$中样本的最后一个时间戳之间。需要指出的是,由于不同驾驶出行产生的属性向量是时间独立的,因此可以将它们分组在同一个数据集中。
单个驾驶事件原始传感器数据示例生成$nf$个属性向量实例。这是因为包含事件的开始时间戳的窗口框架在其滑动时改变了其在窗口中的位置。因此,如果有一个特定驾驶员事件类型的$s$个样本,那么该事件类型将有$s*nf$个属性向量实例。此行为允许多个窗口捕获同一事件的不同部分或签名。
Data collection in a real-world experiment
为了收集驾驶事件的传感器数据,本文进行了一个真实的实验。在这个实验中,一个Android应用程序在驾驶员执行特定驾驶事件时记录智能手机传感器数据。本文还记录了驾驶员事件的开始和结束时间戳,以生成实验的ground-truth。
本文进行了4次汽车出行的实验,每次平均约13分钟。
实验条件如下:
- the vehicle was a 2011 Honda Civic(这辆车是2011年的本田思域(Honda Civic))
- the smartphone was a Motorola XT1058 with Android version 5.1(这款智能手机是摩托罗拉XT1058, Android版本为5.1)
- the smartphone was fixed on the car’s windshield by means of a car mount, and was neither moved nor operated while collecting sensor data(智能手机通过汽车支架固定在汽车的挡风玻璃上,在收集传感器数据时既不移动也不操作)
- the motion sensors sampling rate varied between 50 and 100 Hz, depending on the sensor(运动传感器的采样率根据传感器的不同在50到100赫兹之间变化)
- two drivers with more than 15 years of driving experience executed the driving events(由两名具有15年以上驾驶经验的驾驶员执行驾驶事件)
- the weather was sunny and the roads were dry and paved with asphalt. (天气晴朗,道路干燥,铺着柏油)
本实验收集的驾驶事件类型以[13]中的事件为基础。
本文的目的是建立一组驾驶事件,这些事件代表了现实世界中常见的事件,如刹车、加速、转弯和变道。表2显示了本工作中使用的7种驾驶事件类型及其收集的样本数量。
图5显示了评估中使用的四个传感器捕获的攻击性左变道事件的传感器数据。
Results
本文使用5个不同的nf值,在之前描述的15个数据集上执行表1中描述的4个MLAs及其配置的所有组合。本文用15种不同的随机种子训练、测试和评估每个评估集合。最后,我们计算了这些执行的AUC平均值,并根据驾驶员事件类型对它们进行分组,并在图6所示的箱线图中对5个性能最好的组件进行排序。该图左边显示了驾驶事件,右边显示了每个事件的5个最佳评估程序集,最优的程序集在底部。
图6中的组合文本标识按此顺序进行编码:
- the nf value
- the sensor and its axis( if there is no axis indication, then all sensor axes are used)
- the MLA and its configuration identifier
结果结论
- MLAs在 较高的nf值(即较大的滑动窗口大小)下表现更好。在35个性能最好的组件中,有23个 nf = 8,有6个nf = 7,有5个nf = 6,只有1个nf = 4。
- 陀螺仪和加速度计是本实验中最适合检测驾驶事件的传感器。另一方面,磁强计单独不适合事件检测,因为没有35个最好的组件使用该传感器。此外,使用所有的传感器轴比使用单个轴在一般情况下性能更好。唯一的例外是陀螺仪的z轴,它最好的检测侵略性的左转弯。
- RF是目前为止表现最好的MLA, 35个最好的组装中有28个。第二好的是MLP,有7个最好的结果。RF在非侵略性事件、侵略性转弯、断裂和加速中占据了前5名。然而,MLP更擅长侵略性的变道。BN和SVM在35个表现最好的assemblies中没有排名。
- MLP配置#1的性能最好。在此配置中,隐含层神经元的数量被定义为(#attr. + #classes)/ 2。这也是缺省的WEKA配置。对于RF,配置#6(# of iterations = 200; # of attributes to randomly investigate= 15)和#5(# of iterations = 200; # of attributes to randomly investigate = 10)给出了最好的结果。
- 本文在排名前35位的评估程序集中发现了令人满意的和同等的性能。这是因为最坏的AUC平均值(aggressive breaking event为0.980)和最好的AUC平均值( aggressive right lane change event为0.999)之间的差只有0.018。这一差异在本实验背景下不显著。
Conclusions and future work
在这项工作中,本文使用从4个Android智能手机传感器(加速度计、线性加速度、磁强计和陀螺仪)收集的数据,对4个MLAs (BN、MLP、RF和SVM)在检测7种驾驶事件类型中不同配置的性能进行了定量评估。本文在一个有2名驾驶员的真实世界实验中收集了69个此类事件类型的样本。
记录这些事件的开始和结束时间作为实验的ground-truth。本文还比较了应用不同滑动时间窗大小时的性能。
使用表单的3865个评估程序集的不同随机种子执行了15次执行
因此找到了每个驱动事件类型的前5个执行程序集。在实验中,这些结果表明
- 滑动窗口尺寸越大表现越好
- 陀螺仪和加速计是探测驾驶事件的最佳传感器
- 一般来说,使用所有传感器轴比使用单个传感器轴表现更好,除了侵略性的左转事件
- 到目前为止,RF是表现最好的MLA,其次是MLP
- 前35种组合的性能均令人满意且相当,AUC均值在0.980 ~ 0.999之间变化。
在未来的工作中,本文希望通过不同的车辆、Android智能手机型号、道路状况、天气和温度来收集更多的驾驶事件样本。本文还希望在评估中增加更多的MLAs,包括基于模糊逻辑和DTW的MLAs。最后,本文打算使用本研究中观察到的最佳评估程序集来开发一个Android智能手机应用程序,该应用程序可以实时检测驾驶事件并计算驾驶员行为概况。