基于PERCLOS的列车司机疲劳检测设计与实现

2023-04-13 19:21江跃龙张铭智
计算机时代 2023年4期
关键词:人脸检测

江跃龙 张铭智

摘  要: 列车司机长期处于精神高度集中、工作强度较大的工作状态,容易产生生理和心理上的疲劳。本文通过Raspberry PI摄像头对列车司机疲劳状态进行采集,对采集的视频流进行人脸定位和面部特征点的提取,对该列车司机眼睛、嘴巴数据进行分析,结合PERCLOS标准判定列车司机是否疲劳,在GUI界面显示检测结果。

关键词: 列车司机疲劳检测; PERCLOS; 疲劳检测; 人脸检测; SVM人脸检测器; 疲劳驾驶;

中图分类号:TP301          文献标识码:A     文章编号:1006-8228(2023)04-112-04

Abstract: Train drivers are prone to physiological and psychological fatigue when they are in a highly concentrated and intense work state for a long time. In this paper, the fatigue state of the train driver is captured by Raspberry PI camera, and the face positioning and extraction of facial feature points are performed on the captured video stream. By analyzing the data of the train driver's eyes and mouth, whether the train driver is fatigued or not is determined combining with PERCLOS criteria, and the detection results are displayed in the GUI interface.

Key words: train driver fatigue detection; PERCLOS; fatigue detection; face detection; SVM face detector; fatigue driving

0 引言

中国铁路交通发展迅速,铁路运输任务繁忙。列车司机工作环境单调且与人交流时间较少,且长期处于精神高度集中、工作强度较大的状态,容易产生生理和心理上的疲劳,比如驾驶时产生打哈欠、视觉模糊、磕睡打盹等生理反应,而这些生理反应可能属于疲劳驾驶,增加了轨道交通运行的安全风险;在高铁、地铁运行期间,列车驾驶员需要维持其精神高度集中,以应对各种可能出现的风险。因此,检测列车司机是否处于疲劳状态,对于提高列车运行安全性有着重要意义。

1 列车司机疲劳检测疲劳检测方法

1.1 生理特征的疲劳检测方法

利用列车司机的脑电图信号[1]、心电图信号[2]、肌电图信号[3]以及眼电波信号[4]等生理信息特征,对其在正常和疲劳状态下的生理特征的变化进行比较,从而判断列车司机是否产生疲劳。Jain A等人利用脑电图信号的回归参数检测测试者的疲劳程度,对获得的误差函数进行分析,以预测肌肉疲劳程度,从而判断被测试者是否处于疲劳状态[5]。杨渝书等通过心电图信号的时频域指标变化来判断司机的疲劳程度[6]。

1.2 驾驶数据的疲劳检测方法

司机的驾驶行为在不同的疲劳程度下有不同的表现,根据行车数据中的汽车转向角度数据、车辆驾驶方向轨迹数据、行车加速度变化数据以及司机手臂握力变化数据可以检测司机是否疲劳。Sayed R等将汽车转向角度变化信息经过预处理后,将其作为特征参数输入人工神经网络中[7]。使用评价主体作为驾驶数据的疲劳检测方法,驾驶员不需要穿戴各种各样的测量仪器,驾驶数据收集不复杂,但需要汽车安装相应的检测装置,而且检测装置的准确度受道路环境、司机驾驶习惯不同和天气变化影响较大。

1.3 面部特征的疲劳检测方法

司机进入疲劳状态时的面部特征会有所变化,例如瞳孔区域变小、打哈欠、减慢眼球运动速度等等。计算机视觉图像处理技术可被用于收集司机产生疲劳时的面部特征,分析司机疲劳时的面部特征来判定司机的疲劳程度。该方法具有采集面部数据简单、成本低、无需穿戴测量仪器等优点。目前该方法已成为疲劳检测的主流方法。李强使用眼睛的睁开程度来计算闭眼图像帧数占列车司机驾驶图像帧数的百分比,从而判断司机是否疲劳[8]。陈东伟等为检测司机疲劳状态使用了一种新的动态滑动窗口算法来计算眼睛开闭时的准确阈值[9]。

2 系统的总体架构

列车司机疲劳驾驶检测系统需要具备实时检测、稳定的性能和检测高准确性的特点,如果列车司机产生疲劳,则对列车司机进行文字提醒和语音预警。本文的硬件开发平台采用树莓派4B和笔记本电脑,然后使用树莓派CSI摄像头实时采集图像并通过视频推流的方式传输到笔记本上,利用Dlib库进行人脸检测、人脸关键點特征提取,通过PERCLOS准则结合眼睛、嘴巴纵横比判断列车司机是否疲劳,实现对列车司机的非接触式的疲劳状态检测。为了方便操作,基于PyQt5等开发工具开发列车司机疲劳检测系统的GUI界面。基于以上设计思路,绘制相应的系统架构图,如图1所示。

2.1 人脸检测技术

人脸检测技术的发展越来越成熟,如基于模板的匹配算法[10]。

本文选用的硬件为树莓派4B和一台笔记本电脑,硬件性能一般,在兼顾硬件性能和检测速度的情况下,本文选择HOG+线性SVM人脸检测器来进行人脸检测,HOG算法的主要目的是对图像进行梯度计算,统计图像的梯度方向和梯度大小。该算法提取的边缘和梯度特征可以较好的描述图像局部形状的特征,由于采用cell方式对图像进行归一化处理,并且使用Gamma校正处理图像,所以该算法对几何和光学变化都具有良好的抗干扰性,图像发生变换或发生旋转的区域比较小的话对该算法影响很小。在Dlib库中的目标检测模块包含了HOG算法,在Dlib库中调用get_frontal_face_detector函数即可使用HOG+线性SVM人脸检测器,其在检测人脸上有高准确性和良好的实时性,能确保顺利地检测到人脸。HOG+线性SVM人脸检测器检测人脸流程如图2所示。

2.2 疲劳驾驶检测方法

当笔记本电脑读取到列车司机脸部视频流信息时,笔记本电脑中的HOG+线性SVM人脸检测器首先定位人脸的面部信息;当识别确定人脸在图像上的位置后,使用Dlib库提取人脸68个关键点信息;利用PERCLOS值与眼睛纵横比、嘴巴纵横比来计算司机疲劳状态,当判定司机处于疲劳状态时,及时对司机进行语音播报预警和文字显示预警,如图3所示。

2.3 列车司机张闭眼睛判断方法

判断列车司机疲劳的方法,一般列车司机的人脸特征点68个,如图4所示。

左眼睛和右眼,计算闭眼方法[11],将左眼的特征点提取和多边形如图5和图6所示。

图7所示的六边形顶点坐标分别为A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4),E(x5,y5),F(x6,y6),则其面积可以表示为四个三角形面积之和:

如果S面积为0,说明我们列车司机的眼睛实闭合的。

如果S面积>一定阈值的时候(如该值为0),说明我们司机的眼睛是张开。

3 界面设计

列车司机疲劳检测系统的GUI界面设计,主要使用PyCharm集成开发环境+PyQt5工具包,具体包括登录界面、检测界面等。

3.1 疲劳状态检测测试

在树莓派开启RTSP推流后,打开疲劳检测的GUI界面并点击疲劳检测页面中的“打开摄像头”按钮,此时疲劳检测系统开始运行,截取系统运行过程中的部分视频帧进行检测效果展示。

列车司机在清醒情况下检测结果见图8。

列车司机在长时间打哈欠后的检测结果见图9。当计算得出的嘴巴纵横比值大于设定的疲劳阈值时,检测窗口会输出“You are tired”文字预警,提醒列车司机已经出现精神疲劳。

列车司机在长时间闭眼后的检测结果见图10。当计算得出的眼睛纵横比值小于设定的疲劳阈值时,检测窗口会输出“You are tired”文字预警,提醒列车司机已经出现精神疲劳。

4 总结

本文通过Raspberry PI摄像头对列车司机的疲劳状态进行数据采集,人脸定位,面部特征点的提取,同时结合列车司机的特征点对其眼睛、嘴巴数据进行分析,将列车司机疲劳检测在GUI界面显示检测结果“You are tired”文字预警,提醒列车司机当前已经疲劳,为后续进一步研究列车司机的心冲击信号与疲劳相关性研究奠定一定基础。

参考文献(References):

[1] Luo H, Qiu T, Liu C, et al. Research on fatigue driving detection using forehead EEG based on adaptive multi-scale entropy[J]. Biomedical Signal Processing and Control,2019,51:50-58

[2] Zontone P, Affanni A, Bernardini R, et al. Car Driver's Sympathetic Reaction Detection Through Electrodermal Activity and Electrocardiogram Measurements[J]. IEEE Transactions on Biomedical Engineering,2020,67(12):3413-3424

[3] Fu R, Wang H. Detection of driving fatigue by using noncontact EMG and ECG signals measurement system[J]. International journal of neural systems,2014,24(3):1450006

[4] Zheng W L, Gao K, Li G, et al. Vigilance estimation using a wearable EOG device in real driving environment[J]. IEEE transactions on intelligent transportation systems,2019,21(1):170-184

[5] Jain A, Abbas B, Farooq O, et al. Fatigue detection and estimation using auto-regression analysis in EEG[C]//2016 International conference on advances in computing, communications and informatics (ICACCI). IEEE,2016:1092-1095

[6] 楊渝书,姚振强,李增勇,等.心电图时频域指标在驾驶疲劳评价中的有效性研究[J].机械设计与制造,2002(5):94-95

[7] Sayed R, Eskandarian A. Unobtrusive drowsiness detection by neural network learning of driver steering[J]. Proceedings of the Institution of Mechanical Engineers, Part D: Journal of Automobile Engineering,2001,215(9):969-975

[8] 李强.基于PERCLOS的列车司机驾驶疲劳检测研究[D].硕士,北京交通大学,2014

[9] 陈东伟,张喆,韩娜,等.多算法融合的疲劳驾驶监测算法设计与实现[J].太原理工大学学报,2016,47(4):518-522

[10] 李金宝.基于深度视频的疲劳驾驶和危险驾驶行为检测算法研究[D].硕士,青岛大学,2020

[11] 巩晓倩,蒲亦非,杨智勇,等.基于有限状态自动机的人眼开度PERCLOS实现算法[J].计算机应用研究,2014,31(1):307-310

*基金项目:2019年广东省普通高校青年创新人才类项目“基于增强PERCLOS深度学习轨道交通列车司机疲劳检测方法的研究”(2019GKQNCX100); 2021年广州市基础研究计划基础与应用项目“动态场景下基于铁重移采动样机优器化人粒的子应滤用波算法及其在高”(202102080153); 2022年广东省科技创新战略专项资金项目“基于机器学习的轨道交通列车司机HRV健康监测与预警系统”(pdjh2022b0956)

作者简介:江跃龙(1984-),男,福建省龙岩市人,研究生,电子工程师,主要研究方向:智能信息系统、机器视觉、机器学习。

猜你喜欢
人脸检测
肤色与唇色信息相结合的人脸检测
人脸检测技术综述
基于Android的车载疲劳驾驶监控系统研究与设计
一种鲁棒的长期人脸特征点跟踪系统
基于改进的Adaboost算法在人脸检测与识别中的应用与研究
JNI技术在基于OpenCV的人脸与微笑检测中的应用
基于人脸特征定位的SNS网站应用组件研究与设计
基于Android平台的人脸识别系统设计与实现
基于Matlab的人脸检测实验设计
基于肤色模型与改进Adaboost算法的人脸检测