李 敏,李江天,宋战兵
(武汉理工大学 汽车工程学院,湖北 武汉 430070)
随着无人驾驶技术的发展,驾驶员对驾驶过程的参与将越来越少。由于驾驶员的操作很少,极易进入疲劳,且一旦进入疲劳将更难以唤醒[1]。由于操作行为很少,不宜依据驾驶员行为检测,因此本研究从生理信号展开对驾驶疲劳的检测研究。
生理参数驾驶疲劳检测相关研究中目前存在一些不足:①检测设备存在侵入性。以往研究由于条件限制,采集生理信号时需要在驾驶者身上布置复杂线路或传感器,干扰正常驾驶,不能很好地反映正常驾驶条件下驾驶者的行为反应。②以往研究对疲劳状态的确定不够严谨,直接将实验结束前30 min作为疲劳状态,可能遗漏部分疲劳时段,或通过KSS嗜睡量表,太过主观。因此,数据的采集方法以及疲劳段的确认还有待优化。
为弥补以上不足,本研究利用无侵入性的穿戴设备Bio-Radio 无线生理监测仪采集了4 h高速单调路况下模拟驾驶的皮电和肌电信号,传感器手环采集了心率信号,实时动态追踪生理信号变化规律及疲劳发展过程。通过实验过程中应对刺激信号的反应时间区分疲劳状态与清醒状态,然后对比分析不同状态下各信号的时域特征,确定皮电、肌电样本熵作为特征值,通过SVM(support vector machines)实现驾驶疲劳检测,为疲劳驾驶预警设备的开发奠定了理论基础。
驾驶疲劳发展过程中,一些生理参数也会发生明显变化。目前已有很多生理信号被用于检测驾驶疲劳,尤其是脑电和眼电信号的研究,还有心电、血氧、脉搏等,然而关于皮电用于检测驾驶疲劳的却几乎没有。刘光远等认为肌电可以用来评价肌肉和神经活动的强弱,皮电可以间接测量脑唤醒和警觉水平[2]。Karthick等[3]基于改进的B分布时频特征(modified B-distribution,MBD)对表面肌肉疲劳进行分析,采集肱二头肌处的肌电信号,并提取不同频带的功率比值,最终实现了各种正常和异常情况下的神经肌肉活动的有效区分。Patel等[4]基于心率变异性HRV(heart rate variability)建立了一种检测疲劳早期的神经网络模型,准确率达90%,并认为LF(low frequency)/HF(high frequency)可用于检测驾驶疲劳,随着疲劳增加LF/HF指标降低,表明驾驶员的驾驶操作能力与行为下降。从理论上分析,肌电、皮电和心电都与神经系统的活动密切相关,而驾驶疲劳属于精神疲劳,因此各信号与驾驶疲劳应该存在联系,可用于检测驾驶疲劳。
搭建的模拟驾驶平台和生理信号采集设备有:罗技G29驾驶模拟器、Bio-Radio 无线生理监测仪,传感器手环。通过Bio-Radio无线生理监测仪采集肌电和皮电信号,手环采集心率。其中,Bio-Radio无线生理监测仪可全面检测人体生理信号,包括呼吸、肌电、皮电、心电和血氧浓度等,并采用无线蓝牙的方式把生理数据传输至计算机。佩戴方便舒适,无侵入性,不干扰正常驾驶。
选择高速公路作为模拟驾驶场景,因为高速公路环境单调,速度稳定,行车噪声小,容易导致疲劳。具体场景由LFS(live for speed)软件构建,按照高速公路的标准,设计模拟道路为双向四车道简单环形路线,车道宽3.75 m,直道5 km,弯道半径800 m,全长12.5 km,无坡度变化。
参与实验人员共计8位(5男3女,年龄21~30岁,平均26岁,平均驾龄3年),身体健康,视力良好,睡眠充足。模拟驾驶平台由罗技G29驾驶模拟器、55寸显示器和计算机组建而成。实验前先熟悉设备及实验操作,然后佩戴Bio-Radio生理监测仪和传感器手环,在下午13:00~18:00点之间进行实验。为了采集被测试者的反应时间,用Visual Studio编制信号灯作为刺激信号,在交通场景中每隔5 min出现一次,记录刺激信号出现至驾驶员正确操作按键的时间。
表面肌电信号主要集中在50~150 Hz,使用滤波器滤掉50 Hz的工频噪声,滤波器类型选择Butterworth高通滤波器[5],肌电电位增益1 000。人体皮电信号的有效频段范围为0.02~0.2 Hz,采用Butterworth带阻滤波器,带宽设置为0.02~0.3 Hz,阶数为2[6]。
原始采集的皮电和肌电信号皆为时域信号,其变化规律杂乱无章,为便于分析频率特性,将时域信号转换为频域信号,对其进行快速傅里叶变换,得到其功率谱,在此基础上得到分析疲劳状态的皮电肌电功率指标。
在对疲劳状态和清醒状态的数据进行对比分析之前,首先需要区分疲劳状态与清醒状态。研究表明[7],反应时间长短与EEG(electroencephalogram)4种波形密切相关,都能够判断困倦状态,因此本研究采用反应时间确定疲劳状态。为更好地观察不同状态下各生理信号的变化情况,将各生理信号进行适当处理后与反应时间绘制在同一图中,如图1所示。图1中X轴表示时间,每刻度为2 min,左边纵坐标表示采集的各信号指标值,分别为反应时间(ms),心率(次/min),肌电功率(V2),右边的纵坐标表示皮电功率(μV2)。
图1 反应时间与生理信号图
观察图1中的反应时间,确定反应时间突变时刻为疲劳状态。 反应时间的变化是跳跃性的。在4 h的长时间模拟驾驶过程中,反应时间并非逐渐递增,而是发生突变,呈现周期性。突变意味着驾驶员驾驶操作能力显著下降。在这之前,并不意味着没有疲劳发生,观察视频发现反应时间突变之前有打哈欠等疲劳症状,只是疲劳累积还未达到严重影响驾驶能力的程度。反应时间突变之后,则由于身体自我调节控制等复杂的机制,重新恢复清醒。
生理信号包括:①心率。疲劳状态时,心率变化不一致,有些大幅度高于平均值,而有些却明显低于平均值。进入疲劳状态的过程中,心率变化剧烈。②肌电。肌电功率的变化也不一致,疲劳状态时部分高于清醒状态并呈现出增加趋势,部分则急剧降低低于清醒状态。③皮电功率变化规律较一致,疲劳状态下的皮电功率低于清醒状态。经过上述各信号变化规律分析,疲劳状态下心率和肌电都呈现出不同的相反的两种情况,分析原因可能为指标选取不太合适,不能反映总体规律,或者各信号变化与疲劳程度有关,即同为疲劳,但是不同疲劳程度可能规律也不一样。由于仅根据反应时间无法进一步细分疲劳程度,本研究进一步选取指标探索不同状态下各生理信号规律。
本文的实验环境为:Intel(R)Core(TM)i5-4210M CPU@2.60GHZ,8GB内存,NVIDIA GTX 850M显卡。使用的开发工具为基于Python 3.6.5版本的PyCharm,Alex-Net卷积神经网络使用TensorFlow框架。
因心率信号采集精度较低,仅对皮电肌电信号选取特征指标。分别选取疲劳和清醒状态下1 min的数据进行分析,反应时间突变时刻作为疲劳状态数据源,实验开始之后第15 min作为清醒状态数据源。对比被试者在疲劳状态和清醒状态的皮电和肌电可看出,不同状态下波动程度不一样。由于样本熵能反映序列的无序度或混乱度,因此可选取样本熵作为特征指标。
样本熵(sample entropy)是由Richman和Moornan提出的一种基于近似熵进行改进的算法,能有效度量新的时间序列复杂性,序列越复杂,样本熵值越大[8]。样本熵计算准确性和对数据序列的解释能力不受参与计算的数据序列长短影响,也不仅限于确定性信号分析,还适用于随机信号,且具有较好的抗干扰和抗噪能力。样本嫡可以用SampEn(N,m,r)表示,其中,N为数据长度,m为嵌入维数,r为相似容限。r取原始数据标准偏差的0.1~0.25倍,m=1或m=2时样本熵值对序列长度N的依赖性最好。通常情况下为减少详细信息的遗漏,优先选择m=2,m>2时,对数据量要求较高。N最好在100~5 000之间。计算过程如图2所示,具体计算通过Matlab实现。
采用窗口长度为500点(1 s)的时间滑动窗进行分析,即N=500,疲劳和清醒状态分别选取1 min进行分析,即两种状态分别为30 000个数据,60个样本熵值。m取2,r取0.2倍标准偏差。计算得清醒状态下皮电样本熵均值为0.079 9,标准差为±0.097 3;疲劳状态样本熵均值为0.047 0,标准差为±0.063 2。由此可得,随着驾驶疲劳程度的加重,皮电信号样本熵值逐渐降低,且波动幅度变小。皮电样本熵值如图3所示。
图2 样本熵计算过程
图3 皮电样本熵值分布图
对清醒状态和疲劳状态下的皮电信号样本熵数据进行独立样本t检验,结果见表1,p值(Sig)为0,小于0.05,表明被试者在疲劳与清醒状态下的皮电信号样本熵值存在显著性差异,即样本熵的大小能够反映驾驶员的疲劳状态,可以作为驾驶疲劳的判别指标。
表1 皮电样本熵值独立样本检验
肌电信号分析处理方法同皮电。肌电样本熵值分布如图4所示,由图4可看出清醒状态下肌电信号样本熵值较低,且波动幅度较小,疲劳状态下样本熵值较高,且波动幅度较大。此规律正好与皮电相反。对清醒状态和疲劳状态下的肌电信号样本熵进行初步统计计算,得清醒状态下均值为0.398 5、标准差为0.315 2;疲劳状态下均值为0.599 4,标准差为0.393 7。对肌电信号样本熵数据进行独立样本t检验,p值为0,表明被试者在疲劳与清醒状态下的肌电信号样本熵值存在显著性差异,可以作为驾驶疲劳的判别指标。
图4 肌电样本熵值分布图
支持向量机,最早由Vapnik提出,可用于模式分类和非线性回归,其主要思想是建立一个分类超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化[9]。支持向量机具有良好的泛化能力,即通过有限训练样本得到小的误差仍然能够保证独立的测试样本也保持小的误差,还具有较好的鲁棒性,被广泛用于模式识别问题。
设线性可分样本集为(xi,yi),i=1,2,…,n,x∈Rd,y∈{+1,-1}表示类别符号。线性判别函数的一般形式为g(x)=w·x+b,分类线方程则为w·x+b=0。对该判别函数进行归一化处理,使所有样本满足|g(x)|=1,分类间隔则为2/‖w‖,当‖w‖最小时有最大分类间隔,为实现对所有样本正确分类,需满足
min‖w‖2/2
s.t.yi[w·x+b]-1≥0,i=1,2,…,n
(1)
通过Lagrange将上述分类问题转化后,得到最优分类函数为:
f(x)=sgn{(w*·x)+b*}
(2)
(3)
式中:ai≫0,w*为最优分类面的权系数向量;b*为最优分类阈值。
线性不可分情况下,式(1)中应增加一个松弛项参数εi≥0,即为:
s.t.yi[(wi·xi)+b]-1+εi≥0,i=1,2,…,n
(4)
式中:C为大于零的常数,被称为惩罚因子。
通过皮电和肌电样本熵实现清醒与疲劳两种状态的分类,属于二维的二分类问题。依据反应时间区分疲劳与清醒状态,选取反应时间突变点处的1 min作为疲劳状态,分类标签为1,第15 min为清醒状态分类标签为0,再从疲劳状态中选取10个最大的样本熵值,清醒状态中随机选取10 s,作为SVM训练和测试样本,共160组数据,每个样本包含皮电样本熵和肌电样本熵两个维度。然后将每个类别所有数据随机分为两组,一组为训练集,一组为测试集,对分类模型进行训练和测试。
训练之前,为达到更高的分类准确率,对所有样本数据进行归一化处理,具体关系如下:
(7)
其中,x,y∈Rn。归一化处理后,所有原始样本数据都被规整到[0,1]区间内。
然后选择RBF(radial basis function)核函数,通过matlab中的libsvm工具箱实现驾驶疲劳分类。首先由训练集数据对SVM进行训练得到分类模型,然后用该模型对测试集进行标签预测,再与通过反应时间得到的疲劳与清醒状态分类相比较,最终得到分类准确率为86.25%,分类结果如图5所示,具体所有实例判断结果如表2所示。若仅使用皮电信号分类准确率为71%,仅使用肌电信号准确率为83%,由此可看出,融合信号将提高分类准确率。
图5 测试集分类结果
SVM01//%03644090.0017334082.50
通过实时采集驾驶员动态驾驶条件下的皮电、肌电和心率信号,并通过刺激信号采集反应时间,根据反应时间确定疲劳状态,分析各信号不同状态下的变化规律,进一步选取表征信号复杂程度的皮电、肌电样本熵作为特征指标,通过SVM进行驾驶疲劳检测,得出以下结论:
(1)反应时间的变化是跳跃性的。在4 h的长时间模拟驾驶过程中,反应时间并非逐渐递增,而是发生突变,呈现周期性变化。
(2)清醒状态与疲劳状态下的皮电、肌电信号样本熵值都存在显著性差异,利用皮电与肌电信号的样本熵值作为动态驾驶疲劳判别指标,能有效识别出驾驶疲劳。皮电信号样本熵值在疲劳状态下低于清醒状态,且波动幅度更小。大部分驾驶员的肌电信号样本熵值在疲劳状态下则高于清醒状态,且波动幅度更大。
(3)通过构造皮电样本熵和肌电样本熵二维特征向量,结合反应时间确定的分类标签,即疲劳状态与清醒状态,利用支持向量机对驾驶疲劳状态进行识别,准确率达86.25%。