铁路调度员疲劳状态检测软件研究与设计

2024-03-20 02:00郑伟陈亮吕宏宇胡大欣俱岩飞张春光
铁道通信信号 2024年3期
关键词:嘴部调度员关键点

郑伟,陈亮,吕宏宇,胡大欣,俱岩飞,张春光

调度中心作为铁路运输的指挥中枢,负责指挥各部门协同完成运输工作,担负着保障运输安全、组织客货运输、保证国家重点运输任务、提高客货服务质量的重要责任。调度指挥的准确性、可靠性、安全性是铁路运营安全的重要保障。调度员的工作状态极大地影响着铁路的运营安全,而疲劳是诱发人因失误的主要原因之一[1-3]。因此,对调度员疲劳状态进行在线检测,是保障铁路正常运输秩序、提质增效亟待解决的问题。

目前,国内外关于飞行员、司机驾驶疲劳检测技术的研究较多,调度员疲劳检测可以进行借鉴。文献[4]提出一种基于卷积神经网络的深度学习算法,用来自动识别睡意状态,采用单通道原始脑电信号作为深度学习算法的输入,从中提取特征;文献[5]采用8个脑电通道对高铁司机状态进行检测,使用矩阵分解算法对从无线可穿戴脑电信号采集设备获得的信号进行疲劳状态分类;文献[6]基于机器学习方法,将PERCLOS[7]判定准则的f值、最长持续闭眼时间和嘴部张开次数作为神经网络的输入,构建3层反向传播神经网络识别疲劳状态;文献[8]提出基于改进Retina-Face模型和改进ShuffleNetV2网络模型提取图像特征,实现通过人脸检测及眼睛嘴巴开合状态对疲劳状态进行判断;文献[9]通过模糊推理系统,将眼睛开合度、嘴巴开合度、眼动速率等3个判断指标相结合,用来判断疲劳;文献[10]提出一种基于上身姿态的双流融合网络模型,判断高铁司机疲劳程度。

综上所述,基于类似脑电的人体生理指标检测方法对于疲劳检测较为直接,但穿戴设备对工作人员的侵入性和干扰性较强,影响正常工作;而基于面部、眼部图像的检测方法,仅采用单一特征,检测效果也有待提高,且视频数据如果采用人工监控的方式,成为一种事后取证的工具,很难进行统计分析,无法满足铁路局对调度员疲劳状态统一管理和考核的需求。

为此,结合调度员工作特点,本文提出基于图像多特征融合的调度员疲劳检测方法。该方法基于图像识别技术的非接触式设计,在调度员前方安装单目摄像头并连接工控机,实时检测调度员脸部及其上半身姿态,利用疲劳检测模型对调度员当前的疲劳状态进行分类。在不干扰调度员工作的前提下,可提高疲劳检测准确率及时效性,实现对调度员疲劳状态数据的分析与管理。

1 疲劳状态检测算法

1.1 基于Retina-Face的脸部关键点检测算法

PERCLOS P80是检测人体疲劳公认较为准确的方法之一。PERCLOS的全称为“Percentage of Eye Closure over the Pupil for the Required Observation Time”,即在所需观测时间内瞳孔上眼睑闭合的百分比。PERCLOS P80是指在单位时间(60 s)内测量眼睛闭合程度超过80%的时间所占的比例(用P80表示)。用该方法可以实现非接触式检测,对被监测人员不产生影响,但需要对人脸部,尤其是眼部、嘴部的关键点进行准确而快速的定位。

目前,面部关键点定位有多种解决方法,如级联形状回归方法、基于深度学习方法等。其中,精度最高的是基于深度学习的方法,考虑到现场实际应用,需要选择精度较高且模型体积较小的关键点定位方法。Retina-Face是insightface团队提出的一种专门检测人脸的单阶段多任务深度学习检测算法,其网络模型特点包括:单阶段目标检测、特征金字塔网络方法、上下文特征模块、多任务学习、锚点框机制及轻量级主干网络等,能够识别人脸关键点,进而检测出打哈欠、眨眼等动作。该模型在推理速度和准确性方面较优秀,适合在小型工控机上完成人脸关键点检测任务。综上所述,本研究基于Retina-Face模型识别面部关键点,截取眼部图片;然后结合方向梯度直方图(Histogram of Oriented Gradient, HOG)与支持向量机算法(Support Vector Machine, SVM),即HOG-SVM算法实现眼部睁眼、闭眼分类;最后采用PERCLOS方法评估调度员疲劳状态,准确地检测并判断个体的眼部动作和疲劳程度。

本文基于Retina-Face的面部关键点检测算法,重新设计了21个人脸检测关键点[11]:左右双眼各6个、鼻尖1个、嘴部8个,面部关键点检测示意见图1。

图1 基于Retina-Face的面部关键点检测示意

Retina-Face包含3个任务:人脸分类、脸框检测、关键点检测。当使用人脸分类、脸框检测的预训练网络权重文件进行预测时,无需对权重文件再次训练,仅对面部关键点检测权重单独训练即可,可以大幅提高训练效率,并且由于预训练权重对人脸检测效果较好,还可以对关键点检测的准确性起到积极作用。以打哈欠为例,提取嘴部8个关键点并进行定位。一般打哈欠时,嘴部纵横比MAR会产生较大变化,与说话时的MAR值有明显区分,因此本文采用固定阈值的方法进行面部关键点的打哈欠检测。当MAR<0.3时,确定为口闭或开口说话;当MAR>0.3时,确定嘴部状态为打哈欠。嘴部MAR变化情况见图2。

图2 嘴部MAR变化情况(截取)

1.2 基于BiLSTM-SVM的自适应增强算法

针对工作中仅能拍到调度员半身坐姿的特点,提出一种基于双向长短时记忆神经网络(Bidirectional Long Short-Term Memory,BiLSTM)和自适应增强算法的人体姿态分类方法。BiLSTM是一种更高级的循环神经网络,有效避免了梯度消失和梯度爆炸的问题。

针对多分类问题,运用单一的人工智能方法已经不能满足对分类问题的泛化与推理能力的提升。而集成学习方法可以有效提高模型能力,Ada-Boost算法由Freund提出,是最具代表性的自适应增强算法之一。该算法会增加错误训练实例的相对权重,然后使用更新后的权重训练第2个分类器,并再次对训练集进行预测,更新实例权重,以此类推。Adaboost算法模型见图3。

图3 Adaboost算法模型

根据动作时间序列特点,本文采用循环神经网络与集成学习算法相结合的思路,基于高分辨率网络(High-Resolution Net, HRNet)人体姿态关键点检测模型,提取人体骨骼关键点信息[12];通过构建人体动作行为角度特征与长度比例特征,实现数据降维与特征提取;采用SVM替代网络输出层Softmax函数完成动作分类,以达到提高识别率的目的;最后以BiLSTM-SVM作为Adaboost算法的基础分类器,在提高识别率的同时,降低泛化误差,实现调度员疲劳动作的识别。

2 方案设计

通过放置在调度台的摄像头,采集调度员面部及身体姿态视频信息,分析调度员的眨眼频率、时长和打哈欠频率等面部特征,以及低头、趴桌等瞌睡姿态特征,对调度员的疲劳状态数据进行实时记录、分类、分析与跟踪。软件架构共分为5层,分别是显示层、功能业务层、数据层、传输层、采集层,见图4。

图4 软件架构

1)显示层。基于PyQT设计的软件人机交互界面,具有视频实时显示、本地视频播放、疲劳状态检测结果显示、历史数据查询等功能。

2)功能业务层。负责实现软件的基本操作与核心算法,包括调度员疲劳检测的各项功能模块:摄像头实时数据采集、视频数据播放及检测、多特征融合疲劳检测模型、声音报警等。实现调度员疲劳状态的检测与报警,同时与数据层进行相关疲劳数据的读写,是该软件的核心。

3)数据层。作为软件的数据中心,存储调度员疲劳状态数据、视频数据文件等。

4)传输层。通过有线网络的方式进行摄像头与主机间视频图像的传输。

5)采集层。通过硬件设备单目广角摄像头,完成调度员视频图像的采集。

3 软件设计与实现

软件利用人工智能、图像处理等计算机技术,对实时采集的调度员面部表情和行为姿态视频信号进行识别、分析和统计,具有在线监控、视频管理、统计分析等功能,满足调度中心对调度员疲劳状态监控及管理需求。

3.1 检测算法流程

首先,通过视频采集设备获取调度员的实时视频图像;其次,利用Retina-Face模型提取人眼、鼻尖和嘴部的关键点,根据眼部图片,计算HOG特征,输入SVM中,同时通过HRNet人体姿态关键点检测模型提取人体关键点,将人体姿态特征输入BiLSTM-SVM自适应增强算法模型中,得到疲劳状态下的各特征值;最后,将所有特征值作为人工神经网络的输入,计算多特征融合的疲劳状态。检测算法流程见图5。

图5 铁路调度员疲劳状态检测算法流程

通常情况下,人体在疲劳状态时,眨眼频率、PERCLOS值、打哈欠次数都会增加。进行疲劳检测时,如果计算周期过长则无法及时发现疲劳状态,周期过短则易导致疲劳误检率过高。为了兼顾疲劳检测的实时性和准确率,软件将疲劳检测周期设定为60 s,视频采样帧率为30帧/s,即计算1 800帧数据中各项特征的数值及调度员疲劳状态。

3.2 软件实现

软件开发使用Python语言,开发环境采用PyCharm,界面利用QtDesigner设计,数据层采用SQL Lite进行设计与管理。其中QtDesigner提供了前端常用的按钮、对话框、文本框等控件。根据前后端分离设计的软件实现思路,前端界面的设计完成后,通过调用后台逻辑文件实现软件业务功能。整个数据库采用一张用户表设计,包括ID、姓名、工号、疲劳状态、起始时间、截止时间、视频文件路径等参数。

如图6所示,软件操作界面采用分区显示,左侧区域为已存的录像视频检测及显示,右侧区域为实时检测视频。

图6 疲劳状态检测软件操作界面

4 试验验证

试验数据集为自制数据集,采用摄像头拍摄在调度模拟仿真实验室进行试验时志愿者的视频数据。共有5位不同年龄段的志愿者,包括3名男生、2名女生,身体状况良好。每个志愿者均采集40 min的视频数据,时间分布为上午9:00—10:00间采集10 min,下午3:00—4:00间采集10 min,晚上23:00—24:00采集20 min(疲劳状态),共采集200 min,包括轻度及以下疲劳状态、中度疲劳状态、重度疲劳状态。每一个数据为1 min,共200条数据,经过筛选,可用数据为192条。将其分为138条训练数据,54条作为测试数据,训练数据采用5折交叉验证法,轮流将训练集中110条数据用来训练,另外28条用来验证。

首先将采集到的视频数据输入到Retina-Face模型进行人脸关键点定位,得到人眼部12个、嘴部8个、鼻尖1个关键点位置数据;然后根据每一帧图像的眼部与鼻尖关键点,计算得到基准眼的眼部截图,提取HOG特征,并将其输入采用粒子群算法训练好的支持向量机SVM分类器中进行睁闭眼识别,计算最近1 800帧的PERCLOS值。

眨眼是一个过程,一个完整的眨眼约需0.1~0.4 s[13]。视频帧率为30帧/s,一帧的采样时间大约为0.033 s,所以在无特殊遮挡情况下,眨一次眼睛软件至少可以采集到2张图片,因此基于实际测试效果,软件处理逻辑确定将2次连续的闭眼图片计为1次眨眼。

再根据嘴部8个关键点位置数据,计算每帧图像的MAR,采用固定阈值判定打哈欠的发生,同样计算最近1 800帧内打哈欠动作的次数。在采集面部关键点进行计算时,视频数据同时输出给BiLSTM-SVM自适应增强模型,计算得到打哈欠、低头、趴桌等行为的次数。

为证明本文选取多特征的有效性,选取3种不同特征下的疲劳分类方法进行准确率的对比分析,共有54个测试样本,检测结果对比见表1。

表1 单因素与多特征融合算法检测结果对比

表1数据表明:检测调度员疲劳状态过程中,在单一眼部特征检测基础上,引入打哈欠的面部特征后,算法准确率明显提升;融合了眨眼、打哈欠的面部特征和行为特征的多特征融合算法,不仅能检测眨眼、打哈欠等动作,还能识别一定的疲劳姿态,进一步提高了疲劳状态检测准确率。

5 结论

1)本文提出的铁路调度员疲劳状态检测方法,将终端检测的信息通过智能算法解析,识别调度员的疲劳程度,并根据识别的结果进行声音报警;同步将数据记录至数据库,便于管理、统计、分析,满足当前铁路局和调度中心集中管控的需求。

2)系统采用基于多特征融合的铁路调度员疲劳检测方法,构建了多个疲劳特征判据,并将基于图像识别的面部信息与行为动作姿态信息融合,作为疲劳状态检测的手段,依托调度仿真实验室的模拟试验,疲劳状态检测准确率为96.3%,证明了该方法的有效性。

本方法提高了铁路调度员的工作安全水平,对保障铁路的安全运营具有重要意义。下一步,将继续完善网络与传输功能,为提升铁路行车安全水平发挥更大作用。

猜你喜欢
嘴部调度员关键点
Quick thinking by his wife saving Steve s life紧要关头,成功救援
MPDS系统应用下急救调度员应具备的素质和能力分析
拨打120急救电话要注意什么?
聚焦金属关键点
肉兔育肥抓好七个关键点
此人为何杠得如此嚣张?
圆号教学中嘴部教学的重要性及训练方法研究
城市轨道交通行车调度员职业适应性研究*
高中素描头像教学中提高嘴部刻画能力的策略探究
基于Horn-Schunck光流法的多目标反刍奶牛嘴部自动监测