李 蓉, 殷晨波, 马 伟, 冯 浩
(南京工业大学 机械与动力工程学院,江苏 南京 211800)
目前,在工程建设领域,挖掘机的需求量越来越大,提高挖掘机驾驶员操作效率的同时保证其人身安全成为亟待解决的问题[1]。然而挖掘机的工作环境通常较为恶劣,需要驾驶员时刻集中注意力,当驾驶员出现疲劳驾驶情况,很容易导致倾翻、误撞装运车或施工人员等重大事故。据统计,因为疲劳驾驶而引发挖掘机事故的比例已经达到 5%~10%,所以对挖掘机驾驶员疲劳驾驶的研究具有重要意义。
目前,国内外专家学者对疲劳驾驶进行了大量的研究。文献[2]通过检测驾驶员脑电信号分析脑部的活动状态,判断是否疲劳。但是该方法会在检测过程中对驾驶员造成干扰,不适合用于实时条件下进行疲劳检测。文献[3]建立以驾驶员操作方向盘转角及车辆横向移动距离作为疲劳驾驶的评价方法。该方法易受驾驶者操作意图影响,判别精度相对较低。文献[4]综合眼睛持续闭合时间、嘴巴持续张开时间、头部持续偏移时间3个疲劳指标获得疲劳程度。这种方法通过图像传感器采集人脸图像,利用图像识别与处理技术分析面部表情。此方法操作简单,设备造价低且是一种非接触式系统,已成为研究热点。
目前,疲劳驾驶的研究对象主要是汽车驾驶员,但挖掘机工作环境与汽车驾驶环境不同, 挖掘机的工作大多在凹凸不平的矿石泥土上进行,路面颠簸导致图片人像抖动,而且容易遇到粉尘和光线不足等情况。因此现有的汽车驾驶员检测方法无法直接用于挖掘机驾驶员。借鉴汽车驾驶员疲劳研究的相关研究思路,基于机器视觉的疲劳检测方法,本文提出一种眼部和嘴部信息的疲劳特征提取的方法,并设置阈值,将检测到的特征数据与阈值比较,判断是否睁眼或打哈欠。
图像采集实验在三一SY235C-8S型挖掘机上进行,通过摄像头Microsoft Kinect 2.0(分辨率为1 920×1 080像素,30帧/s)采集人脸图像。将采集到的图像传送到笔记本电脑进行处理,采用的电脑CPU配置为Intel(R)Core(TM)I7-8565U。实验基于Visual C++6.0平台,调用OpenCV视觉库从而提取疲劳特征数据。
为了模拟真实的挖掘机操作环境,把摄像头固定在挖掘机上。按照实验要求招募5名驾驶者并对他们进行挖掘机培训。实验分清醒和疲劳2个阶段进行测试。清醒阶段要求驾驶者保持充足的睡眠,在早上9:00进行实验。疲劳阶段要求驾驶者前一天的睡眠时间为4 h,实验在下午2:00进行,并在实验前不允许补充睡眠。2个阶段都获取驾驶者30 min的有效视频作为实验数据。挖掘机及实验设备安装位置如图1所示。
图1 实验设备安装示意图
人脸区域定位是提取面部特征的基础,在定位人脸之后可以有效地缩小图像检测范围,降低信息冗余度,提高后续眼睛与嘴部区域定位的精度。目前人脸检测主要方法有人脸轮廓、模板特征、肤色模型、神经网络、AdaBoost 模型等。其中AdaBoost 模型识别效率高,能同时保证速度与准确度,可以达到视频流实时处理的检测效果[5],因此本文采用AdaBoost算法识别出脸部区域。
AdaBoost算法是将多个弱分类器组合成一个强分类器,从而使分类效果得到显著提升[6]。设原始训练样本集为:
D={(xi,yj)|i=1,2,…,N}
(1)
其中,xi为人脸或非人脸图像;yj∈{-1,1}为xi所属的正确分类标签,1和-1分别表示人脸图像和非人脸图像。设Dt(i)为第t次迭代时全部训练样本的权重分布。
AdaBoost算法的实现过程有以下3个步骤:
(1) 初始化训练数据的权值分布。令
D={x1,y1,x2,y2,…,xN,yN},
(2)
对t=1,2,…,T,在分布Dt上寻找错误率最小的弱分类器ht:X→{-1,1},其错误率为:
εt=PDt(ht(xi)≠yj)
(3)
(2) 选择权重系数。权重系数计算公式为:
(4)
更新训练样本分布:
(5)
其中,Zt为归一化常数。
(3) 依此类推,最终组成的强分类器为:
(6)
AdaBoost算法进行人脸检测主要是通过分类器来完成的,而分类器则是从大量样本的训练中得来的,分类器的好坏直接决定了最终的检测效果[7]。实验所运用的8 078个样本来源于自己采集的图像、网络图像和MIT人脸训练库,通过OpenCV对其进行分类器训练,最终得到一个强分类器。采用强分类器进行人脸区域定位的实验结果如图2所示。
图2 人脸定位
在检测出人脸后,需要定位眼部区域。为了满足挖掘机驾驶员疲劳检测实时动态和精确度高的要求,采用基于AdaBoost算法进行人眼检测。根据眼睛在人脸上的位置分布,将眼睛检测区域缩小至人脸图像上1/2部分进行粗定位,从而大大缩减检测时间。AdaBoost算法对人眼定位的检测效果如图3所示。当驾驶者佩戴眼镜或者头部偏转一定角度,该方法都能快速准确地定位人眼区域。
图3 人眼定位
在对眼睛进行定位后,需要对眼睛特征状态进行提取,作为疲劳判断的依据。常用的检测方法如下:
(1) 基于Hough变换法。通过检测眼睛图像中是否有圆来判断眼睛状态[8]。
(2) 积分投影法。根据眼睛区域水平和垂直投影的灰度值进行判断。
(3) 模板匹配法。首先建立眼睛各个状态的模板,然后计算眼睛图像与模板的匹配度。
(4) 计算眼睑曲率法。根据眼睛在开、闭状态下的曲率差异进行判断。因为研究对象是挖掘机驾驶员,与汽车驾驶环境不同,挖掘机在工作时不可避免地会产生振动,同时受到光线及噪声的影响,所以采用大津法二值化图像从而进行眼睛特征提取。该方法计算简单,受图像亮度和对比度的影响较小,适用于挖掘机工作环境。
文献[9]提出大津法,也称最大类间方差法,是一种自适应的阈值确定方法。该方法通过计算最佳阈值,使得图像的背景和目标2个部分区分度最大。
设T为前景与背景的分割阈值,ω0为前景像素点占图像总像素的比例,μ0为平均灰度;ω1为背景像素点数占图像总像素的比例,μ1为平均灰度;μ为图像的总平均灰度,g为前景和背景图象的方差,则有:
μ=ω0μ0+ω1μ1
(7)
g=ω0(μ0-μ)2+ω1(μ1-μ)2
(8)
联立(7)式、(8)式可得:
g=ω0ω1(μ0-μ1)2
(9)
眼睛特征提取结果见表1所列,本文用大津法对眼睛区域进行二值化分割,当阈值T=109时,类间方差g达到最大值。此时的图像能清晰地把眼睛区域从整幅眼睛图片中提取出来。之后对该二值化图像进行垂直积分投影和水平积分投影。
从表1可以看出,睁眼和闭眼状态下垂直积分投影有明显的不同。当睁眼状态时,垂直积分投影图像有明显的波峰;当闭眼状态时,该图像非常平坦。
表1 眼睛特征提取结果
因此,采用垂直积分投影的高宽比来识别眼睛的睁闭情况。垂直积分投影曲线如图4所示,宽W可由垂直积分投影图像最小外接矩形的宽表示,高H可由图像最小外接矩形的高表示。
图4 垂直积分投影曲线
记λ为曲线高宽比,λ=H/W,λ值越大,眼睛状态越接近睁开;λ值越小,眼睛状态越接近闭合。对于λ的阈值,通过处理收集到的532张人脸网络资源库图像,统计人眼高宽比,并结合大量参考文献选取λ的阈值为0.42,当λ>0.42时,可判定为睁眼状态,否则为闭眼状态。
根据医学研究表明,人在一般情况下1 min眨眼15~20次。因此在获取眼睛睁闭状态后,可以根据眨眼频率来区分疲劳的闭眼动作和普通的眨眼动作。
由于嘴部始终位于人脸的下半部分,因此可以根据人脸“三庭五眼”[10]的结构特征对嘴部进行定位。通过采取人脸图像下1/3处和两眼之间的区域来确定嘴部位置,这种方法不仅可以提高检测的精度,还可以大大缩减检测时间。
在获取嘴部位置后,可以对嘴部特征进行提取,从而判断驾驶员是否处于打哈欠状态。目前,国内外许多专家学者通过唇色和肤色的差异提取嘴部特征。但是挖掘机工作环境复杂,特别当光线不足时,采用该方法会存在很大的误差,因此采取先对图像进行二值化操作,然后用Canny检测方法提取出嘴部边缘轮廓,获取轮廓包含的面积与周长参数,最后通过计算嘴部似圆度e判断嘴部状态。
e的计算公式为:
e=4πS/L2
(10)
似圆度e的取值范围为0~1,S为嘴部区域面积,L为嘴部轮廓周长,e的值越接近1,说明嘴巴张开越大。对于e的值,文献[11]通过实验数据得出似圆度阈值为0.4,因此结合文献和实际实验数据分析得出当e值超过0.4,即可判定为张开状态。
据统计,人在打哈欠时嘴部张开持续的时间为4~5 s,因此依据此特征可以对打哈欠和普通说话进行区分。嘴部特征提取结果见表2所列。
表2 嘴部特征提取结果
为了验证所提出的嘴部特征提取算法在挖掘机工作环境下更加有效,采用基于唇色和肤色差异的方法进行嘴部特征提取实验。2种方法对比结果见表3所列。
表3 2种方法对比结果
从表3可以看出,在同等实验条件下,唇色与肤色差异法提取嘴部准确率低于Canny检测方法。从实验中发现,在粉尘较多,光线过强或过暗,光照不均匀的情况下,容易出现将多余的皮肤区域识别成嘴唇所在区域,导致似圆度指数产生严重偏差,因此Canny边缘检测方法更适用于对挖掘机驾驶员进行嘴部特征提取。
为了验证上文提出的疲劳特征提取算法的准确性,在挖掘机上对处于疲劳状态下的驾驶员闭眼与打哈欠状态进行实时检测,并对比实验结果。眼睛垂直积分投影高宽比随帧数变化曲线如图5所示。
图5 眼睛睁开度
从图5可以看出,以一个60帧的视频作为实验样本,测出λ值的范围在0.24~0.57之间。黑色虚线以上为大于0.42的区域,眼睛可判别为睁开状态。实验中,眼睛完全睁开时停留时间较长,睁眼状态相对稳定,因此在15~20帧、40~45帧时数据比较密集且检测数据失真情况较少。在闭眼和睁眼的过程中,眼睛状态变化较快,有8帧数据未能准确测出,总体准确率为86.67%。该驾驶员在这60帧视频中眼睛连续睁闭且次数达到2次以上,符合眼部在疲劳状态下的特征。
嘴部似圆度随帧数变化曲线如图6所示。
图6 嘴部张开度
同样检测一段视频,选取其中的60帧进行处理,图6中e为0.4的黑色虚线是区分嘴巴张开闭合分界线。在23~52帧时,嘴巴比较快速地张开到闭合。在30~40帧之间,嘴巴一直处于张开状态,因此数据无较大波动。在嘴部状态检测中,误检主要存在于嘴巴动态变化的过程中,平均检测准确率为90%。该驾驶员在这60帧视频中嘴部连续闭合且次数达到2次以上,符合嘴部在疲劳状态下的特征。
以上是2组60帧的实验样本中眼部和嘴部的特征参数随时间的变化情况。通过2个特征参数的2组样本数据计算得到的平均准确率、平均方根误差、平均绝对误差见表4所列,直观地反映出了本文提出方法的有效性。
表4 总体样本数据分析结果
本文针对挖掘机工作环境,提出了适用于挖掘机驾驶员的疲劳特征提取方法。为了减少挖掘机周围光线变化对疲劳特征提取的影响,利用AdaBoost算法对人脸和人眼进行识别,在此基础上采用大津法和Canny检测方法检测眼睛和嘴部特征。
本文分别做了几组对照实验,实验表明在误差允许的范围内,本文方法能准确提取挖掘机驾驶员疲劳特征,具有较高的实用价值。