吴雪,王娆芬
上海工程技术大学电子电气工程学院,上海201620
随着科技的进步,自动控制技术在社会发展中起到至关重要的作用。在自动控制系统运行过程中,几乎不需要人类进行手动操作,人类操作员成为自动控制系统的监控者[1]。系统降低了对人的体力要求,与此同时,也提高了对人的脑力要求。研究表明,操作员的功能状态是决定系统性能的一个重要因素。疲劳、嗜睡、注意力不集中等都会影响系统的安全运行[2]。在对安全性有较高要求的自动控制系统中,诸如以铁路、航空、船运等为代表的交通运输行业,由于操作员心理或生理产生的疲劳而导致事故的发生,一直以来都引起了广泛关注[3]。因此,为了在一定程度上保证系统安全地运行,可以通过监测和评估操作员的疲劳状态,适当调整操作员的工作负荷,从而大大减少操作事故的发生。
疲劳状态检测方法主要包括主观测量法和生理测量法[4]。主观测量法会受操作员主观评价的影响,根据操作员的主观判断,对自身的疲劳状态进行度量。但是,操作员有时并不一定能准确判断自身的疲劳状态,这会影响测量的准确性。另一方面,在进行主观测评时,操作员要停下手中的任务,填写主观问卷调查,会对操作任务造成影响。因此,主观测量法一般只用作其他疲劳检测方法的参考。有研究表明,与其他疲劳指标(如面部表情、语音信号等)相比,心电、脑电、眼电等生理信号也能反映被试的疲劳状态[5]。
近年来,疲劳检测已经取得了很大的进展,有很多研究者采用生理信号测量法对疲劳进行研究。Li等[6]采用支持向量机(Support Vector Machine,SVM)技术通过提取心电、脑电的特征来识别驾驶员的疲劳程度,并将交叉验证方法用于优化SVM 的参数。Chen 等[7]提出一种综合的心电图参数获取方法,该方法包括问卷调查过程和心电信号提取。同时,采用受试者操作特征曲线求出疲劳决策阈值,结果表明,所提出的模型和阈值选择方法是有效的。王连震等[8]采集实验过程中的脑电和心电数据,采用K 均值聚类法确定不同疲劳状态等级下的阈值,并建立基于模糊评价的疲劳指标计算模型,以量化疲劳状态。
随着深度学习的迅速发展,人们构建不同的神经网络去实现对生理信号特征的自动提取,从而代替传统方法中复杂的特征提取过程[9-10]。李文学等[11]通过ResNet 网络对眼部进行特征提取,并将数据送入长短期记忆网络(Long Short-Term Memory,LSTM),最终通过softmax 完成疲劳驾驶状态的判定。Bhardwaj 等[12]构建基于堆叠式自动编码器的深度学习架构,用于确定驾驶员的疲劳感。Gao等[13]研究一种基于脑电信号的时空卷积神经网络来检测驾驶员的疲劳状态。
在诸多生理信号中,心电信号更具有规律性,容易反映操作员的疲劳状态[14]。为了能够实时准确检测操作员的疲劳状态,减少模型的训练时间,并且较好地消除操作员之间个体差异性的影响,本研究将心电数据分成每个样本为1 s 的时间长度,提出一维双卷积神经网络(One-Dimensional Double Convolutional Neural Network,1D-ECNN),对短时心电信号进行疲劳分类。构建1D-ECNN 且仅使用32和64的卷积核数量,提高模型训练速度,用来实时监测和评估操作员的疲劳状态,从而提高操作的安全性,降低事故的发生。
实验设备采用由Hockey 等[15]和Lorenz 等[16]开发的密闭舱大气管理系统(Automation-enhanced Cabin Air Management System,AutoCAMS)来模拟安全性要求较高的任务环境。AutoCAMS 由5 个子系统组成,分别控制密闭仓内5个大气指标,包括温度、压力、湿度、氧气浓度和二氧化碳浓度。系统给出5个大气指标的正常阈值,要求各个指标控制在正常范围内,当指标在正常阈值内,系统保持舒适的大气条件,不会导致密闭舱内操作员身体不适。实验环境如图1所示。
图1 密闭舱大气管理系统Fig.1 Automation-enhanced cabin air management system
在本研究中,选取上海工程技术大学8名健康的男性研究生作为被试进行实验。由于每位被试都没有接触过该实验环境,因此,在正式进行数据采集实验之前,务必要求每名被试接受过程控制任务的培训,培训时间不低于10 h,以便其熟悉实验过程。此外,要求每位被试在实验前一天保持充足的睡眠,避免饮用如咖啡、茶、饮料等刺激性饮品。
使用EEG1100 生物电信号采集设备采集心电信号,使用两个电极贴片,分别置于被试锁骨中央颈窝处和左腹肋骨下方,上下电位相减,即可得到心电信号。实验共分为8 个阶段,持续100 min,采样频率为500 Hz。实验范式如图2 所示。其中C1 和C8 阶段为基线测试阶段,持续5 min,在此阶段所有子系统由计算机自动运行,被试不需要完成任何操控任务,仅需观测界面上指标的变化即可。C2~C7 是不同任务负荷阶段,每个阶段持续15 min,这时需要被试手动控制某些子系统以维持系统的稳定运行。每个阶段结束之后,要求被试填写主观量表,记录其疲劳状态。实验前,被试应处于非疲劳状态。根据主观疲劳量表,将C1和C2阶段的心电信号作为非疲劳状态数据,为了使心电数据保持平衡,从C6阶段的心电信号中截取5 min的数据和C7 阶段的心电信号数据用作疲劳状态数据。本研究对每位被试共计40 min 的心电数据样本进行疲劳分类。将心电信号分为时间长度1 s的数据段,每位被试的实验数据包括1 200个疲劳状态样本和1 200个非疲劳状态样本。
图2 实验范式Fig.2 Experiment paradigm
心电信号的采样频率为500 Hz,将采集到的心电数据截取500 个点(即1 s)为一个样本。心电分割示意图如图3所示,其中前面一个框图表示分割出的一个心电样本,依次以1 s的滑动步长进行心电分割。
图3 心电分割示意图Fig.3 Schematic diagram of ECG segmentation
将C1和C2阶段的1 200个非疲劳状态样本的标签设置为0,C6和C7阶段的1 200个疲劳状态样本标签设置为1,把处理后得到的2 400 个样本作为1DECNN的输入。
本研究设计了一个8 层的1D-ECNN 对心电信号进行疲劳分类,包括4 个卷积层、2 个最大池化层、1个全连接层和1 个softmax 输出层。模型设计的原则是在保证准确度的基础上,尽可能降低模型训练的复杂度,并减少不同被试之间个体差异性的影响,使模型更具普适性。该卷积神经网络模型的整体结构如图4所示。
图4 卷积神经网络结构Fig.4 Convolutional neural network structure
1D-ECNN 的具体结构参数见表1。在模型训练过程中,首先,将心电信号输入到卷积层进行特征提取,卷积核的大小为1×2,步长为2,使用卷积层对输入信号进行特征提取[17],从而消除传统机器学习算法中复杂的特征提取过程。然后执行1×2 的最大池化,最大池化是一种减少模型冗余程度的方法。在最大池化层中,通过对上一层获得的特征图上的指定区域进行下采样,然后选择最大值来生成新的特征图,从而减少计算量,提高计算速度,同时提高所提取特征的鲁棒性。接着送入全连接层以进一步学习,最后用softmax分类器进行分类。
表1 1D-ECNN的结构参数Tab.1 Structure parameters of one-dimensional double convolutional neural network(1D-ECNN)
设置训练的迭代次数为100 次,每批处理的样本数(batch_size)为20。在全连接层中,神经元的数目为512,dropout 的值为0.5。dropout 指的是在训练过程中,每次更新参数时将会随机断开一定百分比的输入神经元,使用dropout 随机断开连接相当于削减模型参数的数量,还可以防止网络结构过度拟合。训练好的模型通过端到端结构对心电信号进行自动分类[18]。激活层增加了模型的非线性表达能力,同时避免梯度消失的问题,减少模型的训练时间。本研究选择ReLU作为激活函数,函数如图5所示。
图5 ReLU函数图Fig.5 ReLU function graph
本研究是在Python3.6 的环境下,使用基于keras的深度学习平台对心电数据进行分类。为验证所提出模型的性能,将采集到的每个被试的心电数据集随机分为两部分:80%的样本作为训练集、20%的样本作为测试集,从而用来评估基于心电信号的疲劳模型的分类性能。
本研究使用准确度来对操作员疲劳分类效果进行衡量,使用交叉熵函数作为损失函数,损失函数为模型的优化目标,交叉熵越小表明预测结果越准确。经过100次迭代训练后,得到被试3和4在模型训练过程中的损失函数的下降趋势如图6和图7所示。随着迭代次数的增加,模型的损失函数逐渐下降趋于稳定,被试3的损失函数最终收敛于0.12左右,被试4的损失函数收敛于0.001左右。疲劳模型分类识别的准确率变化如图8和图9所示。随着迭代次数的增加,模型的分类准确率逐渐上升趋于稳定,被试3的分类准确率最终收敛于96%左右,被试4的分类准确率收敛于100%。
图6 被试3在训练过程中损失函数变化图Fig.6 Loss function change of subject 3 during training
图7 被试4在训练过程中损失函数变化图Fig.7 Loss function change of subject 4 during training
图8 被试3疲劳分类准确率变化图Fig.8 Accuracy of fatigue state classification for subject 3
图9 被试者4疲劳分类准确率变化图Fig.9 Accuracy of fatigue state classification for subject 4
除此之外,使用混淆矩阵对模型训练的结果进行分析。以被试3为例,得到其疲劳分类的混淆矩阵如图10 所示。可以看出,测试集中有236 个非疲劳状态数据和244 个疲劳状态数据,其中有225 个非疲劳样本和240个疲劳样本得到正确的分类,有11个非疲劳样本和4个疲劳样本分类错误。
图10 被试者3的分类混淆矩阵图Fig.10 Classification confusion matrix of subject 3
本研究采用精准率(Precision)、召回率(Recall)和F-score来评估模型的分类效果,3个评价指标的计算公式如下:
其中,β是用来平衡Precision 和Recall 在F-score 计算中的权重,一般情况下,β取1。
本研究采用以上3 个指标来评估模型的效果,如图11所示。从图中可知,被试4的疲劳分类精准率最高,达到100%,被试8最低,但也达到了90%以上,进一步说明了本文所提方法的有效性,可用于实际生活中操作员的疲劳分类,实时有效地监测其疲劳状态,在一定程度上提高操作的安全性。
图11 模型的分类性能图Fig.11 Classification performance of the model
利用测试数据,对训练好的模型进行测试,用以检测每个被试者的疲劳状态,8 个不同被试的疲劳分类准确率、非疲劳分类准确率及总准确度如表2 所示。8 名被试疲劳分类的准确度最高为100.00%,最低为90.68%,非疲劳分类的准确度最高为100.00%,最低为88.93%,平均分类准确率达到95.72%,说明本研究提出的模型能够对操作员疲劳和非疲劳两种状态进行准确的分类。
表2 每个被试者疲劳分类的总准确率Tab.2 Total accuracy of fatigue state classification for each subject(%)
目前已有不少文献对基于心电信号的疲劳分类问题展开研究。Huang 等[19]使用可穿戴心电设备采集心电数据,通过特征选择,选取NN.mean、rMSSD、PNN50、TP、LF和VLF这6个特征,分别使用SVM、K近邻、朴素贝叶斯和逻辑回归这4种算法构建自动检测疲劳状态的分类器,结果表明K 近邻的性能较好。Lei 等[20]在采集的心电疲劳数据中,选择RR 三角指数、LF、HF 和LF/HF 作为心率变异性的特征指标,然后将其输入到SVM 中,获得较好的总体疲劳识别准确率。黄河[21]对运动疲劳实时监测系统进行研究,使用LSTM 模型进行疲劳模型分类训练,取得了较好的分类结果。
将上述文献中提出的方法应用于本文数据,获得每种方法的平均准确率。将本文方法与上述文献的方法进行比较(表3),结果证明本文提出的方法可以更准确地检测操作员的疲劳状态。
表3 本文方法与其它分类方法的对比Tab.3 Comparison of the proposed method with other classification methods
本研究构建的1D-ECNN 模型对基于生理信号的操作员疲劳检测研究具有一定的现实意义,可以为基于心电信号的疲劳检测设备提供参考,实现对操作员疲劳状态的预测,提高自动控制系统的安全水平。该方法可应用于对安全性要求较高的交通运输行业,如铁路、船舶、航空等,实时准确检测操作人员的疲劳状态,减少事故的发生。
将心电信号分为每个样本为1 s 的时间长度,基于短时心电信号进行疲劳分类,以实现实时准确检测操作员的疲劳状态,为安全操作提供了一定的保障。通过8 层神经网络的训练和优化,1D-ECNN 的总体准确率达到95.72%。在相同数据集下,与其他文献的疲劳分类方法相比,1D-ECNN 模型实现了更好的性能,获得了较高的总体准确性,从而证明了将1D-ECNN 模型用于短时心电信号疲劳分类的有效性。
1D-ECNN不仅能取代传统识别算法中复杂的特征提取过程,为模型训练节约一定的时间,而且能提高不同对象疲劳检测的鲁棒性,使用同一模型对不同对象的疲劳状况进行分类,可以更好地消除个体差异的影响。本研究的1D-ECNN仅使用32或64的卷积核数量,减少了模型参数的数量,降低模型的复杂程度,使模型的训练速度更快,总时长不超过5 min。