一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于人脸关键点检测的疲劳驾驶监测方法、系统及设备与流程

2022-08-13 18:16:59 来源:中国专利 TAG:


1.本发明涉及计算机视觉技术领域,特别涉及一种基于人脸关键点检测的疲劳驾驶监测方法、系统及设备。


背景技术:

2.疲劳驾驶是指驾驶员在长时间驾驶车辆后,产生生理机能和心理机能的失调,从而在客观上出现驾驶技能下降、危险判断迟缓的现象。
3.疲劳驾驶在人脸上主要表现为闭眼和打哈欠。目前,监测疲劳驾驶的主要方法是使用深度学习模型直接对眼部的闭眼情况以及嘴部打哈欠的情况。但由于不同人的眼部大小、嘴部大小存在差异,直接对眼部的闭眼情况或嘴部打哈欠的情况进行监测容易出现误判,并且在人脸被遮挡的情况下无法进行进行监测容易出现漏判,导致监测疲劳驾驶的准确率较低。
4.另外,在监测疲劳驾驶时,还可以使用人脸关键点检测技术辅助定位眼部、嘴部等需要监测的部位,使获取的部位信息更加精确。但使用人脸关键点检测技术对硬件要求高,不仅实现方法复杂,而且需要另外的检测时间,难以满足在驾驶员的驾驶过程中实时监测的要求。


技术实现要素:

5.本发明要解决的技术问题是为了克服现有技术中由于个体因素差异、环境因素影响,导致的监测疲劳驾驶准确率较低的缺陷,提供一种基于人脸关键点检测的疲劳驾驶监测方法、系统及设备。
6.本发明是通过下述技术方案来解决上述技术问题。
7.第一方面,本发明提供一种基于人脸关键点检测的疲劳驾驶监测方法,所述方法包括:获取目标驾驶员目标部位的标准值,其中所述标准值表征所述目标驾驶员正常驾驶时所述目标部位的张合程度;获取所述目标驾驶员的待测人脸图像;获取所述待测人脸图像中所述目标部位的检测值,其中所述检测值表征在所述待测人脸图像中所述目标部位的张合程度;比对所述目标部位的检测值与标准值,若两者相差超过设定阈值,判定所述目标部位处于第一状态;记录所述目标部位处于所述第一状态的持续时长,若所述持续时长超过预设时长,判定所述目标驾驶员疲劳驾驶。
8.较佳地,所述获取目标驾驶员目标部位的标准值的步骤具体包括:获取目标驾驶员的初始人脸图像,其中所述初始人脸图像为检测到所述目标驾驶员进入驾驶位后驾驶车辆行驶设定时间或设定距离内采集到所述目标驾驶员的人脸图像;获取所述目标部位的标准值范围,其中所述标准值范围表征正常驾驶时所述目标部位的张合程度上下限;获取所述初始人脸图像中目标部位的初始标准值;判断所述初始标准值是否符合所述标准值范围,若不符合则重新获取所述初始人脸图像,直至所述初始标准值符合所述标准值范围,将所述初始标准值作为所述目标部位的标准值。
9.较佳地,所述疲劳驾驶监测方法还包括通过以下步骤获取所述目标部位的标准值、检测值或初始标准值:获取所述目标部位的宽度关键点和高度关键点,根据所述宽度关键点之间的距离计算所述目标部位的宽度,根据所述高度关键点之间的距离计算所述目标部位的高度,所述宽度与所述高度的比值作为所述目标部位的标准值、检测值或初始标准值。
10.较佳地,所述获取所述目标部位的宽度关键点和高度关键点的步骤包括:使用人脸关键点检测模型获取所述目标部位的宽度关键点和高度关键点,其中所述人脸关键点检测模型通过初始神经网络模型对不同驾驶员驾驶时的人脸样本图像进行迭代训练得到,每一所述人脸样本图像中至少标注有所述目标部位的宽度关键点和高度关键点。
11.较佳地,所述获取所述目标部位的标准值范围的步骤具体包括:获取若干不同驾驶员正常驾驶时的人脸图像;使用所述人脸关键点检测模型获取每一所述驾驶员目标部位的宽度关键点和高度关键点,根据所述目标部位的宽度关键点和高度关键点计算每一所述驾驶员的标准值,统计所述目标部位的标准值上下限得到所述标准值范围。
12.较佳地,所述人脸关键点检测模型包括依次设置的输入层、第一卷积层、反卷积层、至少一第一瓶颈模块、至少一第二瓶颈模块、至少一第三瓶颈模块、至少一第四瓶颈模块、第二卷积层、第三卷积层和全连接层;所述输入层用于输入所述待测人脸图像,对所述待测人脸图像进行预处理;所述全连接层用于将所述第二卷积层、所述第三卷积层以及最后一个所述第四瓶颈模块的输出展平连接,获得所述宽度关键点和所述高度关键点。
13.较佳地,所述疲劳驾驶监测方法还包括:若在预设时间段内无法获取所述目标驾驶员所述目标部位的检测值,判定所述目标驾驶员疲劳驾驶;
14.较佳地,所述目标部位包括眼部和嘴部,所述疲劳驾驶监测方法还包括:若眼部处于所述第一状态的持续时长超过第一预设时长或嘴部处于所述第一状态的持续时长超过第二预设时长,判定所述目标驾驶员疲劳驾驶;若在预设时间段内无法获取眼部的检测值,判定所述目标驾驶员疲劳驾驶。
15.第二方面,本发明提供一种基于人脸关键点检测的疲劳驾驶监测系统,用于实现第一方面所述的基于人脸关键点检测的疲劳驾驶监测方法,所述系统包括:
16.标准值获取模块,用于获取目标驾驶员目标部位的标准值,其中所述标准值表征所述目标驾驶员正常驾驶时所述目标部位的张合程度;
17.人脸图像获取模块,用于获取所述目标驾驶员的待测人脸图像;
18.检测值获取模块,用于获取所述待测人脸图像中所述目标部位的检测值,其中所述检测值表征在所述待测人脸图像中所述目标部位的张合程度;
19.目标部位状态检测模块,用于比对所述目标部位的检测值与标准值,若两者相差超过设定阈值,判定所述目标部位处于第一状态;
20.疲劳驾驶监测模块,用于记录所述目标部位处于所述第一状态的持续时长,若所述持续时长超过预设时长,判定所述目标驾驶员疲劳驾驶。
21.较佳地,所述标准值获取模块包括:
22.初始人脸图像获取单元,用于获取目标驾驶员的初始人脸图像,其中所述初始人脸图像为检测到所述目标驾驶员进入驾驶位后驾驶车辆行驶设定时间或设定距离内采集到所述目标驾驶员的人脸图像;
23.标准值范围获取单元,用于获取所述目标部位的标准值范围,其中所述标准值范围表征正常驾驶时所述目标部位的张合程度上下限;
24.初始标准值获取单元,用于获取所述初始人脸图像中目标部位的初始标准值;
25.标准值筛选单元,用于判断所述初始标准值是否符合所述标准值范围,若不符合则重新获取所述初始人脸图像,直至所述初始标准值符合所述标准值范围,将所述初始标准值作为所述目标部位的标准值。
26.较佳地,所述系统还包括计算模块,用于获取所述目标部位的标准值、检测值或初始标准值,所述计算模块包括:
27.关键点获取单元,用于获取所述目标部位的宽度关键点和高度关键点;
28.距离计算单元,用于根据所述宽度关键点之间的距离计算所述目标部位的宽度,根据所述高度关键点之间的距离计算所述目标部位的高度;
29.值计算单元,用于计算所述宽度与所述高度的比值作为所述目标部位的标准值、检测值或初始标准值。
30.较佳地,所述关键点获取单元用于使用人脸关键点检测模型获取所述目标部位的宽度关键点和高度关键点,其中所述人脸关键点检测模型通过初始神经网络模型对不同驾驶员驾驶时的人脸样本图像进行迭代训练得到,每一所述人脸样本图像中至少标注有所述目标部位的宽度关键点和高度关键点。
31.较佳地,所述标准值范围获取单元,用于获取若干不同驾驶员正常驾驶时的人脸图像;使用所述人脸关键点检测模型获取每一所述驾驶员目标部位的宽度关键点和高度关键点,根据所述目标部位的宽度关键点和高度关键点计算每一所述驾驶员的标准值,统计所述目标部位的标准值上下限得到所述标准值范围。
32.较佳地,所述人脸关键点检测模型包括依次设置的输入层、第一卷积层、反卷积层、至少一第一瓶颈模块、至少一第二瓶颈模块、至少一第三瓶颈模块、至少一第四瓶颈模块、第二卷积层、第三卷积层和全连接层;所述输入层用于输入所述待测人脸图像,对所述待测人脸图像进行预处理;所述全连接层用于将所述第二卷积层、所述第三卷积层以及最后一个所述第四瓶颈模块的输出展平连接,获得所述宽度关键点和所述高度关键点。
33.较佳地,所述疲劳驾驶判定模块还用于若在预设时间段内无法获取所述目标驾驶员所述目标部位的检测值,判定所述目标驾驶员疲劳驾驶;
34.较佳地,所述目标部位包括眼部和嘴部,所述疲劳驾驶判定模块还用于若眼部处于所述第一状态的持续时长超过第一预设时长或嘴部处于所述第一状态的持续时长超过第二预设时长,判定所述目标驾驶员疲劳驾驶;若在预设时间段内无法获取所述目标驾驶员眼部的检测值,判定所述目标驾驶员疲劳驾驶。
35.第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现上述基于人脸关键点检测的疲劳驾驶监测方法。
36.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于人脸关键点检测的疲劳驾驶监测方法。
37.本发明的积极进步效果在于:本发明的基于人脸关键点检测的疲劳驾驶监测方法、系统及设备,通过同一目标部位检测值与标准值的差距判断目标驾驶员是否疲劳驾驶,
消除个体差异的影响,提高监测疲劳驾驶的准确率。此外,通过从不同驾驶员正常驾驶时的人脸图像中获取目标部位的标准值,统计得到在正常驾驶时目标部位的标准值范围,进而根据该标准值范围为目标驾驶员筛选合理的标准值作为后续的对比标准。并且,通过针对驾驶员驾驶时的人脸图像训练人脸关键点检测模型,减少驾驶时环境因素对检测精确度的影响。以及,进一步采用mobilenet-v2模型作为人脸关键点检测模型,简化模型结构,减少模型训练时间和计算资源开销,提高检测速度,且有利于嵌入式的开发和使用。另外,还将训练好的人脸关键点检测模型移植到tensorrt,对模型进行压缩、优化以及运行时部署,可以改善模型的延迟、吞吐量以及效率,进而加速人脸关键点检测模型的检测速度。
附图说明
38.图1为本发明实施例1的基于人脸关键点检测的疲劳驾驶监测方法的流程图;
39.图2为本发明实施例1中驾驶员正常驾驶时的人脸关键点示意图;
40.图3为本发明实施例1中初始神经网络模型的结构示意图;
41.图4为本发明实施例1中瓶颈模块的结构示意图;
42.图5为本发明实施例2的基于人脸关键点检测的疲劳驾驶监测系统的模块示意图;
43.图6为本发明实施例2的基于人脸关键点检测的疲劳驾驶监测系统的较佳实施方式的模块示意图;
44.图7为本发明实施例3的电子设备的结构示意图。
具体实施方式
45.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
46.实施例1
47.如图1所示,本实施例提供一种基于人脸关键点检测的疲劳驾驶监测方法,包括步骤s1-s4:
48.步骤s1、获取目标驾驶员目标部位的标准值,其中所述标准值表征所述目标驾驶员正常驾驶时所述目标部位的张合程度;
49.步骤s2、获取所述目标驾驶员的待测人脸图像;
50.步骤s3、获取所述待测人脸图像中所述目标部位的检测值,其中所述检测值表征在所述待测人脸图像中所述目标部位的张合程度;
51.步骤s4、比对所述目标部位的检测值与标准值,若两者相差超过设定阈值,判定所述目标部位处于第一状态;
52.步骤s5、记录所述目标部位处于所述第一状态的持续时长,若所述持续时长超过预设时长,判定所述目标驾驶员疲劳驾驶。
53.在步骤s1中,作为较佳的实施方式,所述获取目标驾驶员目标部位的标准值的步骤具体包括:
54.步骤s11、获取目标驾驶员的初始人脸图像,其中所述初始人脸图像为检测到所述目标驾驶员进入驾驶位后驾驶车辆行驶设定时间或设定距离内采集到所述目标驾驶员的人脸图像;
55.步骤s12、获取所述目标部位的标准值范围,其中所述标准值范围表征正常驾驶时所述目标部位的张合程度上下限;
56.步骤s13、获取所述初始人脸图像中目标部位的初始标准值;
57.步骤s14、判断所述初始标准值是否符合所述标准值范围,若不符合则重新获取所述初始人脸图像,直至所述初始标准值符合所述标准值范围,将所述初始标准值作为所述目标部位的标准值。
58.其中,驶员刚进入驾驶位或者刚开始驾驶车辆时是最清醒的状态,检测到目标驾驶员进入驾驶位后驾驶车辆行驶设定时间或设定距离内进行采集初始人脸图像,从初始人脸图像中获取目标驾驶员目标部位的标准值,这样可以保证标准值是从当次驾驶任务中采集到的初始人脸图像获取的。
59.这样做的好处是:确保能够采集到目标驾驶员准确的标准值,也避免采集的标准值表征的是驾驶员未进入正常驾驶时目标部位的张合程度,导致标准值不可靠,进而影响后续的监测效果。并且,还可以保证该标准值准确记录目标驾驶员在不同的驾驶任务中,正常驾驶时目标部位的状态。其原理就是尽量保持对目标部位的张合程度的影响因素一致,例如当天天气、光线、环境以及目标驾驶员整体面貌等因素。
60.另外,虽然不同驾驶员之间目标部位存在的大小、形状差异,但都不会过分极端。因此,目标部位的标准值需要符合标准值范围。也就是说,标准值范围表征正常驾驶时目标部位的张合程度上下限,这是为了排除目标部位不合理的标准值,提高标准值的可靠性。
61.标准值范围可以是预先设定的,也可以根据大量不同驾驶员目标部位的标准值统计得到标准值上下限作为标准值范围,主要用于校验目标部位的标准值的合理性。
62.作为较佳的实施方式,获取所述目标部位的标准值范围的步骤具体包括:获取若干不同驾驶员正常驾驶时的人脸图像;使用所述人脸关键点检测模型获取每一所述驾驶员目标部位的宽度关键点和高度关键点,根据所述目标部位的宽度关键点和高度关键点计算每一所述驾驶员的标准值,统计所述目标部位的标准值上下限得到所述标准值范围。这样做的好处是,可以保证标准值范围的真实性和有效性。
63.在步骤s2中,可以通过各种数码电子设备采集目标驾驶员的人脸图像作为待测人脸图像。
64.示例性的,在驾驶位的前方安装监控设备,该监控设备用于持续采集驾驶员的实时人脸图像,并通过上述疲劳驾驶监测方法对采集到的实时人脸图像进行检测,判断目标驾驶员是否疲劳驾驶。
65.在步骤s1和步骤s3中,目标部位的张合程度可以根据目标部位的宽度和高度的比值或者高度和宽度的比值进行表示。
66.作为较佳的实施方式,所述疲劳驾驶监测方法还包括通过以下步骤获取所述目标部位的标准值、检测值或初始标准值:获取所述目标部位的宽度关键点和高度关键点,根据所述宽度关键点之间的距离计算所述目标部位的宽度,根据所述高度关键点之间的距离计算所述目标部位的高度,所述宽度与所述高度的比值作为所述目标部位的标准值、检测值或初始标准值。
67.示例性的,当目标部位为眼部时,宽度关键点包括外眼角和内眼角,眼部的高度关键点包括眼中上顶点和眼中下顶点,同一只眼睛外眼角到内眼角的距离为该只眼睛的宽
度、眼中上顶点到眼中下顶点的距离为该只眼睛的高度。两只眼睛宽度平均值和高度平均值的比值为眼部的特征值,或同一只眼睛的宽度和高度的比值为该只眼睛的特征值,两只眼睛的特征值组为眼部的张合程度。当目标部位为嘴部时,宽度关键点包括左嘴角与右嘴角,嘴部的高度关键点包括嘴中上顶点与嘴中下顶点,左嘴角到右嘴角的距离为嘴部的宽度,嘴中上顶点与嘴中下顶点的距离为嘴部的高度,嘴部的宽度与高度的比值为嘴部的张合程度。
68.其中,目标部位的宽度关键点和高度关键点是基于人脸关键点检测模型从人脸图像中检测的人脸关键点得到。这样做的好处是:可以提高目标部位宽度关键点和高度关键点的精确度,进而提高目标部位的标准值的精确度。
69.本实施例中,人脸关键点检测模型获取的人脸关键点如图2所示,其中包括目标部位的宽度关键点和高度关键点。
70.因此,作为较佳的实施方式,所述获取所述目标部位的宽度关键点和高度关键点的步骤包括:使用人脸关键点检测模型获取所述目标部位的宽度关键点和高度关键点,其中所述人脸关键点检测模型通过初始神经网络模型对不同驾驶员驾驶时的人脸样本图像进行迭代训练得到,每一所述人脸样本图像中至少标注有所述目标部位的宽度关键点和高度关键点。
71.其中,人脸关键点检测模型通过初始神经网络模型对不同驾驶员驾驶时的人脸样本图像进行迭代训练得到。这样做的好处是,减少驾驶员在执行驾驶任务时,由于周围环境频繁变化、天气、光线等环境因素对模型检测结果的影响。
72.具体的,初始神经网络模型选取mobilenet-v2模型。
73.这样做的好处是,常规的人脸关键点检测模型对硬件要求高、实现方法复杂、检测耗时较长,而mobilenet-v2模型的模型结构简单,构建人脸关键点检测模型快速方便,不需要使用模型混合、多任务训练以及度量学习等方法就能够完成人脸关键点的高精度检测,且训练得到的人脸关键点检测模型运行速度极快,且有利于嵌入式的开发和使用。
74.并且,使用pytorch迭代训练初始神经网络模型。
75.其中,pytorch是一个以python优先的深度学习框架,不仅能够实现强大的gpu加速,同时还支持动态神经网络。这样做的好处是,能够加速人脸关键点检测模型的训练和迭代,训练时也不需要过多的人脸样本图像和躲过的计算资源,可以大大减少模型训练时间和计算资源开销。
76.另外,还将人脸关键点检测模型移植到tensorrt。
77.其中,tensorrt是一个有助于在nvidia图形处理单元(gpu)上高性能推理c 库,它旨在与tesnsorflow、caffe、pytorch以及mxnet等训练框架以互补的方式进行工作,专门致力于在gpu上快速有效地进行网络推理。
78.也就是将训练好的人脸关键点检测模型连带各层模型参数一并转化到tensorrt,能够加速人脸关键点检测模型的检测速度。这样做的好处是,tensorrt可以对神经网络进行压缩、优化以及运行时部署,并且没有框架的开销。tensorrt通过combines layers,kernel优化选择,以及根据指定的精度执行归一化和转换成最优的matrix math方法,改善神经网络的延迟、吞吐量以及效率。
79.经测试,获取每张人脸图像目标部位的宽度关键点和高度关键点仅需要0.01秒,
可以满足实际应用中的实时要求。
80.为了使得初始神经网络模型结构更加简单、运行速度更快,可以调整mobilenet-v2模型中width参数,减少瓶颈模块的数量以压缩网络。为了增加模型表达能力,即提高捕捉人脸结构的能力,还可以将不同尺度的特征融合后再放入全连接层。
81.因此,作为较佳的实施方式,初始神经网络模型包括依次设置的输入层、第一卷积层、反卷积层、至少一第一瓶颈模块、至少一第二瓶颈模块、至少一第三瓶颈模块、至少一第四瓶颈模块、第二卷积层、第三卷积层和全连接层。
82.示例性的,将若干人脸样本图像分为包括多个训练图像的训练集和包括多个验证图像的验证集,将训练集中的训练图像分批次输入构建的如图3所示的初始神经网络模型进行训练,并迭代训练多次得到最终的人脸关键点检测模型。
83.其中,训练得到的人脸关键点检测模型也包括依次设置的输入层、第一卷积层c1、反卷积层d1、5个第一瓶颈模块b1、1个第二瓶颈模块b2、6个第三瓶颈模块b3、1个第四瓶颈模块b4、第二卷积层c2、第三卷积层c3、全连接层。
84.输入层,用于输入原始驾驶员人脸图像,经过尺寸调整、中心裁剪和归一化等图像预处理操作,得到尺寸为112
×
112
×
3的归一化图像。
85.第一卷积层c1,卷积核大小为3
×
3,滑动步长为2,输出为56
×
56
×
64;反卷积层d1,卷积核大小为3
×
3,滑动步长为1,输出为128
×
128
×
64。
86.多个瓶颈模块,包括5个第一瓶颈模块b1(卷积核大小为3
×
3,滑动步长为2,输出为28
×
28
×
64)、1个第二瓶颈模块b2(卷积核大小为3
×
3,滑动步长为2,输出为14
×
14
×
128)、6个第三瓶颈模块b3(卷积核大小为3
×
3,滑动步长为1,输出为14
×
14
×
128)、1个第四瓶颈模块b4(卷积核大小为3
×
3,滑动步长为1,输出为14
×
14
×
16)。
87.第二卷积层c2,卷积核大小为3
×
3,滑动步长为2,输出为7
×7×
32。
88.第三卷积层c3,卷积核大小为3
×
3,滑动步长为1,实际做矩阵展平,输出为1
×1×
128。
89.全连接层,利用最后一个第四瓶颈模块以及第二卷积层c2和第三卷积层c3的输出,将它们展平连接,获得136个输出,每两位为一个点坐标,代表一个人脸图像中的特征点,包括了人脸图像的宽度关键点和高度关键点。
90.上述人脸关键点检测模型的瓶颈模块如图4所示,每一个卷积层之后都做激活操作(包括归一化和/或使用relu激活函数),并将该瓶颈模块的输入与该瓶颈模块最后一个卷积层的输出再做一个比较和连接的操作,得到该瓶颈模块最终的输出。
91.具体的,将训练集中的各个训练图像依次输入构建好的初始神经网络模型并进行一次迭代,采用最后一层的模型参数分别计算出损失误差并将损失误差反向传播从而更新模型参数,重复迭代和更新模型参数直至达到训练完成条件,得到训练后的初步人脸关键点检测模型。
92.然后,利用验证集对初步的人脸关键点检测模型进行模型效果的检验,若分类准确度达标则得到最终的人脸关键点检测模型,若分类准确度未达标则继续迭代模型和表征模型参数直至分类准确度达到。
93.上述的模型训练过程中,每次迭代(即训练图像通过模型)后,模型的最后一层的模型参数会分别计算出损失误差(即交叉熵损失crossentropy loss),然后将计算得到的
损失误差反向传播,采用随机梯度下降算法进行参数优化,学习率为0.001,从而更新模型参数。
94.另外,模型训练的训练完成条件与常规的卷积神经初始神经网络模型相同,即各层的模型参数收敛后就完成训练。
95.按照上述迭代训练步骤得到的人脸关键点检测模型,用于疲劳驾驶监测方法中,实验结果显示,对于300张正常驾驶状态图像,有295张判断为正常驾驶状态,正确率达到98.33%,即该模型能够基本正确地识别正常驾驶状态图像;而对于200张疲劳状态图像,有173张图像被判断为疲劳驾驶状态,准确率也能达到86.5%。
96.在步骤s4中,通过比对目标部位的检测值与标准值来判断目标部位的状态,若目标部位的检测值与标准值相差查过设定阈值,判定目标部位处于第一状态。
97.示例性的,目标部位包括眼部和/或嘴部,目标驾驶员闭眼时,眼部处于第一状态,目标驾驶员张嘴时,嘴部处于第一状态。相对应的,目标驾驶员睁眼时,眼部处于第二状态,目标驾驶员闭嘴时,嘴部处于第二状态。
98.在实际应用中,是将监控设备的视频流转换为连续多张的待测人脸图像,判断每一张待测人脸图像中目标部位的状态。
99.如果目标部位被判定为第一状态之后不久,就被判定为第二状态,说明目标驾驶员是在进行正常的眨眼或讲话。但如果待测人脸图像中目标部位一直被判定为第一状态,说明目标驾驶员很可能做出了打瞌睡或者是打哈欠的行为。
100.因此,在步骤s5中,通过记录目标部位处于所述第一状态的持续时长,来判断目标驾驶员是否疲劳驾驶,若持续时长超过预设时长,就判定目标驾驶员疲劳驾驶。
101.其中,目标部位通常选取最重要的眼部,也可以同时选取嘴部作为辅助判断因素。
102.因此,作为较佳的实施方式,目标部位包括眼部和嘴部,所述疲劳驾驶监测方法还包括:若眼部处于所述第一状态的持续时长超过第一预设时长或嘴部处于所述第一状态的持续时长超过第二预设时长,判定所述目标驾驶员疲劳驾驶。
103.因为有时目标部位会被遮挡,因此作为较佳的实施方式,步骤s5还包括:若在预设时间段内无法获取所述目标驾驶员所述目标部位的检测值,判定所述目标驾驶员疲劳驾驶。
104.也就是说,对于无法获取目标部位的检测值的情况,可以直接判定驾驶员疲劳驾驶。
105.但是,对于目标部位包括眼部和嘴部的情况,对嘴部的监测只是监测疲劳驾驶的辅助手段,最主要的还是对眼部的监测,特别是对于特殊时期需要佩戴口罩遮挡嘴部,因此不将嘴部的遮挡直接作为判断疲劳驾驶的依据,而是只根据眼部的遮挡情况来判断驾驶员是否疲劳驾驶。
106.作为较佳的实施方式,步骤s5还包括:若在预设时间段内无法获取眼部的检测值,判定所述目标驾驶员疲劳驾驶。
107.这样做的好处是:当目标驾驶员的面部被部分或完全遮挡,无法获取目标部位的检测值时,直接判断目标驾驶员疲劳驾驶,及时做出相应的处理。
108.此外,还可以通过监测嘴部是否打哈欠以辅助判断驾驶员是否疲劳驾驶,但在嘴部被遮挡的情况下,只将眼部的检测值作为判断驾驶员疲劳驾驶的直接依据。
109.本实施例的疲劳驾驶监测方法,通过用标准值来表征目标驾驶员正常驾驶时目标部位的张合程度,作为后续监测中判断是否疲劳驾驶的对比标准,再从目标驾驶员的待测人脸图像中获取目标部位的检测值,与标准值进行对比观察目标驾驶员目标部位的状态,进而判断目标驾驶员是否疲劳驾驶。通过同一驾驶员的标准值和检测值进行对比,消除不同驾驶员之间目标部位的差异影响,更加准确地判断目标驾驶员是否疲劳驾驶。
110.实施例2
111.如图5和图6所示,本实施例提供了一种基于人脸关键点检测的疲劳驾驶监测系统,包括:
112.标准值获取模块51,用于获取目标驾驶员目标部位的标准值,其中所述标准值表征所述目标驾驶员正常驾驶时所述目标部位的张合程度;
113.人脸图像获取模块52,用于获取所述目标驾驶员的待测人脸图像;
114.检测值获取模块53,用于获取所述待测人脸图像中所述目标部位的检测值,其中所述检测值表征在所述待测人脸图像中所述目标部位的张合程度;
115.目标部位状态检测模块54,用于比对所述目标部位的检测值与标准值,若两者相差超过设定阈值,判定所述目标部位处于第一状态;
116.疲劳驾驶监测模块55,用于记录所述目标部位处于所述第一状态的持续时长,若所述持续时长超过预设时长,判定所述目标驾驶员疲劳驾驶。
117.在标准值获取模块51中,作为较佳的实施方式,具体包括:
118.初始人脸图像获取单元511、用于获取目标驾驶员的初始人脸图像,其中所述初始人脸图像为检测到所述目标驾驶员进入驾驶位后驾驶车辆行驶设定时间或设定距离内采集到所述目标驾驶员的人脸图像;
119.标准值范围获取单元512、用于获取所述目标部位的标准值范围,其中所述标准值范围表征正常驾驶时所述目标部位的张合程度上下限;
120.初始标准值获取单元513、用于获取所述初始人脸图像中目标部位的初始标准值;
121.标准值筛选单元514、用于判断所述初始标准值是否符合所述标准值范围,若不符合则重新获取所述初始人脸图像,直至所述初始标准值符合所述标准值范围,将所述初始标准值作为所述目标部位的标准值。
122.其中,驶员刚进入驾驶位或者刚开始驾驶车辆时是最清醒的状态,检测到目标驾驶员进入驾驶位后驾驶车辆行驶设定时间或设定距离内进行采集初始人脸图像,从初始人脸图像中获取目标驾驶员目标部位的标准值,这样可以保证标准值是从当次驾驶任务中采集到的初始人脸图像获取的。
123.这样做的好处是:确保能够采集到目标驾驶员准确的标准值,也避免采集的标准值表征的是驾驶员未进入正常驾驶时目标部位的张合程度,导致标准值不可靠,进而影响后续的监测效果。并且,还可以保证该标准值准确记录目标驾驶员在不同的驾驶任务中,正常驾驶时目标部位的状态。其原理就是尽量保持对目标部位的张合程度的影响因素一致,例如当天天气、光线、环境以及目标驾驶员整体面貌等因素。
124.另外,虽然不同驾驶员之间目标部位存在的大小、形状差异,但都不会过分极端。因此,目标部位的标准值需要符合标准值范围。也就是说,标准值范围表征正常驾驶时目标部位的张合程度上下限,这是为了排除目标部位不合理的标准值,提高标准值的可靠性。
125.标准值范围可以是预先设定的,也可以根据大量不同驾驶员目标部位的标准值统计得到标准值上下限作为标准值范围,主要用于校验目标部位的标准值的合理性。
126.作为较佳的实施方式,标准值范围获取单元512具体用于:获取若干不同驾驶员正常驾驶时的人脸图像;使用所述人脸关键点检测模型获取每一所述驾驶员目标部位的宽度关键点和高度关键点,根据所述目标部位的宽度关键点和高度关键点计算每一所述驾驶员的标准值,统计所述目标部位的标准值上下限得到所述标准值范围。这样做的好处是,可以保证标准值范围的真实性和有效性。
127.在人脸图像获取模块52中,可以通过各种数码电子设备采集目标驾驶员的人脸图像作为待测人脸图像。
128.示例性的,在驾驶位的前方安装监控设备,该监控设备用于持续采集驾驶员的实时人脸图像,并通过上述疲劳驾驶监测系统对采集到的实时人脸图像进行检测,判断目标驾驶员是否疲劳驾驶。
129.在标准值获取模块51和检测值获取模块53中,目标部位的张合程度可以根据目标部位的宽度和高度的比值或者高度和宽度的比值进行表示。
130.作为较佳的实施方式,所述疲劳驾驶监测系统还包括计算模块56,用于获取所述目标部位的标准值、检测值或初始标准值,所述计算模块56包括:
131.关键点获取单元561、用于获取所述目标部位的宽度关键点和高度关键点;
132.距离计算单元562、用于根据所述宽度关键点之间的距离计算所述目标部位的宽度,根据所述高度关键点之间的距离计算所述目标部位的高度;
133.值计算单元563、用于计算所述宽度与所述高度的比值作为所述目标部位的标准值、检测值或初始标准值。
134.示例性的,当目标部位为眼部时,宽度关键点包括外眼角和内眼角,眼部的高度关键点包括眼中上顶点和眼中下顶点,同一只眼睛外眼角到内眼角的距离为该只眼睛的宽度、眼中上顶点到眼中下顶点的距离为该只眼睛的高度。两只眼睛宽度平均值和高度平均值的比值为眼部的特征值,或同一只眼睛的宽度和高度的比值为该只眼睛的特征值,两只眼睛的特征值组为眼部的张合程度。当目标部位为嘴部时,宽度关键点包括左嘴角与右嘴角,嘴部的高度关键点包括嘴中上顶点与嘴中下顶点,左嘴角到右嘴角的距离为嘴部的宽度,嘴中上顶点与嘴中下顶点的距离为嘴部的高度,嘴部的宽度与高度的比值为嘴部的张合程度。
135.其中,目标部位的宽度关键点和高度关键点是基于人脸关键点检测模型从人脸图像中检测的人脸关键点得到。这样做的好处是:可以提高目标部位宽度关键点和高度关键点的精确度,进而提高目标部位的标准值的精确度。
136.本实施例中,人脸关键点检测模型获取的人脸关键点如图2所示,其中包括目标部位的宽度关键点和高度关键点。
137.因此,作为较佳的实施方式,关键点获取单元551用于:使用人脸关键点检测模型获取所述目标部位的宽度关键点和高度关键点,其中所述人脸关键点检测模型通过初始神经网络模型对不同驾驶员驾驶时的人脸样本图像进行迭代训练得到,每一所述人脸样本图像中至少标注有所述目标部位的宽度关键点和高度关键点。
138.其中,人脸关键点检测模型通过初始神经网络模型对不同驾驶员驾驶时的人脸样
本图像进行迭代训练得到。这样做的好处是,减少驾驶员在执行驾驶任务时,由于周围环境频繁变化、天气、光线等环境因素对模型检测结果的影响。
139.具体的,初始神经网络模型选取mobilenet-v2模型。
140.这样做的好处是,常规的人脸关键点检测模型对硬件要求高、实现方法复杂、检测耗时较长,而mobilenet-v2模型的模型结构简单,构建人脸关键点检测模型快速方便,不需要使用模型混合、多任务训练以及度量学习等方法就能够完成人脸关键点的高精度检测,且训练得到的人脸关键点检测模型运行速度极快,且有利于嵌入式的开发和使用。
141.并且,使用pytorch迭代训练初始神经网络模型。
142.其中,pytorch是一个以python优先的深度学习框架,不仅能够实现强大的gpu加速,同时还支持动态神经网络。这样做的好处是,能够加速人脸关键点检测模型的训练和迭代,训练时也不需要过多的人脸样本图像和躲过的计算资源,可以大大减少模型训练时间和计算资源开销。
143.另外,还将人脸关键点检测模型移植到tensorrt。
144.其中,tensorrt是一个有助于在nvidia图形处理单元(gpu)上高性能推理c 库,它旨在与tesnsorflow、caffe、pytorch以及mxnet等训练框架以互补的方式进行工作,专门致力于在gpu上快速有效地进行网络推理。
145.也就是将训练好的人脸关键点检测模型连带各层模型参数一并转化到tensorrt,能够加速人脸关键点检测模型的检测速度。这样做的好处是,tensorrt可以对神经网络进行压缩、优化以及运行时部署,并且没有框架的开销。tensorrt通过combines layers,kernel优化选择,以及根据指定的精度执行归一化和转换成最优的matrix math方法,改善神经网络的延迟、吞吐量以及效率。
146.经测试,获取每张人脸图像目标部位的宽度关键点和高度关键点仅需要0.01秒,可以满足实际应用中的实时要求。
147.为了使得初始神经网络模型结构更加简单、运行速度更快,可以调整mobilenet-v2模型中width参数,减少瓶颈模块的数量以压缩网络。为了增加模型表达能力,即提高捕捉人脸结构的能力,还可以将不同尺度的特征融合后再放入全连接层。
148.因此,作为较佳的实施方式,初始神经网络模型包括依次设置的输入层、第一卷积层、反卷积层、至少一第一瓶颈模块、至少一第二瓶颈模块、至少一第三瓶颈模块、至少一第四瓶颈模块、第二卷积层、第三卷积层和全连接层。
149.示例性的,将若干人脸样本图像分为包括多个训练图像的训练集和包括多个验证图像的验证集,将训练集中的训练图像分批次输入构建的如图3所示的初始神经网络模型进行训练,并迭代训练多次得到最终的人脸关键点检测模型。
150.也就是说,训练得到的人脸关键点检测模型也包括依次设置的输入层、第一卷积层c1、反卷积层d1、5个第一瓶颈模块b1、1个第二瓶颈模块b2、6个第三瓶颈模块b3、1个第四瓶颈模块b4、第二卷积层c2、第三卷积层c3、全连接层。
151.第一卷积层c1,卷积核大小为3
×
3,滑动步长为2,输出为56
×
56
×
64;反卷积层d1,卷积核大小为3
×
3,滑动步长为1,输出为128
×
128
×
64。
152.多个瓶颈模块,包括5个第一瓶颈模块b1(卷积核大小为3
×
3,滑动步长为2,输出为28
×
28
×
64)、1个第二瓶颈模块b2(卷积核大小为3
×
3,滑动步长为2,输出为14
×
14
×
128)、6个第三瓶颈模块b3(卷积核大小为3
×
3,滑动步长为1,输出为14
×
14
×
128)、1个第四瓶颈模块b4(卷积核大小为3
×
3,滑动步长为1,输出为14
×
14
×
16)。
153.第二卷积层c2,卷积核大小为3
×
3,滑动步长为2,输出为7
×7×
32。
154.第三卷积层c3,卷积核大小为3
×
3,滑动步长为1,实际做矩阵展平,输出为1
×1×
128。
155.全连接层,利用最后一个第四瓶颈模块以及第二卷积层c2和第三卷积层c3的输出,将它们展平连接,获得136个输出,每两位为一个点坐标,代表一个人脸图像中的特征点,包括了人脸图像的宽度关键点和高度关键点。上述人脸关键点检测模型的瓶颈模块如图4所示,每一个卷积层之后都做激活操作(包括归一化和/或使用relu激活函数),并将该瓶颈模块的输入与该瓶颈模块最后一个卷积层的输出再做一个比较和连接的操作,得到该瓶颈模块最终的输出。
156.具体的,将训练集中的各个训练图像依次输入构建好的初始神经网络模型并进行一次迭代,采用最后一层的模型参数分别计算出损失误差并将损失误差反向传播从而更新模型参数,重复迭代和更新模型参数直至达到训练完成条件,得到训练后的初步人脸关键点检测模型。
157.然后,利用验证集对初步人脸关键点检测模型进行模型效果的检验,若分类准确度达标则得到最终的人脸关键点检测模型,若分类准确度未达标则继续迭代模型和表征模型参数直至分类准确度达到。
158.上述的模型训练过程中,每次迭代(即训练图像通过模型)后,模型的最后一层的模型参数会分别计算出损失误差(即交叉熵损失crossentropy loss),然后将计算得到的损失误差反向传播,采用随机梯度下降算法进行参数优化,学习率为0.001,从而更新模型参数。
159.另外,模型训练的训练完成条件与常规的卷积神经初始神经网络模型相同,即各层的模型参数收敛后就完成训练。
160.按照上述迭代训练步骤得到的人脸关键点检测模型,用于疲劳驾驶监测系统中,实验结果显示,对于300张正常驾驶状态图像,有295张判断为正常驾驶状态,正确率达到98.33%,即该模型能够基本正确地识别正常驾驶状态图像;而对于200张疲劳状态图像,有173张图像被判断为疲劳驾驶状态,准确率也能达到86.5%。
161.在目标部位状态检测模块54中,通过比对目标部位的检测值与标准值来判断目标部位的状态,若目标部位的检测值与标准值相差查过设定阈值,判定目标部位处于第一状态,否判定目标部位处于第二状态。
162.示例性的,目标部位包括眼部和/或嘴部,目标驾驶员闭眼时,眼部处于第一状态,目标驾驶员张嘴时,嘴部处于第一状态。相对应的,目标驾驶员睁眼时,眼部处于第二状态,目标驾驶员闭嘴时,嘴部处于第二状态。
163.在实际应用中,是将监控设备的视频流转换为连续多张的待测人脸图像,判断每一张待测人脸图像中目标部位的状态。
164.如果目标部位被判定为第一状态之后不久,就被判定为第二状态,说明目标驾驶员是在进行正常的眨眼或讲话。但如果待测人脸图像中目标部位一直被判定为第一状态,说明目标驾驶员很可能做出了打瞌睡或者是打哈欠的行为。
165.因此,在疲劳驾驶监测模块55中,通过记录目标部位处于所述第一状态的持续时长,来判断目标驾驶员是否疲劳驾驶,若持续时长超过预设时长,就判定目标驾驶员疲劳驾驶。
166.其中,目标部位通常选取最重要的眼部,也可以同时选取嘴部作为辅助判断因素。
167.因此,作为较佳的实施方式,目标部位包括眼部和嘴部,所述疲劳驾驶监测模块55还用于,若眼部处于所述第一状态的持续时长超过第一预设时长或嘴部处于所述第一状态的持续时长超过第二预设时长,判定所述目标驾驶员疲劳驾驶。
168.因为有时目标部位会被遮挡,因此作为较佳的实施方式,所述疲劳驾驶监测模块55还用于,若在预设时间段内无法获取所述目标驾驶员目标部位的检测值,判定所述目标驾驶员疲劳驾驶。
169.也就是说,对于无法获取目标部位的检测值的情况,可以直接判定驾驶员疲劳驾驶。
170.但是,对于目标部位包括眼部和嘴部的情况,对嘴部的监测只是监测疲劳驾驶的辅助手段,最主要的还是对眼部的监测,特别是对于特殊时期需要佩戴口罩遮挡嘴部,因此不将嘴部的遮挡直接作为判断疲劳驾驶的依据,而是只根据眼部的遮挡情况来判断驾驶员是否疲劳驾驶。
171.作为较佳的实施方式,所述疲劳驾驶监测模块55还用于,若在预设时间段内无法获取所述目标驾驶员眼部的检测值,判定所述目标驾驶员疲劳驾驶。
172.也就是说,对于无法获取目标部位的检测值的情况,可以直接判定驾驶员疲劳驾驶。其中,对于目标部位包括眼部和嘴部的情况,对嘴部的监测只是监测疲劳驾驶的辅助手段,最主要的还是对眼部的监测,特别是对于特殊时期需要佩戴口罩遮挡嘴部,因此不将嘴部的遮挡直接作为判断疲劳驾驶的依据,而是只根据眼部的遮挡情况来判断驾驶员是否疲劳驾驶。
173.这样做的好处是:当目标驾驶员的面部被部分或完全遮挡,无法获取目标部位的检测值时,直接判断目标驾驶员疲劳驾驶,及时做出相应的处理。此外,还可以通过监测嘴部是否打哈欠以辅助判断驾驶员是否疲劳驾驶,但在嘴部被遮挡的情况下,只将眼部的检测值作为判断驾驶员疲劳驾驶的直接依据。
174.本实施例的疲劳驾驶监测系统,通过用标准值来表征目标驾驶员正常驾驶时目标部位的张合程度,作为后续监测中判断是否疲劳驾驶的对比标准,再从目标驾驶员的待测人脸图像中获取目标部位的检测值,与标准值进行对比观察目标驾驶员目标部位的状态变化,进而判断目标驾驶员是否疲劳驾驶。通过同一驾驶员的标准值和检测值进行对比,消除不同驾驶员之间目标部位的差异影响,更加准确地判断目标驾驶员是否疲劳驾驶。
175.实施例3
176.图7为本发明实施例3提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现实施例1的基于人脸关键点检测的疲劳驾驶监测方法。图7显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
177.如图7所示,电子设备30可以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器
32、连接不同系统组件(包括存储器32和处理器31)的总线33。
178.总线33包括数据总线、地址总线和控制总线。
179.存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。
180.存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
181.处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1的基于人脸关键点检测的疲劳驾驶监测方法。
182.电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图5所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
183.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
184.实施例4
185.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现实施例1的基于人脸关键点检测的疲劳驾驶监测方法中的步骤。
186.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
187.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现实施例1的基于人脸关键点检测的疲劳驾驶监测方法中的步骤。
188.其中,可以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
189.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献