利索能及
我要发布
收藏
专利号: 2022108777465
申请人: 西安理工大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-04-30
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:具体包括如下步骤:

步骤1,获取实时拍摄驾驶员驾驶过程的视频,并将视频流加载成图像帧;

步骤2,使用YOLO V5网络进行识别步骤1加载的图像帧中的标签信息、置信度和位置信息,并通过标签信息进行判断驾驶员是否已经坐到驾驶位置上面,如果驾驶员没有坐到驾驶位置,则继续执行步骤1直至驾驶员开始坐到驾驶位置上面后才执行步骤3;

步骤3,循环读取步骤1加载的图像帧,对每一帧的图像获取面部特征位置信息,并计算眼部长宽比EAR和嘴部长宽比MAR;

步骤4,在不同时段根据步骤3获得的眼部的长宽比EAR和嘴部长宽比MAR自适应计算出眼部长宽比阈值EART和嘴部长宽比阈值MART;

步骤5,根据步骤4获得的眼部和嘴部长宽比阈值进行统计眨眼次数和打哈欠次数;

步骤6,根据步骤5统计的眨眼次数和打哈欠次数进行判断当前时段是否疲劳,然后继续循环执行步骤1,进行判断下一时段的疲劳状态。

2.根据权利要求1所述的一种基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:所述步骤1的具体过程为:步骤1.1,通过OpenCV的视频的获取操作函数获取视频源;

步骤1.2,经过步骤1.1获得驾驶员驾驶过程的视频源之后,设置定时器周期,连接定时器周期溢出的槽函数,用于显示一帧视频,加载成图像帧之后,读取视频的每一帧画面。

3.根据权利要求2所述的一种基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:所述步骤2的具体实施方式如下:步骤2.1,将步骤1加载的图像帧保持原有的长宽比例,剩下的部分采用灰色填充处理获得新的图像帧;

步骤2.2,将步骤2.1获得的新图像帧中内存不连续存储的数组转换为内存连续存储的numpy数组;

步骤2.3,将步骤2.2处理之后的numpy数组转换为PyTorch中的张量,且二者共享内存;

步骤2.4,将步骤2.3获得的张量经过YOLO V5网络进行处理,处理之后提取所有分数中最高的作为最终结果;

步骤2.5,从步骤2.4的最终结果中提取标签信息、置信度和位置信息;

步骤2.6,从步骤2.5获得的标签信息判断驾驶员是否坐到驾驶位置,如果没有检测到驾驶员坐到驾驶位置的标签信息,则继续执行步骤1直至检测到驾驶员坐到驾驶位置的标签信息后才执行步骤3。

4.根据权利要求3所述的一种基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:所述步骤3的具体过程为:步骤3.1,通过Dlib的人脸关键点检测器来处理获取步骤1加载的图像帧中的脸部关键点特征信息;

步骤3.2,将步骤3.1获取的脸部关键点特征信息转换为数组array的格式,根据获取左右眼和嘴部等面部标志的索引,进行提取左右眼和嘴部的坐标;通过坐标计算对应的欧氏距离,以此欧式距离得到左右眼与嘴部的长宽比;眼部和嘴部的长宽比计算的数学公式分别如(1)(2):式中,EAR代表眼部长宽比,p1,p2,p3,p4,p5,p6分别代表眼部的六个关键点位置坐标;

MAR代表嘴部长宽比,m1,m2,m3,m4,m5,m6分别代表嘴部的六个关键点位置坐标。

5.根据权利要求4所述的一种基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:所述步骤4的具体过程为:步骤4.1,创建数组EYE_EAR和MOUTH_MAR分别用于存储眼嘴部长宽比;创建计算阈值序列数组ThresholdSort、计算阈值次数整型类型参数ThresholdCount、是否计算阈值布尔值类型参数Threshold;创建眼部长宽比数组EARA和嘴部长宽比数组MARA;创建当前时段帧数计数整型类型参数Roll;创建图像帧数量整型类型参数imageCount;1秒图像为12帧,imageCount的范围是120至180;当驾驶员刚开始坐到驾驶位置时,将参数ThresholdCount置为1,开始提取imageCount数量的图像帧,将这imageCount帧图像帧的眼部长宽比EAR和嘴部长宽比MAR分别存储到数组EYE_EAR和MOUTH_MAR中;为了视频选取的合理性和可靠性,然后从50秒至1800秒随机生成5个数,对这5个秒数升序排序存储到数组ThresholdSort中;

当视频到达5个秒数所对应的帧数时,则再次提取imageCount帧图像的眼部长宽比EAR和嘴部长宽比MAR分别存储到数组EYE_EAR和MOUTH_MAR中,并且依次将参数ThresholdCount置为2、3、4、5、6;在第imageCount+1帧和随机生出的5个秒数所对应的帧数时将参数Threshold置为True;

步骤4.2,当参数Threshold为True时,每加载一帧图像帧,参数Roll+1,并将步骤4.1存储的数组EYE_EAR进行降序排序,将数组MOUTH_MAR进行升序排序,数组EYE_EAR和MOUTH_MAR的长度都为imageCount*ThresholdCount;

步骤4.3,为了防止司机的恶意操作导致数据不真实,并且只取眼睛状态比较大和嘴部状态比较小的数据进行计算阈值,所以从imageCount*ThresholdCount帧数据中去除前

10%和后50%的数据,仅使用中间区域的40%数据进行计算;从步骤4.2排序后的数组EYE_EAR和数组MOUTH_MAR中,去除前10%和后50%的数据,然后存储到眼部长宽比数组EARA和嘴部长宽比数组MARA;

步骤4.4,根据步骤4.3获得的眼部长宽比数组EARA和嘴部长宽比数组MARA,进行计算出眼部和嘴部长宽比阈值,具体计算的数学公式如(3)(4):EART=Hmean(EARA)*0.5    (3)

MART=Hmean(MARA)*2    (4)

式中,EART代表眼部长宽比阈值,EART代表嘴部长宽比阈值,Hmean()代表计算均值操作,EARA代表眼部长宽比数组,MARA代表嘴部长宽比数组。

6.根据权利要求5所述的一种基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:所述步骤5的具体过程为:创建闭眼次数整型类型参数Counter、当前时段眨眼帧数整型类型参数RollEye和总眨眼次数整型类型参数Total;创建张嘴次数整型类型参数mCounter、当前时段打哈欠帧数整型类型参数RollMouth和总打哈欠次数整型类型参数mTotal;根据步骤4获得的眼部长宽比阈值MART和嘴部长宽比阈值MART与步骤2、3获得的眼部长宽比EAR、嘴部长宽比EAR和标签信息、置信度和位置信息,进行判断当前面部动作状态;

当眼部长宽比EAR小于步骤4获得的眼部长宽比阈值EART时且在步骤3时检测出当前图像帧中包含驾驶员标签信息,参数Counter+1,参数RollEye+1;当参数Counter>=2时,则代表完成一次眨眼活动,参数Total+1,重置参数Counter;

当嘴部长宽比大于步骤4获得的驾驶员嘴部长宽比阈值时,参数mCounter+1,参数RollMouth+1;为防止将驾驶员讲话误判为打哈欠,当参数mCounter>=3时,则代表完成一次打哈欠活动,参数mTotal+1,重置参数mCounter。

7.根据权利要求6所述的一种基于自适应面部动作特征阈值的疲劳驾驶检测方法,其特征在于:所述步骤6的具体过程为:根据步骤5获得的当前时段眨眼帧数参数RollEye和打哈欠帧数参数RollMouth进行判断当前时段疲劳状态;设置每一时段为imageCount帧图像,当参数Roll=imageCount时,则计算当前时段imageCount帧图像的闭眼率PERCLOS值,计算PERCLOS的数学公式如(5):式中,Neye代表当前时段闭眼的帧数,即步骤5统计的RollEye参数,Nmouth代表当前时段张嘴的帧数,即步骤5统计的RollMouth参数,Ntotal代表当前时段总帧数,当前实验中为imageCount帧;

当PERCLOS大于一定数值M时,则代表当前处于疲劳状态;若小于M时,则代表当前处于清醒状态;判断结束后,将该时段统计的帧数计数参数Roll、眨眼帧数参数RollEye和张嘴帧数参数RollMouth参数进行重置,然后继续循环执行步骤1,进行判断下一时段的疲劳状态。