Print

发布时间: 2021-01-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.200258
2021 | Volume 26 | Number 1




    目标检测与跟踪    




  <<上一篇 




  下一篇>> 





基于眼部自商图—梯度图共生矩阵的疲劳驾驶检测
expand article info 潘剑凯, 柳政卿, 王秋成
浙江工业大学机械工程学院, 杭州 310023

摘要

目的 疲劳驾驶是引发车辆交通事故的主要原因之一,针对现有方法在驾驶员面部遮挡情况下对眼睛状态识别效果不佳的问题,提出了一种基于自商图—梯度图共生矩阵的驾驶员眼部疲劳检测方法。方法 利用以残差网络(residual network,ResNet)为前置网络的SSD(single shot multibox detector)人脸检测器来获取视频中的有效人脸区域,并通过人脸关键点检测算法分割出眼睛局部区域图像;建立驾驶员眼部的自商图与梯度图共生矩阵模型,分析共生矩阵的数字统计特征,选取效果较好的特征用以判定人眼的开闭状态;结合眼睛闭合时间百分比(percentage of eyelid closure,PERCLOS)与最长闭眼持续时间(maximum closing duration,MCD)两个疲劳指标来判别驾驶员的疲劳状态。结果 在六自由度汽车性能虚拟仿真实验平台上模拟汽车驾驶,采集并分析驾驶员面部视频,本文方法能够有效识别驾驶员面部遮挡时眼睛的开闭状态,准确率高达99.12%,面部未遮挡时的识别精度为98.73%,算法处理视频的速度约为32帧/s。对比方法1采用方向梯度直方图特征与支持向量机分类器相结合的人脸检测算法,并以眼睛纵横比判定开闭眼状态,在面部遮挡时识别较弱;以卷积神经网络(convolutional neural network,CNN)判别眼睛状态的对比方法2虽然在面部遮挡情况下的准确率高达98.02%,但眨眼检测准确率效果不佳。结论 基于自商图—梯度图共生矩阵的疲劳检测方法能够有效识别面部遮挡时眼睛的开闭情况和驾驶员的疲劳状态,具有较快的检测速度与较高的准确率。

关键词

疲劳驾驶; 人脸检测; 人脸关键点检测; 自商图; 共生矩阵; 眼睛闭合时间百分比(PERCLOS)

Fatigue driving detection based on ocular self-quotient image and gradient image co-occurrence matrix
expand article info Pan Jiankai, Liu Zhengqing, Wang Qiucheng
College of Mechanical Engineering, Zhejiang University of Technology, Hangzhou 310023, China

Abstract

Objective Driver fatigue is known to be directly related to road safety and is a leading cause of traffic fatalities and injuries of seated drivers. Previous studies used many fatigue driving detection methods to detect and analyze the fatigue status of seated drivers. These methods aim to improve detection accuracy and usually include driving behavioral features (e.g., steering wheel motion, lane keeping) and physiological features (e.g., eye and face movement, heart rate variability, electroencephalogram, electroocoulogram, electrocardiogram). Physiological features, such as eye movement, are widely used to predict driver fatigue because they are nonintrusive and independent on the driving context. However, fatigue driving detection under occluded face conditions is challenging and needs a robust algorithm of eye feature extraction. The literature showed that most eye tracking methods require high-resolution images. This condition leads to low processing speed and difficultly on real-time eye tracking. In this study, a fatigue driving detection method based on self-quotient image (SQI) and gradient image co-occurrence matrix was presented. This improved method is based on gray level and gradient co-occurrence matrix. The proposed method provides a new approach for predicting fatigue status on driver fatigue applications in a short time. Method In this study, a six-degree of freedom vibration table and driving simulator were used to model the driving context. The eye fatigued state of seated driver in real time was recorded by using an RGB camera mounted in the front of the driver. A single shot multibox detector face detection algorithm was used to extract the driver's facial region from the recorded video with ResNet10 as the front network. An ensemble of regression trees facial landmark location algorithm was used to calibrate the driver's eye area for each frame of the recorded video. A gray-level image and an SQI of each frame was combined to obtain the co-occurrence matrix of the driver's eye image. The statistic of numerical characteristics of the SQI and gradient image co-occurrence matrix of driver's eye images was analyzed. The driver's eye states were determined in accordance with the statistical features of the matrix and had a large variation. Percentage of eyelid closure(PERCLOS) over the pupil over time and maximum closing duration(MCD) were utilized to predict the state transition of seated driver from nonfatigue to fatigue. Result We compared our method with other fatigue driving detection methods based on eye aspect ratio and based on convolutional neural network (CNN) model. The quantitative evaluation metrics contained face detection accuracy, detection accuracy of open and closed states of the eye, and blink detection accuracy. The experiment results show that our model has better performance than other methods in video datasets. These datasets were captured in the driving context modeled by six-degree of freedom vibration table and driving simulator. The following cases were studied to predict the fatigue status of seated driver. One case was detected under occluded face conditions (e.g., wearing a mask and wearing glass), and the other case had no mask or glass. The accuracy of eye state analysis of method 1 is 97.68%, but the accuracy depends on the positioning accuracy of facial landmarks. However, the overall detection speed of the algorithm is slow and sensitive to whether the driver wore a mask. This condition makes the detection of the eye state module invalid. Classifying the driver eye state with the CNN takes a long time, and the eye state accuracy of method 2 is more than 96%. However, the success rate of blink detection is approximately zero for hard video samples. As a comparison, the proposed algorithm has better performance in face detection, eye opening and closing, and blink accuracies. The accuracy of opening and closing the eyes reaches 98.73% for a video sample of drivers' face under occlusion, such as wearing a mask. The recognition precision is 99.52% for a video sample of drivers without mask or glass, and the video sample processing frame rate is up to 32 frame/s. Conclusion In this study, we proposed a fatigue driving detection method based on SQI and gradient image co-occurrence matrix. The experiment results demonstrate that our method has better performance than other several fatigue driving detection methods and can detect effectively the driver's eyes state when they open and close in real time. The proposed method has high accuracy and processing speed.

Key words

fatigue driving; face detection; facial landmarks detection; self-quotient image (SQI); co-occurrence matrix; percentage of eyelid closure (PERCLOS)

0 引言

疲劳驾驶一直是交通肇事的主要原因之一,据相关调查数据统计,疲劳驾驶导致的交通事故在我国每年重特大交通事故中所占比例高达40%(牛清宁等,2015)。如何快速有效地检测驾驶员是否疲劳驾驶,从而预防并减少相关交通事故的发生,逐渐成为国内外研究的热门话题。常用的疲劳驾驶检测技术有:基于驾驶员生理信号特征的检测(董占勋等,2010);基于驾驶员驾驶行为与车辆行驶状态的检测(张希波等,2010)和基于面部生理行为特征的检测。而基于面部生理行为特征的检测,具有抗侵入性、实时性等特点,是目前最具实用性与发展潜力的技术方法。

宋凯等人(2013)对预处理后的人脸图像进行Gabor变换,利用灰度积分投影的峰平比判定人眼的开闭状态,虽然改善了睫毛对眼睛状态分析的干扰,但算法仍有较大的计算量,导致难以满足实时检测的需求。Song等人(2014)提出了利用眼睛局部区域图像的主方向梯度多尺度直方图判定人眼疲劳状态。旷文腾等人(2016)基于YCbCr颜色空间,建立人眼图像的高斯眼白模型,并根据眼白面积分析驾驶员眼睛的开闭状态,但该指标易受图像中人脸尺寸的影响且运行较慢。Soukupova和Cech(2016)根据眼睛区域的特征点,提出了眼睛纵横比(eye aspect ratio, EAR)的概念,并使用支持向量机(support vector machine,SVM)实现对眼睛疲劳状态的分类,EAR判定眼睛开闭状态的准确度取决于人脸关键点定位的精度。戴诗琪和曾智勇(2018)通过卷积神经网络(convolutional neural network, CNN)搭建识别眼睛疲劳状态的分类模型,并结合嘴部的疲劳特征识别驾驶员的疲劳状态,但眼睛状态识别速度较慢。潘志庚等人(2019)对预处理过的眼睛图像,采用灰度阈值分割、最小二乘法等图像处理手段获得眼睛矩形区域的长宽比、轮廓拟合椭圆的面积以及瞳孔黑色素的比例,再利用模糊综合评价方法分析这些指标的权重,综合判定眼睛的开闭状态,虽然算法的精度较高,但也使得眼睛状态分析模块耗时加长。

上述方法中所使用的人脸检测器,一类是结合图像特征算子与机器学习算法训练得到的;另一类是基于人脸的纹理与肤色特征得到的。在面部遮挡的情况下,两者对人脸的检测效果均表现不佳,从而影响后续的眼睛状态分析。此外,大部分方法中的眼睛状态分析模块具有较大的计算量,导致驾驶员疲劳检测算法的实时性欠佳。针对上述问题,本文提出一种方法:在使用ResNet10 SSD(single shot multibox detector)人脸检测器的基础上,将定位分割得到的眼睛图像调整为分辨率大小一致的图像,并以灰度—梯度共生矩阵模型为原型,建立驾驶员眼睛区域的自商图与梯度图共生矩阵模型并分析其数字统计特征,选取效果较好的数字统计特征作为驾驶员眼睛开闭状态的指标。该算法在驾驶员面部遮挡的情况下,对眼睛状态识别的精度及运行速度均有良好的表现。

1 方法

图 1为本文算法的流程设计,该算法基于视觉获取驾驶员眼部的疲劳特征,共有3个模块,分别是:

图 1 算法流程图设计
Fig. 1 The flowchart of algorithm

1) 检测模块。定位视频中人脸的位置并分割出眼睛局部区域图像;

2) 识别模块。建立驾驶员眼睛的自商图与梯度图共生矩阵模型并判定人眼的开闭状态;

3) 决策模块。利用眼睛闭合时间百分比(percentage of eyelid closure, PERCLOS)与最长闭眼持续时间(maximum closing duration,MCD)两个眼睛疲劳指标对驾驶员的疲劳状态做出判别。

1.1 人脸检测与人眼定位

1.1.1 基于ResNet10 SSD的人脸检测

人脸检测算法一般分为非深度学习算法与深度学习算法,前者最著名的是Viola和Jones(2001)提出的基于Haar-like特征和AdaBoost分类器构建的人脸检测器。但是,在突发公共卫生事件的情况下,如传染病流行时,驾驶员可能需要配戴口罩出行,深度学习的人脸检测器在面部遮挡时对人脸的检测表现优异,相较于非深度学习人脸检测器,具有检测精度高、误检率与漏检率低的优点。

SSD算法(Liu等,2016)是一种深度学习领域的目标检测算法。即使在图像分辨率比较低的情况下,也能保证检测结果具有足够高的精度,同时通过均匀地在图像不同位置进行密集抽样,并在不同尺度的特征图上采用卷积核进行预测,最后利用卷积神经网络提取特征后直接进行分类与回归,使得该算法具有优异的检测速度。He等人(2016)提出了残差神经网络(residual network, ResNet),通过在传统CNN中加入残差深度学习的方法,解决了因神经网络模型层数加深而导致的梯度弥散以及模型在训练集上准确率下降的问题,残差块(residual block)结构如图 2(a)所示。本文使用结合ResNet与SSD算法构建的人脸检测器,神经网络模型输入图像的尺寸大小为300×300像素,residual block的数量为4,面部遮挡时的检测结果如图 2(b)所示。

图 2 基于ResNet10 SSD的人脸检测
Fig. 2 Face detection based on ResNet10 SSD ((a) residual block; (b) face detection)

1.1.2 人眼定位

驾驶员在疲劳状态时,会出现明显的上眼皮下沉、闭眼缓慢等现象,因此在检测过程中更需要实时跟踪眼睛的状态信息。在确定图像中人脸的位置后,可以根据“三庭五眼”,大致分割出眼睛区域。再者,一些基于深度学习的人脸检测算法如多任务级联神经网络(multi-task convolutional neural network, MTCNN)算法(Zhang等,2016),除了标注出人脸框的位置,同时还标注了5个关键点的位置,根据两个眼睛中心点的位置也能划分出眼睛的位置区域。但在实际行车过程中,驾驶员的头部姿态可能会出现实时变化,如靠近或者远离摄像头,使得以上依照人为经验分割出人眼区域的方法,会造成不同程度的误差以及后期图像处理工作上的困难。为了提高对驾驶员眼睛疲劳区域的定位精度,本文使用Kazemi和Sullivan(2014)提出的人脸关键点定位算法。该算法基于梯度提升(gradient boosting)的方法,利用损失函数的负梯度近似拟合残差来学习回归树集合(ensemble of regression trees,ERT),从而标定出图像中驾驶员面部的68个关键点,如图 3(a)。考虑到视频中定位人脸关键点存在抖动现象以及闭眼时双眼区域的关键点可能会有较为明显的定位误差,为了提高截取眼睛区域的完整性,分别计算左右眼6个关键点坐标的中心点C,在此基础上横向延伸0.8W的距离,纵向延伸0.4W的距离,截取眼睛局部区域图像,并将眼睛图像的大小调整至特定尺寸,如图 3(b)所示,其中W是指眼睛区域6个关键点外接矩形的长。图 3(c)为眼睛在完全睁开或闭合状态下截取的眼部图像。

图 3 驾驶员的眼睛区域的定位
Fig. 3 Driver's eyes location((a)facial landmarks location; (b)sketch map of region cropped; (c) cropped images in open eye and closed eye conditions)

1.2 眼睛开闭状态的识别

驾驶员开闭眼状态下眼部区域图像的纹理分布差异较为明显,如图 4所示。图 4(a)是驾驶员开闭眼的灰度图像;图 4(b)是眼睛区域的自商图(Wang等,2004),它是一种凸显图像中高频分量的运算,对光照变化具有一定的鲁棒性;图 4(c)是自商图经Scharr算子卷积后的梯度图像,暗部是梯度平滑的区域,亮部是梯度变化较大的区域。本文在灰度梯度共生矩阵(洪继光,1984)的基础上,利用自商图与梯度图构建眼睛图像的共生矩阵模型,计算分析15个常用的数字统计特征,并以睁眼、闭眼状态下差异明显的特征作为判别眼睛开闭状态的指标。

图 4 不同表现形式的眼睛图像
Fig. 4 Eye images of different manifestations ((a) gray image; (b) self-quotient image; (c) gradient image)

1.2.1 自商图与梯度图共生矩阵模型

首先,将定位分割得到的眼睛图像转化为灰度图,其次在眼睛灰度图的基础上获得自商图,并与梯度图构建共生矩阵$\mathit{\boldsymbol{H}}(x, y)$,其定义为归一化后的自商图像$\mathit{\boldsymbol{Q}}(i, {\rm{ }}j)$的元素数值$x$与梯度图像$\mathit{\boldsymbol{G}}(i, {\rm{ }}j)$中梯度值$y$的像素数目。采用Scharr算子计算驾驶员眼睛区域自商图像的梯度图,建立眼睛区域自商图与梯度图共生矩阵的过程为:

输入:驾驶员眼睛局部区域RGB图像$\mathit{\boldsymbol{A}}$与共生矩阵的维度${N_g}$,其中${N_g} \in {{\bf{N}}^*}$

1) 将图像$\mathit{\boldsymbol{A}}$灰度化,计算自商图像

$ \mathit{\boldsymbol{Q}}(i, j) = \frac{\mathit{\boldsymbol{I}}}{{\mathit{\boldsymbol{\hat I}}}} = \frac{\mathit{\boldsymbol{I}}}{{\mathit{\boldsymbol{F}} * \mathit{\boldsymbol{I}}}} $ (1)

式中,$\mathit{\boldsymbol{I}}$为眼睛局部区域灰度图,${\mathit{\boldsymbol{\hat I}}}$为模糊版本的灰度图,$\mathit{\boldsymbol{F}}$为平滑滤波器,*为卷积操作。本文使用双边滤波器对灰度图像进行卷积操作得到${\mathit{\boldsymbol{\hat I}}}$

2) 利用式(2)归一化自商图$\mathit{\boldsymbol{Q}}(i, {\rm{ }}j)$,归一化后的自商图$\mathit{\boldsymbol{Q}}(i, j) \in \left[ {1, {N_g}} \right]$

$ \mathit{\boldsymbol{Q}}(i, j) = int \left({{N_g} \times \frac{{\mathit{\boldsymbol{Q}}(i, j) - {Q_{\min }}}}{{\left({{Q_{\max }} - {Q_{\min }}} \right) + 1}}} \right) + 1 $ (2)

式中,$int $表示向下取整运算, ${{Q_{\max }}, {Q_{\min }}}$分别是自商图中最大与最小的数值。

3) 采用3×3的Scharr算子与未归一化的自商图像做卷积计算,并将得到的梯度图$\mathit{\boldsymbol{G}}(i, {\rm{ }}j)$归一化

$ {{\mathit{\boldsymbol{G}}_x} = \left[ {\begin{array}{*{20}{c}} { - 3}&0&{ + 3}\\ { - 10}&0&{ + 10}\\ { - 3}&0&{ + 3} \end{array}} \right] * \mathit{\boldsymbol{Q}}(i, j)} $ (3)

$ {{\mathit{\boldsymbol{G}}_y} = \left[ {\begin{array}{*{20}{c}} { - 3}&{ - 10}&{ - 3}\\ 0&0&0\\ { + 3}&{ + 10}&{ + 3} \end{array}} \right] * \mathit{\boldsymbol{Q}}(i, j)} $ (4)

$ {\mathit{\boldsymbol{G}}(i, j) = \sqrt {\mathit{\boldsymbol{G}}_x^2 + \mathit{\boldsymbol{G}}_y^2} } $ (5)

式中,${{\mathit{\boldsymbol{G}}_x}}$${{\mathit{\boldsymbol{G}}_y}}$分别是自商图像经横向及纵向边缘检测的梯度图像。

利用式(6)归一化梯度图像$\mathit{\boldsymbol{G}}(i, {\rm{ }}j)$,归一化后的梯度图$\mathit{\boldsymbol{G}}(i, {\rm{ }}j) \in \left[ {1, {N_g}} \right]$

$ \mathit{\boldsymbol{G}}(i, j) = int \left({{N_g} \times \frac{{\mathit{\boldsymbol{G}}(i, j) - {G_{\min }}}}{{\left({{G_{\max }} - {G_{\min }}} \right) + 1}}} \right) + 1 $ (6)

式中, ${{G_{\max }}, {G_{\min }}}$分别是梯度图中最大与最小的数值。

4) 统计归一化后的自商图像与梯度图像中$\mathit{\boldsymbol{Q}}(i, {\rm{ }}j)= x$, $\mathit{\boldsymbol{G}}(i, {\rm{ }}j)= y$像素点的数目,生成自商图与梯度图的共生矩阵$\mathit{\boldsymbol{H}}(x, {\rm{ }}y)$并做归一化处理得到概率矩阵$\mathit{\boldsymbol{\hat H}}(x, y)$, 矩阵内所有元素相加的和为1, 即

$ \mathit{\boldsymbol{\hat H}}(x, y) = \frac{{\mathit{\boldsymbol{H}}(x, y)}}{{{h_I} \times {w_I}}} $ (7)

式中,${{h_I}}$, ${{w_I}}$分别是灰度图$\mathit{\boldsymbol{I}}$垂直与水平方向的像素点数量。

共生矩阵采集自商图与梯度图信息的计算原理如图 5所示,左上角为自商图与梯度图的共生矩阵的原点,自上而下对应归一化后的自商图中元素的数值;梯度值从左往右依次增大,对应梯度图中归一化后的数值,这里${N_g}$取8。共生矩阵$\mathit{\boldsymbol{H}}(x, {\rm{ }}y)$中非零元素的数值总和与灰度图像$\mathit{\boldsymbol{I}}$中的像素个数一致。

图 5 自商图与梯度图的共生矩阵信息采集
Fig. 5 Data collection of self-quotient image and gradient image co-occurrence matrix

驾驶人眼睛区域自商图与梯度图的共生矩阵$\mathit{\boldsymbol{H}}(x, {\rm{ }}y)$,如图 6所示。闭眼图像的共生矩阵沿$X$轴(自上而下)两端集中分布,即靠近$Y$轴(梯度轴)分布或远离$Y$轴分布,但睁眼图像的共生矩阵在$X$轴中间数值分布的密集程度明显高于闭眼图像。

图 6 不同眼睛状态下的共生矩阵
Fig. 6 Co-occurrence matrix in open and closed eye conditions ((a) closed eye conditions; (b) open eye conditions)

1.2.2 眼睛状态的判别

对眼睛局部区域图像的共生矩阵进行归一化处理。接着,将灰度—梯度共生矩阵常用的15个数字统计特征应用到归一化的共生矩阵中。使用室内模拟驾驶拍摄的短视频测试这些特征在判定开闭眼状态时的表现,并探究自商图使用不同平滑滤波器对眼睛状态划分的影响。在自商图使用高斯滤波器或双边滤波器的条件下,共生矩阵效果较好的数字特征有:自商图像素值分布的不均匀性、自商图的熵与混合熵。图 7中,相较于高斯滤波,双边滤波处理的效果更好,数字特征在眼睛完全睁开与完全闭合之间有明显的界限,且在处于睁眼或闭眼的状态时能够保持较小范围的波动,其原因在于双边滤波器起到模糊图像作用的同时还保留了边缘的清晰锐利。使用双边滤波器的共生矩阵,自商图元素分布的不均性、自商图的熵与混合熵划分驾驶员开闭眼状态的阈值分别设为0.39、1.18与2.95。

图 7 共生矩阵的数字统计特征
Fig. 7 Statistical features of the symbiosis matrix ((a) distribution inhomogeneity of self-quotient image pixel value; (b) entropy of the quotient image; (c) entropy of mixing)

共生矩阵数字统计特征:自商图像素值分布的不均匀性T1、混合熵T2以及自商图的熵T3的定义分别为式(8)—(10)。此外,数字统计特征如能量(二阶矩)T4、自商图像素的均值T5等也能作为衡量驾驶员眼睛开闭状态的指标,考虑到稳定性以及对不同视频样本的适应能力不及上述特征,本文不做深入探讨。

$ {{T_1} = \frac{{\sum\limits_{x = 1}^{{N_k}} {\sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} } (x, y){y^2}}}{{\sum\limits_{x = 1}^{{N_g}} {\sum\limits_{y = 1}^{{N_s}} {\mathit{\boldsymbol{\hat H}}} } (x, y)}}} $ (8)

$ {{T_2} = - \sum\limits_{x = 1}^{{N_g}} {\sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} } (x, y)\log \mathit{\boldsymbol{\hat H}}(x, y)} $ (9)

$ {{T_3} = - \sum\limits_{x = 1}^{{N_g}} {\sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} } (x, y)\log \sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} (x, y)} $ (10)

$ {{T_4} = \sum\limits_{x = 1}^{{N_g}} {\sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} } (x, y)} $ (11)

$ {{T_5} = \frac{{\sum\limits_{x = 1}^{{N_g}} {{{\left[ {\sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} (x, y)} \right]}^2}} }}{{\sum\limits_{x = 1}^{{N_g}} {\sum\limits_{y = 1}^{{N_g}} {\mathit{\boldsymbol{\hat H}}} } (x, y)}}} $ (12)

1.3 疲劳状态识别

基于自商图与梯度图共生矩阵模型的眼睛状态检测算法能够有效识别视频每一帧图像中眼睛的开闭状态,为后续驾驶员疲劳状态的判别奠定了基础。汪磊和孙瑞山(2012)研究表明:驾驶员的PERCLOS值在清醒状态下小于0.1,轻度疲劳状态下为0.1~0.3,中度疲劳状态下为0.3~0.5,严重疲劳状态下大于0.5。本文利用PERCLOS(Dinges和Grace,1998)与MCD两个疲劳指标来判别驾驶员的疲劳状态,定义如表 1所示,单位时间域一般取30 s。依据PERCLOS与MCD的值对驾驶员的疲劳状态进行分类。其中,PERCLOS选用的标准是P80,即驾驶员眼睛上眼睑盖住瞳孔80%的面积就认为是闭眼状态。PERCLOS计算为

表 1 眼部疲劳特征定义
Table 1 Definition of eye fatigue characteristics

下载CSV
疲劳特征 定义
眼睛闭合时间百分比(PERCLOS) 单位时间域内,
眼睛闭合时间的百分比
最长闭眼持续时间(MCD) 单位时间域内,
最长一次闭眼持续时间

$ f = \frac{{F{N_{{\rm{P8}}0}}}}{{{T_t} \times {f_{{\rm{SE}}}}}} \times 100\% $ (13)

式中,${F{N_{{\rm{P8}}0}}}$为单位时间域内满足P80标准的帧数,${{T_t}}$为单位时间域,${{f_{{\rm{SE}}}}}$为算法处理视频的帧率。

2 实验设置

视频采集:研究通过在六自由度汽车性能虚拟仿真实验平台上模拟驾驶,将实验路谱数据导入仿真平台来模拟实际道路情况,并通过摄像头采集实验视频,摄像头型号为罗技C270,采集帧率为30帧/s,视频分辨率为1 280×720像素。视频共两组,如图 8所示,一组为驾驶员面部无遮挡模拟驾驶;另一组为驾驶员面部遮挡(戴口罩)模拟驾驶。算法处理:Win10环境下采用Python语言编写,编译器为Visual Studio Code。计算机的硬件性能:CPU为Intel Core i5-8500,GPU为NVIDA GTX 1060。

图 8 基于六自由度振动平台的模拟驾驶
Fig. 8 Driving simulator with a six-degree of freedom vibration table ((a) in normal condition; (b) driving with a mask condition)

实验所有环节测试的短视频均从六自由度汽车性能虚拟仿真实验平台模拟汽车驾驶情景采集的视频中剪辑得到。

3 结果分析

3.1 人脸检测分析

用于算法性能分析的驾驶员模拟驾驶测试视频共12个,包含10个短视频样本与两个时长较长的视频样本。其中,面部未遮挡与遮挡(戴口罩)情况下的短视频样本各5个,分别标记为视频A与B,每个视频样本的时长均为30 s,视频帧数均为900帧;而较长视频样本的帧数为5 000帧,标记为AL与BL,如表 2所示。本文对比了几种典型的人脸检测算法,均由OpenCV与Dlib库提供的模型文件实现。由于这些人脸检测器在处理驾驶员正脸未遮挡的测试视频时,准确率相差不大,因此仅列出了不同算法在遮挡情况下人脸检测的结果。该部分采用5个面部遮挡的短视频样本进行测试,在测试算法性能的过程中,记录每帧图像检测人脸所需的时间及各样本人脸检测准确帧数的情况,如表 3所示。由表 3可知,ResNet10 SSD算法在驾驶员面部遮挡的情况下对人脸检测的效果较好,样本平均准确率高达98%,且视频帧平均处理速度最快。人脸检测效果的好坏将直接影响疲劳检测算法后续模块的识别,因此使用ResNet10 SSD人脸检测器能为面部遮挡情况下的眼部疲劳分析提供充分的条件。

表 2 视频测试样本的分类表
Table 2 Classification of the video samples

下载CSV
样本类别 标记类别 视频编号 视频时长/s 视频帧数
未遮挡 A A1, A2, A3, A4, A5 30 900
AL AL1 166.33 5 000
遮挡
(戴口罩)
B B1, B2, B3, B4, B5 30 900
BL BL1 166.33 5 000

表 3 面部遮挡情况下不同算法的人脸检测效果对比
Table 3 Comparison of different algorithms on the effect of face detection for face occlusion condition

下载CSV
人脸检测算法 视频帧数 样本平均正确帧数 样本平均准确率/% 帧平均检测速度/ms
Haar Adaboost 900 436.4 48.49 67.71
ResNet10 SSD 900 882.0 98.00 19.20
LBP Adaboost 900 125.6 13.96 38.65
HOG SVM 900 202.8 22.53 97.59
注:加粗字体表示最优结果。

3.2 共生矩阵模型参数分析

自商图与梯度图共生矩阵的两个输入参数分别是眼睛图像尺寸的大小与共生矩阵的维度${N_g}$。由于截取的眼睛图像的长宽比为2 :1,将眼睛图像尺寸参数用垂直方向的像素个数来表征。开闭眼准确率与共生矩阵维度和眼睛图像垂直方向的像素个数之间的关系如图 9所示。开闭眼最佳划分阈值是指算法检测出驾驶员眨眼次数与实际眨眼次数一致的情况下划分的特征数值(自商图的熵)。开闭眼最佳划分阈值随共生矩阵维度的增加而增大,随图像尺寸的增大而减小。共生矩阵维度或图像尺寸的增大,都会导致眼睛状态分析消耗的时间增加。由图 9可知,共生矩阵维度的理论最佳取值为8,图像尺寸理论最佳取值为40×20像素。

图 9 共生矩阵参数
Fig. 9 Parameter of co-occurrence matrix

3.3 人眼状态分析

考虑到判定眼睛开闭的指标在驾驶员睁眼或闭眼时的波动平稳性,最终确定共生矩阵维度${N_g}$为8,输入的驾驶员眼睛图像尺寸为50×25像素。该部分的测试视频样本选用两段时长较长的视频AL1与BL1,并罗列了3个效果较好的数字统计特征(自商图的熵、混合熵与自商图像素值分布的不均性)在模拟驾驶中的实际表现,其结果如表 4所示。由表 4可知,3个特征表现良好,无论驾驶员是否面部遮挡,眼睛状态分析的准确率均达到了98%以上。表 4中,将连续闭眼3帧以上记为一次眨眼动作,共生矩阵眼睛状态识别模型各个数字统计特征检测结果大致相同,眨眼次数的漏检是由ResNet10 SSD人脸检测算法漏检与眼睛状态识别模型对半睁半闭且眼球区域模糊的眼睛图像预测失败引起的。

表 4 共生矩阵眼睛状态识别模型在面部未遮挡与遮挡情况下的检测结果
Table 4 Results of the co-occurrence matrix eye state recognition model in the case of face recognition with occlusion and no occlusion

下载CSV
特征 视频编号 开闭眼准确率/% 实际眨眼次数 检测眨眼次数
自商图的熵 AL1 99.53 19 18
BL1 98.73 34 31
混合熵 AL1 99.63 19 18
BL1 98.38 34 28
自商图像素值分布的不均性 AL1 99.57 19 18
BL1 98.75 34 28
注:开闭眼准确率是指人眼状态分析正确的帧数量与人脸检测正确的帧数量之比。

3.4 算法性能测试

检测速度与准确率是衡量疲劳驾驶检测算法优异与否的重要指标,也是投入实际应用的关键。

选用10组短视频测试数据对算法的性能进行测试,表 5列出了算法主要模块的运行速度与处理测试视频样本的运行时间。由表 5可知,人脸检测、人眼定位及眼睛状态分析模块在不同场景下的运行速度基本一致,其中最耗时的是人脸检测模块,每帧耗时约为19 ms,而算法处理整段视频的运行时间约为27 s,满足疲劳检测算法实时检测的需求。

表 5 基于共生矩阵的眼部疲劳检测算法主要模块耗时分析
Table 5 Time-consuming analysis of main modules of eye fatigue detection algorithm based on co-occurrence matrix

下载CSV
视频类别 视频编号 人脸检测
/(ms/帧)
人眼定位
/(ms/帧)
眼睛状态分析
/(ms/帧)
视频处理
耗时/s
未遮挡 A1 19.05 2.20 5.29 27.35
A2 19.17 2.20 5.28 27.50
A3 19.07 2.20 5.25 26.75
A4 19.07 2.20 5.29 27.09
A5 19.10 2.20 5.29 27.41
遮挡
(戴口罩)
B1 19.25 2.20 5.30 27.57
B2 19.15 2.20 5.30 27.14
B3 19.14 2.21 5.30 27.50
B4 19.13 2.20 5.28 27.32
B5 19.13 2.21 5.32 27.27

本文复现了几种驾驶员疲劳检测算法,选取AL1,BL1两段视频进行测试,其结果如表 6所示。表 6中,检测速度是指算法处理完视频所需的时间与视频帧数之比,人的眨眼时间通常在0.2~0.4 s之间,快速眨眼的时长还会更短,而视频的帧率为30帧/s,因此将连续闭眼3帧以上记为一次眨眼动作。所有的疲劳检测算法,是在检测到人脸的基础上,采用Dlib库开源的ERT(ensemble of regression trees)人脸关键点算法对眼睛局部区域进行定位。其中方法1使用的人脸检测器是HOG-SVM算法,采用眼睛纵横比(EAR)判定驾驶员眼睛的开闭状态;方法2与本文算法采用相同的人脸检测器ResNet10 SSD,区别在于前者使用tensorflow深度学习框架训练CNN模型并对眼睛状态进行分类,输入神经网络的眼睛图像的大小为28×28像素;而后者利用共生矩阵的数字统计特征——自商图的熵判定眼睛的开闭状态。方法1开闭眼检测的准确率取决于人脸关键点定位的精度,并且对驾驶员是否佩戴口罩敏感,易使算法后续人眼状态模块检测失效。此外,HOG-SVM算法耗费的时间较长,使得算法整体运行的速度较慢。方法2因采用卷积神经网络对人眼状态进行分类,需要消耗较长的时间,CNN眼睛状态识别模型对视频样本眨眼检测的准确率较差,易将闭眼状态预测为睁眼状态,导致检测到的连续闭眼帧数不足。对比证明,本文算法在人脸检测准确率、开闭眼准确率、眨眼次数准确率以及检测速度方面均有较好的表现。

表 6 不同疲劳检测算法在面部未遮挡与遮挡情况下检测结果的对比
Table 6 Comparison results of different fatigue detection algorithms in the case of face recognition with occlusion and no occlusion

下载CSV
方法 视频编号 人脸检测准确率/% 开闭眼准确率/% 眨眼准确率/% 检测速度/(ms/帧)
方法1 AL1 99.82 97.68 52.63 104.05
BL1 21.70 - - 103.20
方法2 AL1 97.52 96.70 0 171.40
BL1 97.80 98.02 20.60 172.40
本文 AL1 97.52 99.53 94.74 31.18
BL1 97.80 98.73 88.60 31.55
注:加粗字体表示最优结果, “-”表示睁闭眼状态识别失效。

测试选取短视频样本集合中的一个样本,利用共生矩阵数字特征——自商图的熵作为判定驾驶员眼睛开闭状态的指标并绘制了眼睛状态特征曲线,如图 10所示。该段时间内驾驶员频繁地眨眼,出现了短时间闭眼、较长时间的闭眼以及连续眨眼等眼部状态特征。经计算,驾驶员疲劳指标PERCLOS值为0.18,MCD值为1.1 s,可以判定为驾驶员正处于轻度疲劳状态。因此,基于共生矩阵的疲劳检测方法能对驾驶员的疲劳状态做出判断。

图 10 驾驶员眼睛状态特征曲线图
Fig. 10 Diagram of the driver's eye state characteristics

4 结论

针对面部遮挡的情况下对驾驶员眼睛疲劳状态检测效果不佳的问题,本文提出的疲劳检测方法具有较好的检测速度与准确率,可以实时准确地检测驾驶员眼睛的开闭状态。该方法使用的ResNet10 SSD人脸检测器,具有较高的人脸检测准确率,能检测到驾驶员在戴口罩状况下的人脸。通过ERT算法分割得到的人眼图像并调整到相同的分辨率,可以有效防止驾驶员与摄像头的距离对人眼状态判别结果造成的影响。同时,本文提出用于眼睛状态分析的共生矩阵模型,它结合了驾驶员眼睛自商图与梯度图的信息。实验证明该模型能够有效分析驾驶员眼睛的开闭状态,具有较好的识别率与检测速度。但是,当视频中人脸的眼睛区域出现过曝的情况时,也有可能导致眼睛状态分析的准确率降低。因此,提高驾驶疲劳检测算法的鲁棒性以及进一步探究在驾驶员眼睛有遮挡(例如戴眼镜,戴墨镜)的情况下如何检测,是将来需要深入研究的工作。

致谢 澳大利亚皇家墨尔本理工大学工程学院(School of Engineering, RMIT University),Prof. Mohammad Fard科研团队在本研究课题的实验部分提供了重要指导意见,浙江工业大学机械工程学院19级研究生周飞扬提供了实验测试数据,在此表示衷心的感谢!

参考文献

  • Dai S Q, Zeng Z Y. 2018. Fatigue driving detection algorithm based on deep learning. Computer Systems and Applications, 27(7): 113-120 (戴诗琪, 曾智勇. 2018. 基于深度学习的疲劳驾驶检测算法. 计算机系统应用, 27(7): 113-120) [DOI:10.15888/j.cnki.csa.006415]
  • Dinges D F, Grace R. 1998. PERCLOS:A Valid Psychophysiological Measure of Alertness As Assessed by Psychomotor Vigilance. FHWA-MCRT-98-006. Federal Highway Administration
  • Dong Z X, Sun S Q, Wu Q, Xu J F. 2010. Study of correlation between heart rate variability and driving fatigue. Journal of Zhejiang University (Engineering Science), 44(1): 46-50 (董占勋, 孙守迁, 吴群, 徐娟芳. 2010. 心率变异性与驾驶疲劳相关性研究. 浙江大学学报(工学版), 44(1): 46-50) [DOI:10.3785/j.issn.1008-973X.2010.01.009]
  • He K M, Zhang X Y, Ren S Q and Sun J. 2016. Deep residual learning for image recognition//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas, USA: IEEE: 770-778[DOI:10.1109/CVPR.2016.90]
  • Hong J G. 1984. Gray level-gradient co-occurrence matrix texture analysis method. Acta Automatica Sinica, 10(1): 22-25 (洪继光. 1984. 灰度-梯度共生矩阵纹理分析方法. 自动化学报, 10(1): 22-25) [DOI:10.16383/j.aas.1984.01.005]
  • Kazemi V and Sullivan J. 2014. One millisecond face alignment with an ensemble of regression trees//Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus, USA: IEEE: 1867-1874[DOI:10.1109/CVPR.2014.241]
  • Kuang W T, Mao K C, Huang J C, Li H B. 2016. Fatigue driving detection based on sclera Gaussian model. Journal of Image and Graphics, 21(11): 1515-1522 (旷文腾, 毛宽诚, 黄家才, 李海彬. 2016. 基于高斯眼白模型的疲劳驾驶检测. 中国图象图形学报, 21(11): 1515-1522) [DOI:10.11834/jig.20161111]
  • Liu W, Anguelov D, Erhan D, Szegedy C, Reed S, Fu C Y and Berg A C. 2016. SSD: single shot MultiBox detector//Proceedings of the 14th European Conference on Computer Vision. Amsterdam, the Netherlands: Springer: 21-37[DOI:10.1007/978-3-319-46448-0_2]
  • Niu Q N, Zhou Z Q, Jin L S, Liu W C, Yu P C. 2015. Detection of driver fatigue based on eye movements. Journal of Harbin Engineering University, 36(3): 394-398 (牛清宁, 周志强, 金立生, 刘文超, 于鹏程. 2015. 基于眼动特征的疲劳驾驶检测方法. 哈尔滨工程大学学报, 36(3): 394-398) [DOI:10.3969/j.issn.1006-7043.201311044]
  • Pan Z G, Liu R F, Zhang M M. 2019. Fatigue driving detection algorithm based on fuzzy comprehensive evaluation. Journal of Software, 30(10): 2954-2963 (潘志庚, 刘荣飞, 张明敏. 2019. 基于模糊综合评价的疲劳驾驶检测算法研究. 软件学报, 30(10): 2954-2963) [DOI:10.13328/j.cnki.jos.005779]
  • Song F Y, Tan X Y, Liu X, Chen S C. 2014. Eyes closeness detection from still images with multi-scale histograms of principal oriented gradients. Pattern Recognition, 47(9): 2825-2838 [DOI:10.1016/j.patcog.2014.03.024]
  • Song K, Liu N, Nie X, Yang D. 2013. Recognition of eye opening and closing state based on Gabor transform. Journal of Jilin University (Information Science Edition), 31(6): 555-561 (宋凯, 刘娜, 聂鑫, 杨东. 2013. 基于Gabor变换的人眼开闭状态识别技术研究. 吉林大学学报(信息科学版), 31(6): 555-561) [DOI:10.3969/j.issn.1671-5896.2013.06.001]
  • Soukupova T and Cech J. 2016. Real-time eye blink detection using facial landmarks//Proceedings of the 21st computer vision winter workshop[EB/OL].[2020-05-13]. http://cmp.felk.cvut.cz/ftp/articles/cech/Soukupova-CVWW-2016.pdf
  • Viola P and Jones M. 2001. Rapid object detection using a boosted cascade of simple features//Proceedings of 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Kauai, HI, USA: IEEE: 511-518[DOI:10.1109/CVPR.2001.990517]
  • Wang H T, Li S Z, Wang Y S and Zhang J J. 2004. Self quotient image for face recognition//Proceedings of 2004 International Conference on Image Processing. Singapore, Singapore: IEEE: 1397-1400[DOI:10.1109/ICIP.2004.1419763]
  • Wang L, Sun R S. 2012. Study on face feature recognition-based fatigue monitoring method for air traffic controller. China Safety Science Journal, 22(7): 66-71 (汪磊, 孙瑞山. 2012. 基于面部特征识别的管制员疲劳监测方法研究. 中国安全科学学报, 22(7): 66-71) [DOI:10.3969/j.issn.1003-3033.2012.07.011]
  • Zhang K P, Zhang Z P, Li Z F, Qiao Y. 2016. Joint face detection and alignment using multitask cascaded convolutional networks. IEEE Signal Processing Letters, 23(10): 1499-1503 [DOI:10.1109/LSP.2016.2603342]
  • Zhang X B, Cheng B, Feng R J. 2010. Real-time detection of driver drowsiness based on steering performance. Journal of Tsinghua University (Science and Technology), 50(7): 1072-1076, 1081 (张希波, 成波, 冯睿嘉. 2010. 基于方向盘操作的驾驶人疲劳状态实时检测方法. 清华大学学报(自然科学版), 50(7): 1072-1076, 1081) [DOI:10.16511/j.cnki.qhdxxb.2010.07.025]