发明内容
本发明提供了一种车辆驾驶员危险驾驶状态识别方法及装置以克服上述问题或者至少部分地解决上述问题。
根据本发明的一个方面,提供了一种车辆驾驶员危险驾驶状态识别方法,包括:
获取连续的多帧驾驶员面部图像;
将所述多帧驾驶员面部图像输入人脸关键点识别算法提取驾驶员的面部特征数据,所述面部特征数据包括头部特征点信息、眼部特征点信息和嘴特征点信息;
根据头部特征点信息确定驾驶员的当前头部姿态参数值;
将所述当前头部姿态参数值输入已训练的视线注视模型,确定所述驾驶员的当前视线注视范围;
根据所述眼部特征点信息确定所述驾驶员的当前眼睛开合程度,根据所述嘴部特征点信息确定所述驾驶员的当前嘴部开合程度;
根据所述当前眼睛开合程度、当前嘴部开合程度和所述当前视线注视范围确定所述驾驶员是否为危险驾驶状态;
若是,则输出安全驾驶提醒信息。
可选地,所述根据头部特征点信息确定驾驶员的当前头部姿态参数值,包括:
基于位姿估计算法将所述头部特征点信息转换至三维空间,并计算驾驶员的当前头部姿态的欧拉角。
可选地,所述根据所述眼部特征点信息确定当前眼睛程度,包括:
对所述眼部特征点信息进行仿射变换,使所述眼部特征点信息对准预设的标准眼部形状,拟合出驾驶员的眼部形状轮廓线;
根据所述眼部形状轮廓线计算上眼轮廓线的第一曲率以及眼部上眼睑和眼部下眼睑的第一最远距离;
基于所述第一曲率和所述第一最远距离计算当前眼睛开合程度。
可选地,所述根据所述嘴部开合特征点信息确定当前嘴部程度,包括:
对所述嘴部特征点信息进行仿射变换,使所述嘴部特征点信息对准预设的标准嘴部形状,拟合出所述驾驶员的嘴部形状轮廓线;
根据所述嘴部形状轮廓线计算上嘴唇轮廓线的第二曲率以及嘴部上嘴唇和嘴部下嘴唇的第二最远距离;
基于所述第二曲率和所述第二最远距离计算所述驾驶员的当前嘴部开合程度。
可选地,所述根据当前眼睛开合程度、当前嘴部开合程度和所述当前视线注视范围确定驾驶员是否为危险驾驶状态,包括:
将所述当前眼睛开合程度与眼睛开合度阈值进行比较;
将所述当前嘴部开合程度与嘴部开合度阈值进行比较;
将当前视线注视范围与覆盖路面时的视线阈值比较;
当判断出眼睛开合程度小于眼睛开合度阈值且嘴部开合程度大于嘴部开合度阈值时,或所述当前实现注视范围位于所述视线阈值之外超过设定时间时,确定驾驶员为危险驾驶状态。
可选地,所述视线注视模型通过下述方式训练:
获取头部姿态样本参数值;
标记各头部姿态样本参数对应的视线注视范围;
将标记有视线注视范围的头部姿态样本参数输入视线注视模型对所述视线注视模型进行训练,得到已训练的基于所述头部姿态参数值确定视线注视范围的视线注视模型。
根据本发明的另一个方面,还提供了一种车辆驾驶员危险驾驶状态识别装置,包括:
图像获取模块,配置为获取连续多帧的驾驶员面部图像;
特征提取模块,配置为将所述多帧驾驶员面部图像输入人脸关键点识别算法提取驾驶员的面部特征数据,所述面部特征数据包括头部特征点信息、眼部特征点信息和嘴特征点信息;
信息确定模块,配置为根据头部特征点信息确定驾驶员的当前头部姿态参数值;将所述当前头部姿态参数值输入已训练的视线注视模型,确定所述驾驶员的当前视线注视范围;根据所述眼部特征点信息确定当前眼睛开合程度,根据所述嘴部特征点信息确定当前嘴部开合程度;
状态确定模块,配置为根据当前眼睛开合程度、当前嘴部开合程度和所述当前视线注视范围确定驾驶员是否为危险驾驶状态;
提醒模块,配置为当所述状态确定模块确定所述驾驶员为危险状态时,输出安全驾驶提醒信息。
根据本发明的另一个方面,还提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述任意一项所述的车辆驾驶员危险驾驶状态识别方法。
根据本发明的另一个方面,还提供了一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述任意一项所述的车辆驾驶员危险驾驶状态识别方法。
本发明提供了一种更加高效的车辆驾驶员危险驾驶状态识别方法及装置,在本发明提供的方法中,通过人脸关键点识别算法可以快速对连续的多帧驾驶员面部图像进行分析以准确提取驾驶员的头部特征点信息、眼部特征点信息和嘴特征点信息的面部特征点信息,进一步地,可以基于上述数据分别确定驾驶员当前的视线注视范围、嘴部开合程度以及眼睛开合程度。另外,基于本发明提供的方法,可对驾驶员当前的视线注视范围、嘴部开合程度以及眼睛开合程度进行综合分析判断,从而能够准确并快速识别驾驶员是否处于危险驾驶状态,如果驾驶员处于危险驾驶状态,则能够进行及时输出安全驾驶提醒信息,以提醒驾驶员需要安全驾驶。另外,本发明实施例提供的方案可以在不对驾驶员的驾驶产生干扰的同时有效监测驾驶员的驾驶状态,有效提升驾驶安全。
当识别驾驶员处于危险驾驶状态时能够进行及时提醒驾驶员需要安全驾驶。另外,本发明提供的方案可以在不对驾驶员的驾驶产生干扰的同时有效监测驾驶员的驾驶状态,有效提升驾驶安全。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1示出了本发明实施例的车辆驾驶员危险驾驶状态识别方法流程示意图,参见图1可知,本发明实施例提供的车辆驾驶员危险驾驶状态识别方法可以包括:
S102,获取连续的多帧驾驶员面部图像;
S104,将上述多帧驾驶员面部图像输入人脸关键点识别算法提取驾驶员的面部特征数据,面部特征数据包括头部特征点信息、眼部特征点信息和嘴特征点信息;
S106,根据头部特征点信息确定驾驶员的当前头部姿态参数值,将当前头部姿态参数值输入已训练的视线注视模型,确定驾驶员的当前视线注视范围;
S108,根据眼部特征点信息确定驾驶员的当前眼睛开合程度;
S110,根据嘴部特征点信息确定驾驶员的当前嘴部开合程度;
S112,根据当前眼睛开合程度、当前嘴部开合程度和当前视线注视范围确定驾驶员是否为危险驾驶状态;
S114,若是,则输出安全驾驶提醒信息。
本发明实施例提供了一种更加高效的车辆驾驶员危险驾驶状态识别方法,在本发明实施例提供的车辆驾驶员危险驾驶状态识别方法中,通过人脸关键点识别算法可以快速对连续的多帧驾驶员面部图像进行分析以准确提取驾驶员的头部特征点信息、眼部特征点信息和嘴特征点信息的面部特征点信息,进一步地,可以基于上述数据分别确定驾驶员当前的视线注视范围、嘴部开合程度以及眼睛开合程度,以及综合视线注视范围、嘴部开合程度以及眼睛开合程度准确确定驾驶员是否为危险驾驶状态。
在本实施例中,危险驾驶状态主要可以分为疲劳驾驶状态和分心驾驶状态,通过驾驶员当前的视线注视范围可以判断驾驶员是否分心,而通过嘴部开合程度以及眼睛开合程度可以判断驾驶员是否疲劳。基于本发明实施例提供的方法,可对驾驶员当前的视线注视范围、嘴部开合程度以及眼睛开合程度进行综合分析判断,从而能够准确并快速识别驾驶员是否处于在疲劳或是分心状态下的危险驾驶状态。并且,如果判断出驾驶员处于危险驾驶状态,则能够及时输出安全驾驶提醒信息,以提醒驾驶员需要安全驾驶。另外,本发明实施例提供的方案可以在不对驾驶员的驾驶产生干扰的同时有效监测驾驶员的驾驶状态,有效提升驾驶安全。另外,假设上述步骤S112根据当前眼睛开合程度、当前嘴部开合程度和当前视线注视范围确定驾驶员未处于危险驾驶状态,则继续循环执行上述步骤S102~步骤S112。
本实施例中获取连续的多帧驾驶员面部图像可以通过设置于车辆内的图像采集单元如单红外摄像头进行获取,或是其他具有图像采集功能的设备进行获取,该图像采集单元可设置于车辆内部,并且位于驾驶员的前方,图像采集单元获取到驾驶员的面部图像之后,可以将其作为人脸关键点识别算法的输入数据,经过人脸关键点识别算法分析以提取包括头部特征点信息、眼部特征点信息和嘴特征点信息的驾驶员的面部特征点信息。
可选地,上述实施例提及的人脸关键点识别算法可以为DAN(Deep AlignmentNetwork:A convolutional neural network for robust face alignment,深度识别人脸关键特征点)算法。DAN算法,其包含多个阶段,每个阶段都是对上一阶段估计的人脸关键点位置进行修正。相比于其他方法,DAN在每一阶段都是使用完整的人脸图像而不是局部图像块进行特征点估计。通过使用完整的人脸图像,DAN可以对头部姿势存在较大变化和不太理想的人脸检测初始化的图像进行精确的关键点检测。
进一步地,在获取到头部特征点信息、眼部特征点信息和嘴特征点信息之后,可基于上述信息分别进行分析以确定驾驶员当前的驾驶状态。其中,通过提取的头部特征点信息可以作为识别驾驶员的视线是否覆盖在道路上的判断依据,从而判断驾驶员是否处于分心状态。通过提取的嘴部和眼部特征点信息可以作为识别驾驶员的嘴部和眼部是否闭合从而判断驾驶员是否处于疲劳状态。以下分别对头部特征点信息、眼部特征点信息和嘴特征点信息的分析过程进行详细说明。
一、头部特征点信息的分析
上述步骤S106提及,首先根据头部特征点信息确定驾驶员的当前头部姿态参数值,其次将当前头部姿态参数值输入已训练的视线注视模型,确定驾驶员的当前视线注视范围。
在本发明一可选实施例中,根据头部特征点信息确定驾驶员的当前头部姿态参数值时,可以基于位姿估计算法将头部特征点信息转换至三维空间,并计算驾驶员的当前头部姿态的欧拉角。其中,头部姿态的欧拉角即可作为驾驶员的头部姿态参数。欧拉角例如包括俯仰角pitch、偏航角yaw和翻滚角roll三个方向的角度;其中,在右手坐标系下,如图2所示,pitch围绕X轴旋转,yaw围绕Y轴旋转,roll围绕Z轴旋转。
位姿估计算法solvePnPRansac是PnP位姿估计鲁棒算法的一种,由于人脸的特征点是二维的,头部姿态是三维的,所以通过调用opencv的solvePnPRansac算法接口以将提取的二维的头部特征点转到三维空间上去,计算驾驶员头部旋转的欧拉角。在计算获取到欧拉角的头部姿态参数后,即可将当前头部姿态参数值输入已训练的视线注视模型,从而快速确定驾驶员的当前视线注视范围。其中,本实施例提及的视线注视模型可以通过下述方式训练:
S1-1、获取头部姿态样本参数值;
S1-2、标记各头部姿态样本参数对应的视线注视范围;
S1-3、将标记有视线注视范围的头部姿态样本参数输入视线注视模型对视线注视模型进行训练,得到已训练的基于头部姿态参数值确定视线注视范围的视线注视模型。
在进行视线注视模型训练前,需先进行样本数据的采集,在本实施例中,可通过眼动仪对头部姿态样本参数值进行获取,具体可以采集多个不同类型的驾驶员的头部姿态样本参数值进行获取,从而为视线注视模型的训练提供大量的训练基础,使得所训练得到的视线注视模型在实际应用中,可以根据输入的头部姿态参数准确并快速输出对应的视线注视范围。
实际应用中,可先通过PDT(Professional Digital Trunking,专业数字集群)方法来录制分心影像样本(包括正样本和负样本)用于视线注视模型。本方案实施分两步,第一步为在实验室环境下模拟驾驶员的分心驾驶数据,需要使用模拟器与眼动仪来获取数据,第二步为部署阶段,只需要在驾驶舱内且位于的驾驶位前方部署一个红外摄像头,不影响用户的正常驾驶,但是可以实时捕捉用户驾驶时面部姿态。
在建立样本集时,可录制分心场景的数据作为训练样本集。对于分心场景的样本数据采用PDT方法进行录制,尽量模拟真实场景下,智能终端使驾驶员视觉分心的操作,筛选出哪些行为会对驾驶安全造成影响。通过眼动仪可以获取驾驶员在正常驾驶和在不同任务下的视线数据(欧拉角)。
图3示出了本发明实施例的驾驶模拟实验平台结构示意图,参见图3可知,驾驶模拟实验平台主要可分为模拟器室10和操作室20,模拟器室10主要是模拟真实驾驶场景,其中包括了驾驶舱11(如车辆)、前置屏幕12以及后置屏幕13,前置屏幕12和后置屏幕13用于显示各种情况下的环境或道路信息。操作室20主要是对模拟器室10中各构件进行控制,其可以包括电源组21、设备机架22(例如各设备主机等控制设备)以及操作台23,操作台23上可放置用于实现场景控制且可与操作人员交互的终端设备,设备机架22放置终端设备的控制主机或是其他。其中,驾驶实验基于驾驶模拟实验平台,该模拟器可提供包括道路、标志、标线、车辆等运动,并在前置屏幕12和/或后置屏幕13上进行显示。
数据收集过程可以如下:
1、驾驶员在模拟舱进行场景的练习,观察驾驶员的身体是否出现恶心、呕吐等不良反应,从而实现驾驶员的筛选与模拟驾驶练习;
2、驾驶员开始模拟驾驶并完成实验内容,每个驾驶员实验任务次序为随机编排;
3、填写主观问卷,包括模拟器的感受,驾驶中出现的状况以身体的状态。
分心驾驶任务安排如下:
1、使用地图导航:输入指定地址;
2、调节收音机:请打开收音机,并将调频调制87.9MHZ后并调节收音机音量大小至自己觉得舒服的音量大小;
3、微信语音:请将耳机插入到手机并微信语音回复以下内容“我马上到xxx了,请稍等”;
4、微信短信:请回复数字你的生日日期;
5、拨打电话:请拨打小王的电话;
6、请驾驶路口请注意观察路口是否有行人经过;
7、观察左后视镜;
8、注视窗外的风景。
举例来讲,在采集视线注视模型的样本数据时,可以分析眼动仪获取,眼动仪获取的是在不同分心任务下的视线值,因此可以通过信息熵算法学习,学习出视线覆盖路面时,视线的值的范围,左右后视镜时视线的值的范围,分心任务下视线的值范围。在机器学习中,信息熵常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据。在决策树的生成过程中,就使用了熵来作为样本最优属性划分的判据。
在采集到样本数据之后,可先从样本数据中获取训练数据,将获取头部姿态样本参数值作为视线注视模型的输入数据,该头部姿态参数对应的视线注视范围作为输出数据对视线注视模型进行训练。其中,视线注视范围即驾驶员注视驾驶方向前方时的视线范围。
举例来讲,对于头部特征点,选取6个特征点(57,75,93,99,118,81),该6个特征点依次为右眼眼尾眼角、左眼眼尾眼角、右嘴角、左嘴角、鼻尖、下巴尖部对应的特征点。通过opencv的solvePnPRansac接口,可以将这上述6个二维的特征点转换到三维空间去,从而计算驾驶员头部姿态的欧拉角。可选地,使用opencv的库函数solvepnp,solvePnP函数可以求解出旋转向量,solvePnP函数输出结果包括旋转向量(roatation vector)和平移向量(translation vector),这里只关心旋转信息,所以主要将对roatation vector进行操作。
但是,上述所得到的旋转向量为3×1的形式,其输出值不是旋转矩阵为3×3的,因此,只有转换成旋转矩阵才能与Euler(欧拉)坐标进行转换(roll,yaw,pitch),故需要将旋转向量转换成旋转矩阵(vector->matrix)(向量->矩阵)。其中,yaw表示摇头,左正右负;pitch表示点头,上负下正;roll表示摆头(即歪头)左负右正。
实际应用中,可使用opencv中的cv2.Rodrigues函数将旋转向量转换成旋转矩阵,调用时,可以在python2.7中按如下方式调用:R=cv2.Rodrigues(rotation_vector)[0],再借用MATLAB中的转换代码rot2euler函数转换为欧拉坐标。
利用rot2euler函数将旋转矩阵转换欧拉坐标的程序代码表示如下:
function[euler]=Rot2Euler(R)//调用Rot2Euler函数
q0=sqrt(1+R(1,1)+R(2,2)+R(3,3))/2;
q1=(R(3,2)-R(2,3))/(4*q0);
q2=(R(1,3)-R(3,1))/(4*q0);
q3=(R(2,1)-R(1,2))/(4*q0);
yaw=asin(2*(q0*q2+q1*q3));
pitch=atan2(2*(q0*q1-q2*q3),q0*q0-q1*q1-q2*q2+q3*q3;
roll=atan2(2*(q0*q3-q1*q2),q0*q0+q1*q1-q2*q2-q3*q3);
euler=[pitch,yaw,roll]
其中,R表示3×3旋转矩阵,上述代码中,先利用旋转矩阵转化成四元数q(q0,q1,q2,q3),再基于四元数q转换成欧拉角(roll,yaw,pitch)。
二、眼部特征点信息的分析
步骤S108提及,可根据眼部特征点信息确定当前眼睛开合程度。具体地,首先,对眼部特征点信息进行仿射变换,使眼部特征点信息对准预设的标准眼部形状,拟合出驾驶员的眼部形状轮廓线;其次,根据眼部形状轮廓线计算上眼轮廓线的第一曲率以及眼部上眼睑和眼部下眼睑的第一最远距离;最后,基于第一曲率和第一最远距离计算当前眼睛开合程度。
由于人的眼部的形状是近似于抛物线的形状,因此,可以通过抛物线曲线拟合出驾驶员的眼部(左眼和右眼)形状。
举例来讲,可先将驾驶员的眼睛特征点进行仿射变换。仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。通过将驾驶员的眼睛特征点进行仿射变换,使驾驶员的眼睛对准标准的眼睛形状,并且通过抛物线拟合上眼睑的特征点,并计算上眼睑的抛物线的曲率,以及上、下眼睑之间的最远距离。其中,下眼睑的形状可与上眼睑的抛物线呈对称设置,计算上、下眼睑之间的第一最远距离时,可基于驾驶员眼部特征点计算获得,如位于上、下眼睑抛物线的顶点的特征点之间的距离。
在本实施例中,基于第一曲率和第一最远距离计算驾驶员眼部的眼部开合程度,可将第一曲率和第一最远距离相乘后开根号作为眼部开合程度的值,并对数据进行归一化计算,使眼部开合程度的值处于范围[0,1]之间。可选地,本实施例中,0-1可表示眼睛的张开程度的变化区间,0认为是闭眼,值越大,眼镜张开的程度越大。
三、嘴部开合特征点信息的分析
步骤S110提及,根据嘴部开合特征点信息确定当前嘴部程度时,可以包括:首先,对嘴部特征点信息进行仿射变换,使嘴部特征点信息对准预设的标准嘴部形状,拟合出驾驶员的嘴部形状轮廓线;其次,根据嘴部形状轮廓线计算上嘴唇轮廓线的第二曲率以及嘴部上嘴唇和嘴部下嘴唇的第二最远距离;最后,基于第二曲率和第二最远距离计算驾驶员的当前嘴部开合程度。
同样地,由于人的嘴部的形状是近似于抛物线的形状,因此,可以通过抛物线曲线拟合出驾驶员的嘴部(上嘴唇和下嘴唇)形状。
也就是说,对嘴部特征点可先进行仿射变换,使其对准标准的嘴部形状,通过抛物线拟合上嘴唇的特征点,并计算上嘴唇抛物线的第二曲率,计算上、下嘴唇的特征点的第二最远距离。第二曲率和第二最远距离相乘开根号作为驾驶员嘴唇的嘴部开合程度的值,并对数据进行归一化计算,使嘴巴开合度的值处于范围[0,1]之间。
参见上述步骤S112,在确定出驾驶员的眼睛开合程度、当前嘴部开合程度和当前视线注视范围之后,即可根据当前眼睛开合程度、当前嘴部开合程度和当前视线注视范围确定驾驶员是否为危险驾驶状态。在本发明可选实施例中,上述步骤S112可以包括:
S2-1、将当前眼睛开合程度与眼睛开合度阈值进行比较。
S2-2、将当前嘴部开合程度与嘴部开合度阈值进行比较。
S2-3、将当前视线注视范围与覆盖路面时的视线阈值比较。
S2-4、当判断出眼睛开合程度小于眼睛开合度阈值或者嘴部开合程度大于嘴部开合度阈值时,且当前实现注视范围位于视线阈值之外超过设定时间时,确定驾驶员为危险驾驶状态。
结合前文,在比较前可先通过信息熵计算眼睛不同状态下的阈值,因此,在通过计算后得出的当前眼部开合程度与眼睛处于不同疲劳程度下的阈值进行比较,以判定驾驶员的状态。例如,可以预先设定眼部开合度阈值,通过当前眼部开合程度与该眼部开合度阈值进行比较,当眼部开合程度超出眼部开合度阈值范围,可结合嘴部开合度综合识别出驾驶员是否处于疲劳驾驶状态。另外,实际应用中,驾驶员的疲劳驾驶状态可分为轻度疲劳、中度疲劳、重度疲劳,因此,对于不同的疲劳状态可设定不同的阈值,通过将眼部开合程度与不同的阈值进行比较以确定驾驶员的疲劳状态,当然,还可以通过其他方式进行判定,本发明不做限定。
另外,还可以通过信息熵计算嘴巴正常状态的嘴部开合度阈值与打哈欠时候的疲劳阈值,在当前嘴部部开合程度超出嘴部开合度阈值的范围即可结合眼部开合程度综合判断驾驶员是否进入疲劳状态。而对于驾驶员打哈欠时基于嘴部判断驾驶员的疲劳状态可划分为轻微疲劳、重度疲劳和重度疲劳,对于每一个疲劳程度可以设定不同的开合度阈值,从而在计算出驾驶员当前的嘴部开合程度时,可与预设的不同的疲劳程度下的值进行比较,从而确定出驾驶员的疲劳程度。当然,实际应用中,还可以结合驾驶员的嘴部开合程度在一定时间段内处于不同阈值的频次进行判断,本发明不做限定。
上文介绍,危险驾驶中的疲劳状态还可以划分为轻度疲劳、中度疲劳、重度疲劳。实际应用中,还可以为分心状态以及不同程度的疲劳状态设定报警规则。例如,当驾驶员出现分心或者疲劳程度为中度或者重度疲劳的时候开始告警,当驾驶员的疲劳程度为轻度疲劳的时候则统计一定时间(如十分钟)内轻度疲劳的时间占比,若占比超过一定比例(如60%)则开始报警。报警类型可以为语音提示报警或是警示音提示报警,或是通过其他方式报警,具体可根据不同的需求进行设置,本发明不做限定。
前文介绍,进行嘴部特征点信息和眼部特征点信息进行分析时,可预先设置嘴部开合度阈值、眼部开合度阈值。而对于上述所记载的嘴部开合度阈值、眼部开合度阈值以及视线阈值需要基于大量的驾驶员的实际驾驶状态的相关数据进行数据学习之后获得。因此,在本发明一可选实施例中,上述步骤S102之前还可以包括:收集驾驶员在不同驾驶状态下的样本数据集;样本数据集包括以下至少之一:在正常驾驶状态下和不同疲劳程度的疲劳驾驶状态下的眼部数据、在正常驾驶状态下和不同疲劳程度的疲劳驾驶状态下的嘴部数据,进而基于上述数据确定出合理的嘴部开合度阈值以及眼部开合度阈值。
举例来讲,对于嘴部特征点信息来讲,可以预先获取不打哈欠的时候嘴巴张开度的值,打哈欠的时候嘴巴张开度的值,可以做为正负样本,使用信息熵算法既可以算法嘴巴张开度的阈值。基于此,可实现对眼睛开合度阈值的学习以及嘴巴开合度阈值的学习。
基于本发明实施例提供的方案,基于驾驶模拟实验平台模拟不同状态下驾驶员的状态参数可以为后续驾驶员的驾驶状态的学习提供大量的样本数据,从而后续可以更加高效率且更加准确地基于驾驶员的当前的面部特征数据获取到驾驶员当前视线注视范围、眼睛开成程度以及嘴部开合程度。
基于同一发明构思,本发明实施例还提供了一种车辆驾驶员危险驾驶状态识别装置400,如图4所示,车辆驾驶员危险驾驶状态识别装置400可以包括:
图像获取模块410,配置为获取连续多帧的驾驶员面部图像;
特征提取模块420,配置为将多帧驾驶员面部图像输入人脸关键点识别算法提取驾驶员的面部特征数据,面部特征数据包括头部特征点信息、眼部特征点信息和嘴特征点信息;
信息确定模块430,配置为根据头部特征点信息确定驾驶员的当前头部姿态参数值;将当前头部姿态参数值输入已训练的视线注视模型,确定驾驶员的当前视线注视范围;根据眼部特征点信息确定当前眼睛开合程度,根据嘴部特征点信息确定当前嘴部开合程度;
状态确定模块440,配置为根据当前眼睛开合程度、当前嘴部开合程度和当前视线注视范围确定驾驶员是否为危险驾驶状态;
提醒模块450,配置为当状态确定模块确定驾驶员为危险状态时,输出安全驾驶提醒信息。
在本发明一可选实施例中,信息确定模块430,还可以配置为:
基于位姿估计算法将头部特征点信息转换至三维空间,并计算驾驶员的当前头部姿态的欧拉角。
在本发明一可选实施例中,信息确定模块430,还可以配置为:
对眼部特征点信息进行仿射变换,使眼部特征点信息对准预设的标准眼部形状,拟合出驾驶员的眼部形状轮廓线;
根据眼部形状轮廓线计算上眼轮廓线的第一曲率以及眼部上眼睑和眼部下眼睑的第一最远距离;
基于第一曲率和第一最远距离计算当前眼睛开合程度。
在本发明一可选实施例中,信息确定模块430,还可以配置为:
对嘴部特征点信息进行仿射变换,使嘴部特征点信息对准预设的标准嘴部形状,拟合出驾驶员的嘴部形状轮廓线;
根据嘴部形状轮廓线计算上嘴唇轮廓线的第二曲率以及嘴部上嘴唇和嘴部下嘴唇的第二最远距离;
基于第二曲率和第二最远距离计算驾驶员的当前嘴部开合程度。
在本发明一可选实施例中,状态确定模块440还可以配置为:
将当前眼睛开合程度与眼睛开合度阈值进行比较;
将当前嘴部开合程度与嘴部开合度阈值进行比较;
将当前视线注视范围与覆盖路面时的视线阈值比较;
当判断出眼睛开合程度小于眼睛开合度阈值且嘴部开合程度大于嘴部开合度阈值时,或当前实现注视范围位于视线阈值之外超过设定时间时,确定驾驶员为危险驾驶状态。
在本发明一可选实施例中,如图5所示,上述装置还可以包括:
训练模块460,配置为获取头部姿态样本参数值;
标记各头部姿态样本参数对应的视线注视范围;
将标记有视线注视范围的头部姿态样本参数输入视线注视模型对视线注视模型进行训练,得到已训练的基于头部姿态参数值确定视线注视范围的视线注视模型。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,其特征在于,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述任意一实施例的车辆驾驶员危险驾驶状态识别方法。
基于同一发明构思,本发明实施例还提供了一种电子设备,其特征在于,包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述任意一实施例的车辆驾驶员危险驾驶状态识别方法。
本发明实施例提供了一种更加高效的车辆驾驶员危险驾驶状态识别方法及装置,在本发明实施例提供的车辆驾驶员危险驾驶状态识别方法中,通过人脸关键点识别算法可以快速对连续的多帧驾驶员面部图像进行分析以准确提取驾驶员的头部特征点信息、眼部特征点信息和嘴特征点信息的面部特征点信息,进一步地,可以基于上述数据分别确定驾驶员当前的视线注视范围、嘴部开合程度以及眼睛开合程度。另外,基于本发明实施例提供的方法,可对驾驶员当前的视线注视范围、嘴部开合程度以及眼睛开合程度进行综合分析判断,从而能够准确并快速识别驾驶员是否处于危险驾驶状态,如果驾驶员处于危险驾驶状态,则能够进行及时输出安全驾驶提醒信息,以提醒驾驶员需要安全驾驶。另外,本发明实施例提供的方案可以在不对驾驶员的驾驶产生干扰的同时有效监测驾驶员的驾驶状态,有效提升驾驶安全。
进一步地,基于本发明实施例提供的方案,基于驾驶模拟实验平台模拟不同状态下驾驶员的状态参数为驾驶状态识别模型的训练提供大量的样本数据,从而使得驾驶状态识别模型的识别效率以及识别准确度更高。
所属领域的技术人员可以清楚地了解到,上述描述的系统具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
本领域普通技术人员可以理解:上述的方法如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行指令时执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,程序指令可以存储于一计算机可读取存储介质中,当程序指令被计算设备的处理器执行时,计算设备执行本发明各实施例方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。