1.本发明涉及行车安全技术领域,更具体的说是涉及一种驾驶员状态的监测方法、系统及可读存储介质。
背景技术:2.随着汽车普及化程度越来越高,在人-车-路环境系统中,驾驶员因素是导致道路交通事故发生的主因。近年来,由于驾驶员生理和心理机能的失衡,失去行动力等导致车辆瞬间失控造成严重交通事故的事件更是屡见不鲜。
3.现有技术中,利用安装于车辆上的各种智能终端,完成探测报警、驾驶员疲劳检测预警、驾驶行为分析、车载视频监控等功能,以辅助车辆行车安全。但这些技术仅针对于驾驶员出现假性失能的可被唤醒的状态情况进行检测预警,并没有针对驾驶员出现的真性失能的不可唤醒状态进行检测和预警,因此会造成误判现象,对驾驶员的正常行驶产生影响,不利于行车安全。
4.因此,如何提供一种驾驶员状态的监测方法、系统及可读存储介质是本领域技术人员亟需解决的问题。
技术实现要素:5.有鉴于此,本发明提供了一种驾驶员状态的监测方法、系统及可读存储介质,通过采集驾驶员的人脸图像,实现实时检测驾驶员的失能情况,防止驾驶员因出现失能情况而发生事故的同时,不会对驾驶员的正常行驶产生影响。
6.为了实现上述目的,本发明提供如下技术方案:一方面,本发明提供了一种驾驶员状态的监测方法,包括以下步骤:人脸识别:对人脸roi区域进行监测,实时获取带有驾驶员脸部信息的图像;眼部状态监测:构建眼部监测网络模型,根据所述眼部监测网络模型提取所述图像中的眼部特征,根据所述眼部特征计算平均闭眼时长,并根据平均闭眼时长判断驾驶员是否处于失能状态;头部姿态监测:构建头部姿态网络模型,根据所述头部姿态网络模型对所述图像中的头部姿态信息进行预处理,得到头部姿态欧拉角,并根据所述头部姿态欧拉角以及所述头部姿态欧拉角的持续时间判断驾驶员是否处于失能状态;方向盘动态监测:检测方向盘动态数据,并根据所述方向盘动态数据判断驾驶员是否处于失能状态。
7.优选的,所述对人脸roi区域进行监测,实时获取带有驾驶员脸部信息的图像的过程包括:对人脸roi区域进行监测,将实时监测的视频以多帧图像进行录入,以及将实时监测的视频进行云备份处理。
8.优选的,所述眼部状态检监测的过程包括:
采集带有驾驶员脸部信息的图像得到人脸数据集并输出图像信息集;读取所述图像信息集中的图像信息,并将所述图像信息进行剪裁处理,得到样本数据;搭建cnn卷积神经网络模型,基于样本数据对所述cnn卷积神经网络模型进行训练及测试,得到眼部监测网络模型;将实时获取的带有驾驶员脸部信息的图像输入至所述眼部监测网络模型,得到闭眼状态参量;根据所述闭眼状态参量,利用眼睑闭合度的p80准则,设定t0至t5为一个闭眼周期,t0至t1为第一段睁眼所需时间,t1至t2为第二段睁眼所需时间,t3至t4为第三段睁眼所需时间,t
4-t5为第四段睁眼所需时间,计算闭眼周期的眼睑闭合度:计算闭眼时长:计算在一个闭眼周期内的眼睑闭合度值:计算平均闭眼时长:式中,t为一个闭眼周期内的时长,n为闭眼周期个数,为第个闭眼周期内眼睑覆盖瞳孔的比例超过80%的时间,其中i《n;判断平均闭眼时长是否超过预设阈值,若是,则判断驾驶员为失能状态。
9.优选的,所述头部姿态监测的过程包括:构建头部姿态网络模型;根据所述头部姿态网络模型提取所述带有驾驶员脸部信息的图像中驾驶员的2d人脸的关键点,并将所述关键点与3d人脸模型匹配,得到3d空间的人脸关键点通用坐标;计算3d空间的关键点通用坐标映射到2d人脸的关键点的旋转矩阵rot_vector;将旋转矩阵rot_vector转化为空间坐标系中俯仰角α、偏航角θ、翻滚角γ,得到驾驶员头部姿态欧拉角;判断驾驶员头部姿态欧拉角最大值是否大于等于预设阈值,且持续时间超过预设阈值,若是,则判断驾驶员为失能状态。
10.优选的,所述构建头部姿态网络模型,包括:将实时获取的所述带有驾驶员脸部信息的图像输入至头部姿态网络模型中,输出处理后的驾驶员特征图矩阵,如下:将实时获取的所述带有驾驶员脸部信息的图像输入至头部姿态网络模型中,输出
处理后的驾驶员特征图矩阵,如下: ;式中,为输入图像的像素矩阵中的某i行j列元素,为滤波器参数,b为偏置,为输出特征图矩阵参数;根据特征图矩阵得到所述头部姿态网络模型的相关参数,具体表达式为:其中,a表示权重,b表示偏置;,,表示第m+1层的卷积输出值,第m+1层的卷积输入值,表示池化模型, 对应特征图的像素,n为特征图的通道数,m为输出特征图尺寸,m为第m层卷积层,n为第n个卷积层,f为头部姿态网络模型对应卷积核,为头部姿态网络模型对应卷积步长,p为头部姿态网络模型对应填充层数。其中,本模型中f=3, s0=5, p=0。
11.优选的,所述将旋转矩阵rot_vector转化为空间坐标系中俯仰角α、偏航角θ、翻滚角γ,得到驾驶员头部姿态欧拉角包括:将旋转矩阵rot_vector转化为四元数,将四元数转化为欧拉角;设定(x,y,z)是轴方向的单位向量,β是绕轴转过的角度,四元数表示为:得到驾驶员头部姿态欧拉角(α,θ,γ),具体表达式为:
式中,,β为绕轴转过的角度,x,y,z为轴方向的单位向量,为自定义的变量。
12.优选的,所述方向盘动态监测,具体过程包括:获取方向盘动态数据;根据方向盘动态数据计算方向盘的角输入信息,具体表达式为:式中,t1:驾驶员作用在方向盘上的转向力矩;t2:扭矩传感器的输出值;js:方向盘转动惯量;cs:方向盘阻尼;ks:方向盘刚度;:方向盘转角根据方向盘动态数据计算方向盘力输入信息,具体表达式为:式中,c2:扭转杆阻尼;k2:扭转杆刚度;:扭矩传感器下端转向柱转角(转动轴转动时形成的夹角)若方向盘角输入在10秒内方向盘最大转角小于10度且方向盘力矩输入小于0.5nm,则判断驾驶员处于失能状态,需立即预警。
13.优选的,若驾驶员处于失能状态,则执行自动唤醒,并实时进行自适应巡航以及车道保持操作;判断自动唤醒时长是否达到预设阈值,若是,判定自动唤醒失败,并进行定位及上报。
14.另一方面,本发明提供了一种驾驶员状态的监测系统,包括:图像采集模块,用于对人脸roi区域进行监测,实时获取带有驾驶员脸部信息的图像;眼部状态监测模块,与所述图像采集模块连接,用于构建眼部监测网络模型,根据所述眼部监测网络模型提取所述图像中的眼部特征,根据所述眼部特征计算平均闭眼时长,并根据平均闭眼时长判断驾驶员状态;头部姿态监测模块,与所述图像采集模块连接,用于构建头部姿态网络模型,根据所述头部姿态网络模型对所述图像中的头部姿态信息进行预处理,得到头部姿态欧拉角,并根据所述头部姿态欧拉角以及所述头部姿态欧拉角的持续时间判断驾驶员状态;方向盘动态监测模块,用于检测方向盘动态,并根据所述方向盘动态判断驾驶员是否处于失能状态;自动唤醒模块,分别与所述眼部状态监测模块、所述头部姿态监测模块以及所述方向盘动态监测模块连接,用于若驾驶员处于失能状态,则执行自动唤醒,并实时进行自适应巡航以及车道保持操作;判断模块,与所述自动唤醒模块连接,用于判断自动唤醒时长是否达到预设阈值,若是,判定自动唤醒失败,并进行定位及上报。
15.再一方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如上述的监
测方法的步骤。
16.经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种驾驶员状态的监测方法、系统及可读存储介质,本发明通过安装于驾驶员正前方的深度相机对驾驶员失能状态进行实时监测。本发明具有占用内存小、计算效率高、算力要求低特点,并且可直接安装于车辆终端,成本低廉,同时,车端系统无需调用云服务器算力,不受通信延迟或丢包影响而具有边缘计算的高效特点。其次,本发明通过判定驾驶员眼部状态、头部姿态或方向盘角输入和力输入中的任意一种来监测驾驶员的状态,从而提高了监测灵敏度及准确性,防止驾驶员因出现失能情况而发生事故的同时,不会对驾驶员的正常行驶产生影响。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
18.图1为本发明提供的驾驶员状态的监测方法的流程示意图;图2为本发明实施例提供的驾驶员状态的监测系统结构示意图。
具体实施方式
19.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.参见附图1所示,本发明实施例公开了一种驾驶员状态的监测方法、系统及可读存储介质,包括:人脸识别:对人脸roi区域进行监测,实时获取带有驾驶员脸部信息的图像;眼部状态监测:构建眼部监测网络模型,根据眼部监测网络模型提取图像中的眼部特征,根据眼部特征计算平均闭眼时长,并根据平均闭眼时长判断驾驶员是否处于失能状态;头部姿态监测:构建头部姿态网络模型,根据头部姿态网络模型对图像中的头部姿态信息进行预处理,得到头部姿态欧拉角,并根据头部姿态欧拉角以及头部姿态欧拉角的持续时间判断驾驶员是否处于失能状态;方向盘动态监测:检测方向盘动态数据,并根据方向盘动态数据判断驾驶员是否处于失能状态。
21.在一个具体实施例中,通过安装在驾驶员正前方的深度相机对人脸进行识别,通过调用深度相机,将实时监测视频以每分钟114帧录入,同时将采集的视频进行云备份释放内存。
22.在一个具体实施例中,构建眼部监测网络模型,监测驾驶员的睁闭眼状态,包括:(1)制作人脸数据集,搭建关于数据集的csv文件,将每张图像的存储位置以及睁眼闭眼状态的信息全部随机输出。
23.(2)制作dataset,将读取的图像进行剪裁处理。每四张图像以3*128*128的三维神经元形式输出。
24.具体的,dataset是不依赖于数据库的独立数据集合,可将数据和架构以xml形式进行读写,并作为dataloader的参数输入,进一步实现基于tensor的数据预处理。
25.(3)根据不同车型,驾驶员的不同姿态采集正样本集(驾驶员闭眼以及未检测到人脸)、负样本集(驾驶员 正常驾驶状态)各1000张,为保证好的训练效果,经后期数据增强,达5000张图像作为训练集样本。
26.在训练集中,本发明抽取采集到图片的80%作为训练对象,使用损失函数来表现模型预测值和真实值之间的差距程度,将每一次迭代后准确率最好的一次的网络权重保存在眼部监测网络模型共享的weights_mymodel.mdl中。
27.在测试集中,通过引用relu激活函数避免模型出现过拟合,交叉熵损失函数以及归一化指数函数softmax做归一化处理,将信息录入的驾驶员图像样本集与训练集进行拟合,实现边信息录入边测试,最后通过拟合度概率值来判断驾驶员眼部的状态。
28.(4)信息录入后处理送入眼部监测网络模型,以此来判断驾驶员状态。
29.具体的,判断驾驶员眼部状态包括:睁眼状态以及闭眼状态;更具体的,睁眼状态用1表示,闭眼状态用0表示。
30.利用眼睑闭合度perclos原理的p80准则:瞳孔被眼睑覆盖超过80%的面积,则认为眼睛是闭合的。当一定时间间隔内眼睛闭合所占的时间比例超过15%时即认为是失能状态。
31.具体的,眼睛闭合的频率以及闭合时间的长短与失能有密切联系,如果连续监测到驾驶员的perclos》30%且平均闭眼时长》0.25s,就判定驾驶员处于失能状态,并发出报警。
32.设定t0到t5为一个闭眼周期,t
0-t1为完全睁眼到睁眼80%的时间,t
1-t2为睁眼80%到睁眼20%的时间,t
3-t4为睁眼20%到睁眼80%所需时间,t
4-t5为睁眼80%到完全睁眼所需时间。
33.计算闭眼周期的眼睑闭合度perclos:计算闭眼时长:计算在实验时长为1-2min内的perclos值及平均闭眼时长:计算平均闭眼时长:式中,t为实验时长 ,n为闭眼周期个数,第个闭眼周期内眼睑覆盖瞳孔的比例
超过80%的时间为 ,(i《n )。
34.当平均闭眼时长t超过了选定的阈值(本发明实施例为5秒以上,该阈值可调),则判定驾驶员为失能状态。
35.在一个具体实施例中,头部姿态监测包括:(1)构建头部姿态网络模型,包括:将实时获取带有驾驶员脸部信息的图像输入至建头部姿态网络模型中,输出处理后的驾驶员特征图矩阵,如下:式中,为输入图像的像素矩阵中的某i行j列元素,为滤波器参数,b为bias参数,表示偏置,为输出特征图矩阵参数;;具体的,上式表示输入的图像矩阵经卷积后输出的图像矩阵;其中,a表示权重,b表示偏置,,,表示第m+1层的卷积输出值,第m+1层的卷积输入值,表示lp池化模型, 对应特征图的像素,n为特征图的通道数,m为输出特征图尺寸,m为第m层卷积层,n为第n个卷积层,f为头部姿态网络模型对应卷积核,为头部姿态网络模型对应卷积步长,p为头部姿态网络模型对应填充层数。
36.具体的,本发明实施例的头部姿态网络模型中f=3,=5,p=0。
37.具体的,通过头部姿态模型对驾驶员人像的2d人脸的68个关键点检测,与3d人脸模型匹配:首先获取最大人脸,然后匹配几个关键点坐标将人脸对齐,接着匹配其余关键点,得到初始的人脸68个关键点标定,再用68个关键点坐标修正初始的标定坐标,迭代直至收敛;
具体的,以下68个关键点通用坐标,通过大量的训练得出的的符合大多数人的面部轮廓的点的坐标:[-73.393523,
ꢀ‑
29.801432,
ꢀ‑
47.667532],[-72.775014,
ꢀ‑
10.949766,
ꢀ‑
45.909403],[-70.533638, 7.929818,
ꢀ‑
44.84258 ],[-66.850058,26.07428 ,
ꢀ‑
43.141114],[-59.790187,42.56439 ,
ꢀ‑
38.635298],[-48.368973,56.48108 ,
ꢀ‑
30.750622],[-34.121101,67.246992,
ꢀ‑
18.456453],[-17.875411,75.056892,-3.609035],[0.098749,77.061286, 0.881698],[ 17.477031,74.758448,-5.181201],[ 32.648966,66.929021,
ꢀ‑
19.176563],[ 46.372358,56.311389,
ꢀ‑
30.77057 ],[ 57.34348 ,42.419126,
ꢀ‑
37.628629],[ 64.388482,25.45588 ,
ꢀ‑
40.886309],[ 68.212038, 6.990805,
ꢀ‑
42.281449],[ 70.486405,
ꢀ‑
11.666193,
ꢀ‑
44.142567],[ 71.375822,
ꢀ‑
30.365191,
ꢀ‑
47.140426],[-61.119406,
ꢀ‑
49.361602,
ꢀ‑
14.254422],[-51.287588,
ꢀ‑
58.769795,-7.268147],[-37.8048,
ꢀ‑
61.996155,-0.442051],[-24.022754,
ꢀ‑
61.033399, 6.606501],[-11.635713,
ꢀ‑
56.686759,11.967398],[ 12.056636,
ꢀ‑
57.391033,12.051204],[ 25.106256,
ꢀ‑
61.902186, 7.315098],[ 38.338588,
ꢀ‑
62.777713, 1.022953],[ 51.191007,
ꢀ‑
59.302347,-5.349435],[ 60.053851,
ꢀ‑
50.190255,
ꢀ‑
11.615746],[0.65394 ,
ꢀ‑
42.19379 ,13.380835],[0.804809,
ꢀ‑
30.993721,21.150853],[0.992204,
ꢀ‑
19.944596,29.284036],[1.226783,-8.414541,36.94806 ],[-14.772472, 2.598255,20.132003],[
ꢀ‑
7.180239, 4.751589,23.536684],[0.55592 , 6.5629,25.944448],[8.272499, 4.661005,23.695741],[ 15.214351, 2.643046,20.858157],[-46.04729 ,
ꢀ‑
37.471411,-7.037989],
[-37.674688,
ꢀ‑
42.73051 ,-3.021217],[-27.883856,
ꢀ‑
42.711517,-1.353629],[-19.648268,
ꢀ‑
36.754742, 0.111088],[-28.272965,
ꢀ‑
35.134493, 0.147273],[-38.082418,
ꢀ‑
34.919043,-1.476612],[ 19.265868,
ꢀ‑
37.032306, 0.665746],[ 27.894191,
ꢀ‑
43.342445,-0.24766 ],[ 37.437529,
ꢀ‑
43.110822,-1.696435],[ 45.170805,
ꢀ‑
38.086515,-4.894163],[ 38.196454,
ꢀ‑
35.532024,-0.282961],[ 28.764989,
ꢀ‑
35.484289, 1.172675],[-28.916267,28.612716, 2.24031 ],[-17.533194,22.172187,15.934335],[
ꢀ‑
6.68459 ,19.029051,22.611355],[0.381001,20.721118,23.748437],[8.375443,19.03546 ,22.721995],[ 18.876618,22.394109,15.610679],[ 28.794412,28.079924, 3.217393],[ 19.057574,36.298248,14.987997],[8.956375,39.634575,22.554245],[0.381549,40.395647,23.591626],[
ꢀ‑
7.428895,39.836405,22.406106],[-18.160634,36.677899,15.121907],[-24.37749 ,28.677771, 4.785684],[-6.897633,25.475976,20.893742],[0.340663,26.014269,22.220479],[8.444722,25.326198,21.02552 ],[ 24.474473,28.323008, 5.712776],[8.449166,30.596216,20.671489],[0.205322,31.408738,21.90367 ],[
ꢀ‑
7.198266,30.844876,20.328022]])(2)计算68个头部关键点的3d点映射的2d点的旋转矩阵rot_vector;(3)将旋转矩阵rot_vector转化为空间坐标系中俯仰角α、偏航角θ、翻滚角γ;设定(x,y,z)是轴方向的单位向量,β是绕轴转过的角度,四元数表示为:得到驾驶员头部姿态欧拉角(α,θ,γ):
式中,l=,β为绕轴转过的角度,x,y,z为轴方向的单位向量,α,θ,γ为驾驶员头部姿态欧拉角。
[0038]
转化结果如下所述:其中,translation vector代表旋转矩阵,used_time代表使用时间,pitch、yaw、roll代表计算出的俯仰角、偏航角、翻滚角的弧度值,x、y、z代表计算出的俯仰角α、偏航角θ、翻滚角γ的角度值;(4)计算欧拉角,监测一段时间内α、θ、γ是否大于阈值20度(此阈值可调)且保持5~10s来判断驾驶员状态。
[0039]
在一个具体实施例中,方向盘动态监测,包括检测方向盘的角输入与力输入:(1)计算方向盘动态即方向盘的角输入:(2)计算扭矩传感即方向盘的力输入:对方向盘进行判定,检测转向盘角输入与力输入是否小于阈值10
°
(此阈值可调)或无输入来判定驾驶员是否处于失能状态。
[0040]
在一个具体实施例中,根据驾驶员的平均闭眼时长、头部姿态或方向盘的角输入及力输入任一种信息判断该驾驶员是否处于失能状态。
[0041]
在一个具体实施例中,若驾驶员处于失能状态,则执行自动唤醒,并实时进行自适应巡航以及车道保持操作;判断自动唤醒时长是否达到预设阈值,若是,判定自动唤醒失败,并进行定位及上报。
[0042]
另一方面,参见附图2所示,本发明实施例还公开了一种驾驶员状态的监测系统,包括:图像采集模块,用于对人脸roi区域进行监测,实时获取带有驾驶员脸部信息的图像;
眼部状态监测模块,与图像采集模块连接,用于构建眼部监测网络模型,根据眼部监测网络模型提取图像中的眼部特征,根据眼部特征计算平均闭眼时长,并根据平均闭眼时长判断驾驶员状态;头部姿态监测模块,与图像采集模块连接,用于构建头部姿态网络模型,根据头部姿态网络模型对图像中的头部姿态信息进行预处理,得到头部姿态欧拉角,并根据头部姿态欧拉角以及头部姿态欧拉角的持续时间判断驾驶员状态;方向盘动态监测模块,用于检测方向盘动态,并根据方向盘动态判断驾驶员是否处于失能状态;自动唤醒模块,分别与眼部状态监测模块、头部姿态监测模块以及方向盘动态监测模块连接,用于若驾驶员处于失能状态,则执行自动唤醒,并实时进行自适应巡航以及车道保持操作;判断模块,与自动唤醒模块连接,用于判断自动唤醒时长是否达到预设阈值,若是,判定自动唤醒失败,并进行定位及上报。
[0043]
具体的,图像采集模块为通过安装于驾驶员正前方的深度相机。
[0044]
再一方面,本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质存储有计算机可读指令,计算机可读指令被处理器执行时实现如上述的监测方法的步骤。
[0045]
在本发明中,通过安装于驾驶员正前方的深度相机对进行驾驶员肩颈以上的数据采集,并对驾驶员失能进行判断。若判定驾驶员处于非正常状态(闭眼持续超过5秒、头部姿态持续异常超过5秒、方向盘没有角输入和力输入超过10秒)中的任意一种,将触发唤醒模式(声光报警、方向盘及座椅震动等)对驾驶员进行紧急唤醒操作。在规定时间阈值内(默认为20s,可按需调整),若唤醒驾驶员成功,则系统持续对驾驶员进行失能监测;若唤醒失败,则表明驾驶员已处于真性失能状态,此时车辆决策系统将立刻调用车辆上预制的报警、定位、信息上报及其他应急响应等模块功能。此驾驶员状态监测系统发明占用内存小、计算效率高、算力要求低,可直接安装于车辆终端,成本低廉;同时,车端系统无需调用云服务器算力,不受通信延迟或丢包影响而具有边缘计算的高效特点。
[0046]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0047]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。