APP下载

基于视频序列的危险驾驶预警技术研究

2019-10-18周正阳陈璐莎朱启兵

测控技术 2019年9期
关键词:嘴部哈欠张开

周正阳,陈璐莎,张 坤,朱启兵,2

(1.江南大学物联网工程学院,江苏无锡 214122;2江南大学轻工过程先进控制教育部重点实验室,江苏无锡 214122)

随着道路交通的发展和私家车不断普及,世界各国的道路交通事故和死亡人数也呈上升趋势。据交通部资料显示,2017年我国因交通事故死亡人数高居世界第二,达到6.3万人。而驾乘人员疲劳驾驶、注意力不集中是导致事故的主要原因。

由于具有非接触、准确率较高的特点,基于视频序列的危险驾驶技术已逐渐成为智能交通领域的研究热点[1]。Alioua N等人提出使用修正圆形霍夫变换来测定嘴巴张开度,通过嘴部张开的连续时间判断哈欠行为的发生[2]。陈云华利用方差投影方法确定眼部、嘴部位置,并分别使用虹膜似圆比、轮廓椭圆拟合参数定义眼睛睁开度和嘴部张开度,实现眼部疲劳和哈欠行为识别[3]。但现有研究多局限于使用传统的图像处理方法来进行眼部、嘴部初步定位,传统的定位方法涉及大量参数阈值,这使得系统在多变的环境中适应性较差;且多数研究基于单帧图像进行分类,缺少与时间维度的关联,这使得算法鲁棒性较弱。此外,多数危险驾驶预警系统仅使用疲劳特征来表征危险驾驶,参数单一,预测效果不佳[4]。本文基于全局人脸特征点定位集成回归树(Ensemble Regression Tree,ERT)算法构造嘴部几何特征,提出缺失值补偿方法,融合嘴部动作和头部姿态,构建基于视频序列的多特征危险驾驶判定模型,以实现危险驾驶的准确预警。

1 基于视频序列的危险驾驶预警技术

1.1 危险驾驶预警方案概述

所提出的基于视频序列的危险驾驶预警方法,采用网络摄像头采集视频数据,数据输入计算机进行人脸检测、人脸特征点定位。基于特征点位置分别计算头部姿态角和嘴部几何特征值,并将头部姿态角用于嘴部几何特征值的修正以得到嘴部张开度,从而形成头部姿态角和嘴部张开度的时间序列,完成由视频序列到数据特征序列的转换。首次提出使用滑动平均法对张开度丢失帧进行补偿,并进行序列平滑处理,然后将张开度序列应用于哈欠、说话检测,将头部姿态角序列转化为视线方向,作为视线偏移评估的依据。最后,将哈欠、说话、视线偏移参数融合,计算危险得分,并使用标准化系数将结果直观化。危险驾驶预警方案技术流程如图1所示。

图1 危险驾驶预警技术流程图

1.2 人脸检测

因实际测试时背景噪声、光照条件不尽相同,为保持系统的稳定性,在图像采集后首先进行中值滤波、直方图均衡化,以削弱光照强度给检测带来的影响。由于梯度方向直方图(Histogram of Gradient,HOG)特征在局部单元上运行,除方向外,其具有几何和光照强度不变性特征。在驾驶室内,驾驶员头部运动相对局限,不会有较大偏离,故利用该人脸检测方案能够较好检测。

人脸检测时,使用滑动窗口在整张图片中逐行提取HOG特征矩阵,使用SVM分类器分类,找到人脸区域[5-6]。

1.3 人脸特征点定位

因传统的图像处理方案涉及多阈值参数,采用基于集成回归树(Ensemble Regression Tree,ERT)的人脸特征点全局定位,通过算法预测面部68个特征点,而后选取所需要的特征点坐标用于特征构建。

基于ERT的特征点定位算法将图片像素的强度值作为特征,从原始图像中进行检索,并索引当前脸部形状的估计。I表示原始图像,表示当前脸部形状的估计,当前第t轮回归器为rt,在集成中预测更新向量并把加入到当前的估计中去。脸部形状更新公式为[7]

输入待定位的人脸,首先将训练集中的平均脸作为初始脸部形状,而后基于全局最优目标通过集成回归从粗到精逐步进行精确定位[7]。测试过程中,使用集成回归器进行迭代,人脸特征点定位索引号如图2所示。

图2 人脸特征点定位索引及嘴部几何特征示意图

1.4 基于POSIT头部姿态角计算

头部姿态角由头部三个自由度定义,这三个自由度分别是俯仰角(Pitch)、偏航角(Yaw)、翻滚角(Roll),分别表示点头动作、摇头动作和歪头动作偏移正面的角度。POSIT算法输出头部姿态角的三个值[8]。姿态角度示意如图3所示。

图3 头部姿态偏角示意图

1.5 嘴部张开度计算

下面将以嘴部动作识别主要研究对象,故需从视频图像中提取嘴部几何特征,从而将视频序列转化为数据特征序列。

1.5.1 特征点外接矩形提取

使用人脸特征点定位所获得的嘴部内轮廓特征点(图2所示的第60~67索引号),计算其外接矩形。该矩形宽高比能够较好地刻画嘴巴的张开度大小,当头部在平面内旋转,其张开度保持稳定,可避免坐标轴旋转的烦琐。

基于凸包算法求取多边形的外接矩形[9],记外接矩形的宽为w,高为h,定义嘴部张开度alph值为

构建基于张开度alph的时间序列,如该帧因人脸检测失败没有定位坐标输入,则该帧张开度记为0,以便于后续数据分析。据国外研究显示,哺乳动物哈欠全过程平均时间为4.5 s[10],故设定时间窗约15 s,共N帧,得到基于张开度的时间序列deque_mouth为

1.5.2 基于姿态角的修正

经实验发现,因头部发生偏转会导致嘴部张开度失真,根据1.4节计算得到的头部姿态,由空间几何推算。对于嘴部轮廓外接矩形而言,w值受Yaw方向影响较大,h值受Pitch方向影响较大,修正后w'、h'分别与Yaw、Pitch方向角度呈余弦三角函数关系,推理得到:

式中,alph'为嘴部张开度的更新值。

下文在不引起误解的情形下将更新后的张开度alph'仍记作alph,并将此作为下文计算的原始数据。

1.6 嘴部动作及视线偏移识别

驾驶员行车过程中,其驾驶状态可通过头部姿态和嘴部动作进行监测。头部姿态表征驾驶人员的视线偏移情况,可由头部姿态角序列描述。嘴部动作一般可分为静默、哈欠和说话,其中哈欠表征驾驶员精神状态可能处于疲劳态,说话表征驾驶人员部分注意力分散。嘴部动作识别使用1.5节计算得到的嘴部张开度时间序列作为原始数据,根据序列形态进行模式识别,识别方法为基于滑动窗口的特征和时序分析,即同时计算下文涉及的相关参数。同一滑动窗口中仅显示一种状态,本文设定哈欠具有较高优先级。

1.6.1 基于双阈值的深浅哈欠识别

为更好地捕捉哈欠动作、充分考虑不同的人的行为习惯,提出深、浅哈欠不同判决方法。对于一般哈欠检测,基于张开度及其对应时间关系建立如下约束关系:

式中,t1为alph连续单调递增的时间;T上升为alph张开度持续上升的时间阈值,t1大于T上升时,系统进入哈欠预判状态;Alph为张开度阈值,当alph大于该值,表示该帧具有哈欠特征;t2为alph大于Alph的连续帧数。算法要求嘴部由闭到张、持续单调增大才进入哈欠预判,以区分正常说话和开口唱歌等其他异常张嘴行为[11]。

为区分深浅哈欠,采用Alph、T哈欠的双阈值。满足t1大于T上升即进入哈欠预判状态,嘴巴张开度大于Alph1的持续时间大于T哈欠1即可判断为哈欠,当张开度较大且大于Alph2的持续时间大于T哈欠2,判断为深哈欠,其余为浅哈欠,如表1所示。

表1 深浅哈欠判别表

深、浅哈欠张开度值的时间序列形态如图4所示。三角形曲线表示达标深哈欠,其满嘴巴张开度大于Alph2的连续帧数大于等于T哈欠2帧,五角星曲线表示达标浅哈欠,其嘴巴张开度满足大于Alph1的连续帧数大于等于T哈欠1帧。经实验,推荐阈值如表2所示。

图4 深浅哈欠示意图

表2 深浅哈欠推荐阈值

1.6.2 针对哈欠识别的数据补偿与修正

实验发现,人脸检测和人脸关键点定位算法会在人脸具有较大偏转时检测失败,基于该问题本文提出基于滑动平均法的丢失帧预测。针对未检测到人脸的情况,在首次计算时已记为0,考虑到前后帧的张开度应具有一定的连续性,可使用该帧的前、后具有有效alph值的m帧数据,计算平均值作为当前帧的数据,其丢失帧更新公式为

式中,k为当前帧索引;n为前后m帧中有效帧的个数;i为循环变量。

除此之外,因关键点定位会发生一定程度的抖动,导致alph值在一段时间内上下波动,这在时间alph曲线上形成了高频噪声,为减小误差,对曲线做平滑处理,采用加权线性回归法对原始数据进行回归,拟合效果如图5所示,最终使用拟合后数据进行哈欠识别。

使用该方案后,少量丢失帧均可补偿,一旦打哈欠时出现仰头的情况,由于其具有仰头前嘴巴张大,当头部回到原位嘴巴可能仍未合的特征,此时丢失帧已通过算法填补,并进行平滑处理,哈欠可动作被捕捉。某次发生哈欠的嘴部张开度数据处理前后曲线如图5所示(图5中取m=4)。

图5 经数据处理前后哈欠曲线对比

1.6.3 基于方差-均值的说话识别

说话时张开度曲线上下波动,其频率较高,且嘴部张开幅度较哈欠。在检测时间窗内,计算alph值序列的均值、方差、最大值,形成当前时间序列的三个统计特征。嘴部的张合频繁程度可以用一能量函数来表征,本文构造方差能量函数,嘴部因说话上下运动而具有能量,能量越大,表示越可能发生说话,且说话时间的均值)、方差能量E、最大值Alphm。根据1.5.2节所计算得到的时间序列,进行如下参数计算。

①均值计算公式:

②方差能量函数:

③最大值:

经过统计数据分析,说话时存在如下的约束关系:

式中,alph1为alph阈值左边界;alphr为alph阈值右边界;El为能量左边界;Er为能量右边界;A为张开度最大值,A值约束其将哈欠排除在外,若最大值较大,则可能包含哈欠,不作说话判定。

1.6.4 视线偏移识别

驾车时视线视线偏离前方是注意力不集中的重要表现。一般情况下,视线随着头部的转动而偏转。本文借助1.4节计算得到的头部偏转角来近似来代替视线的偏转角。

文献显示驾驶员注意力集中时,80%~90%的视线都集中在前方±12°内[12]。根据检测的实际精度及实际车内环境,将这个范围定义为水平方向和垂直方向的角度范围为偏航角、俯仰角均在±15°内。

头部姿态角中Yaw、Pitch处于±15°内,认为驾驶员视线正常,否则为视线偏离,同时在综合判定时间窗序列WIN(约1 min)中以0正常、1偏离进行记录。注意力分散可定义为:

①WIN中分散不集中,即在时间窗序列中存在零散的0,且0的数量占时间窗总长度的比例较大,满足一比例阈值L1。

②WIN中连续不集中的时间较长,满足一时间阈值L0。

针对以上情形,建立二元时间序列,序列中保存该帧视线偏离与否的状态。

1.7 多特征危险驾驶判定模型

采取多参数融合综合判定潜在的危险驾驶程度,依据特征对危险驾驶的影响程度计算危险总分,并通过非线性映射关系得到范围在[0,1]之间的危险系数coeff。

首先通过上述检测方法统计在规定时间内说话、哈欠、视线偏移的情况。对于每一个长度为WIN的时间窗,说话特征为WIN中表示具有说话特征的帧数占WIN的比例,哈欠特征为时间窗WIN内哈欠发生的总次数,视线偏移特征为偏移帧数占时间窗的比例,分别记为 speak_rate、yawn_times、pose_rate。

在决策前具有以下经验知识:

①认为哈欠与疲劳的相关性为中等,且疲劳与危险驾驶的相关性也为中等,故认为时间段内两次哈欠为疲劳状态、轻度危险。

②说话分散驾驶员部分注意力,与危险驾驶相关性为中等,若50%时间均为说话,则可判定为轻度危险。

③视线与危险驾驶具有高相关性,在一般道路上行驶,若注意力持续L0=15 s以上偏离前方,或偏离总时间占时间窗L1=50%以上,可判定为轻度危险。

危险决策模型如下。

①针对哈欠动作,1次浅哈欠记30分,1次深哈欠记40分,2次则叠加计算,3次哈欠及以上则记为100分。得分定义为score1,计算方法为

式中,n为浅哈欠次数;m为深哈欠次数。

②说话动作、视线偏移均为表征注意力集中程度的量。提出基于Sigmoid变式函数的模糊隶属度,即将Sigmoid函数通过平移、伸缩变换得到,该函数具有抑制两头、中间近似线性的特点,与所需要的非线性映射特性相符。经变换后,Sigmoid函数值可映射至0~100,恰好为该项危险得分,易得Sigmoid变式隶属度评分函数形式为

式中,rate2,rate3分别表示speak_rate和pose_rate。为得到合适的参数b,分别取b为5、10、15,映射关系如图6(a)所示。当b取较小值时,初值和终值明显与本文所需映射不符,且不能很好地体现Sigmoid函数中间灵敏度高的特点,而b取较大值时,占比时间处于较低值时,说话、视线偏移对驾驶的危害程度过低。故b=10时相对合理。

③总分计算公式与危险系数计算。总分Score为三者总分。

由经验知识知,在时间窗内,2次哈欠即已经发生疲劳,50%以上时间的说话、视线偏移,均关联为轻度危险,据此按如下方案将危险得分与危险系数coeff进行关联,关联方法如表3所示。

表3 危险得分与危险系数关联表

取各分数段中值对应于其危险系数,拟合非线性映射模型,将分数映射至0~1的标准化系数,将危险程度直观化。采用抛物线进行拟合,计算方法如下:

式中,Score为总分;β为拟合待定系数。由最小二乘法得到β=0.0579,拟合结果如图6(b)所示。

图6 隶属度函数与危险系数拟合结果

综上,在滑过第一个 WIN后,每一帧均会得到Score和coeff。系统预警决策方法为:当单项分超过50时,进行单个动作报警,当综合危险系数超过0.5时进行轻度危险报警,并分别在达到0.75、0.9时进行中度危险报警和重度危险报警甚至需开启汽车减速装置,以将危险程度降至最低。

2 实验

2.1 数据预处理前后哈欠准确率对比

实验方法:邀请13位具有驾驶经验的被试者,模拟处于驾驶环境,并要求在实验过程中发生哈欠、说话、突然张大嘴巴、转头、低头看手机等动作,且每人哈欠总数不少于3个,记录嘴部张开度、头部姿态角数据和视频数据。

本算法实验平台CPU为i7-7700HQ,运算速度约为14 f/s,结合表2和1.5.1、1.6.4节的参考时间,涉及帧率阈值的参数如表4所示。此处表中时间单位均已换算为f。

表4 帧数阈值参数 单位:f

数据预处理包括滑动平均法预测、张开度曲线平滑去噪,实验对比处理前后哈欠检测准确率变化。实验结果如表5所示。

表5 预测补偿、平滑去噪前后哈欠检测率对比

如表5所示,经改进后的模型,哈欠检测准确率提高至82.97%,提高了约44%。

2.2 说话检测实验

实验方法:从2.1节录制数据中选取所有说话与静默的视频段,记录每帧嘴部张开度。划分训练集和测试集,60%数据为训练集,40%为测试集,以连续50 f为一组数据。测试样例从测试集中随机选取22组独立随机的连续50 f。分别计算时间窗中的方差和均值,借鉴SVM“间隔最大化”思想处理该问题,求得说话时方差、均值的最小值和静默时方差、均值的最大值,将这两者均值作为静默与说话的临界值,即El,右临界值为左临界值的2.5倍。均值应大于说话最小值和静默最大值的均值,其右临界为左临界值的2倍。实验阈值如表6所示。

表6 “说话”分类实验阈值表

基于方差-均值特征的分类在测试集中正确率达到100%,效果优秀。

2.3 系统实验结果

在Linux平台下编写C++程序,使用dlib19.6、OpenCV 3.2作为依赖库。将笔记本连接车载摄像头,进行实时现场测试。现场测试图片如7所示,图中左上方共7行,首行为嘴部张开度alph的实时测量值,第2行为系统检测到的当前嘴部动作,为speaking,第3~5行分别为头部姿态估计角测量值,第6行为当前帧视线状态,ON表示未偏移,末行所示为当前危险系数。图片下方显示系统在WIN时间窗内已测得长时间视线偏移的报警提示。

图7 车载测试

测试为另行实时测试,要求被试者进行至少2次哈欠,1次长时间说话,2次突然张嘴,部分测试结果如表7所示。

表7 系统部分测试结果

本系统在Linux嵌入式平台下,基于人脸特征序列对危险驾驶的行为模式进行识别与评估。对不同年龄、不同性别的50位被试者进行测试,实验表明哈欠检测平均准确率为82.44%、说话检测平均准确率100%,能够容忍大姿态下的哈欠和说话动作,准确捕获潜在的危险动作,但在较大姿态下快速移动欠稳定。其监测效率为14 f/s,满足实时性要求。本系统软件实现简单,硬件需求低,经济价值高,具有较高的应用性能和嵌入式移植特性,因此,可适用于实时危险驾驶预警监测。

3 结束语

本文构建了基于ERT人脸特征点定位算法的嘴部特征时序模型,并通过嘴部特征点外接矩形来计算嘴部张开度。尤其是所提出的基于头部姿态角更新张开度值并对丢失数据进行预测,融合哈欠、说话、视线偏移等在驾驶时可能存在危险的行为,建立了多参数融合的危险驾驶判断的模型,并取得了较好的实验效果。依据多个参数计算指征危险可能性的危险系数。由于危险驾驶数据较少,故本系统的危险预警在模型融合时以经验权重为主,今后拥有具有标签的驾驶视频,可基于深度学习方法基于视频流进行训练以进一步抽取时空特征、捕获时空相关性,深度网络模型鲁棒性将较高于现有模型,可适应更复杂环境。进一步将依靠智慧交通系统,结合实时路网状态[13],对当前车辆的危险驾驶系数做多视角、精细化判断。

猜你喜欢

嘴部哈欠张开
被风吹走的哈欠
致特别的你
意想不到
此人为何杠得如此嚣张?
圆号教学中嘴部教学的重要性及训练方法研究
开花
高中素描头像教学中提高嘴部刻画能力的策略探究
基于Horn-Schunck光流法的多目标反刍奶牛嘴部自动监测
止不住的哈欠