一种基于强化学习的驾驶员异常姿态监测方法
技术领域
本发明属于安全驾驶检测技术领域,尤其涉及一种基于强化学习的驾驶员异常姿态监测方法。
背景技术
汽车作为一种交通工具,已经成为生活不可或缺的必需品。随着私家车、营运车的数量的快速增长,对驾驶员的驾驶行为进行检测预警对于减少交通事故具有重要意义。
驾驶行为分为两大类:车内驾驶员状态和车外车辆的状态。针对驾驶员的行为动作检测的研究分为两类:传统的基于传感器的穿戴式检测方法,该方法不仅给驾驶员造成干扰,而且设备成本高;主流的检测方法是基于单目摄像机的检测方法,该方法获得的信息量大、成本低、无污染。因此,现在大部分驾驶员行为动作的研究都是基于车载摄像机得到图像或视频序列。
然而,基于单目摄像机的驾驶员动作行为研究还需要解决以下问题:由于某些原因,车载相机拍摄的图像不清楚,会导致提取的驾驶员的身体特征发生些许变化,传统检测结果会发生混乱;大部分情况下,训练模型时将一幅图像甚者是图像序列作为输入,这样会需要大量的时间与资源来训练检测模型,同时实地检测时对硬件的要求也比较高,且有时由于输入的视频数据量太大,无法达到实时的效果;目前大部分基于大数据来训练检测模型,往往考虑普通驾驶员驾驶行为的普遍特点,而忽略了不同驾驶员的行为特点。这样会造成检测不及时或检测错误。
中国专利申请:一种驾驶员手持电话行为检测方法及装置(申请号:201610578623.6)根据定位驾驶员的驾驶区域得到驾驶区域图像,之后对该图像进行处理检测,得到检测结果。该方法会由于驾驶员意外偏离驾驶区域造成检测误差。一种基于视频识别的危险驾驶行为监督方法与装置(申请号:201810432618.3)从实际场景中获取特定场景下(打电话等等)的图片样本数据,然后采用深度学习算法建立基于卷积神经网路的驾驶员打电话视频识别算法模型。该方法需要采集大量的定义场景下的数据进行训练,对于新出现的危险驾驶行为不能识别或识别准确率低;若定义所有的场景,实现细节检测,对于其模型使用范围是有限的;且基于普遍特征的模型训练方法,未考虑不同驾驶员的动作特征,会造成检测出现偏差或检测不及时的结果。
目前,尚未有基于强化学习和人体骨骼关键点信息的检测驾驶员正常驾驶行为、不良驾驶行为(打电话,喝水,看手机等等)和危险驾驶行为(晕厥等等)的方法,针对上述问题,本方法提出了一种基于强化学习的驾驶员行为检测方法,对潜在的危险驾驶行为做出正确识别及预警。
发明内容
本发明旨在解决以上现有技术的问题。提出了一种对潜在的危险驾驶行为做出正确识别及预警的基于强化学习的驾驶员异常姿态监测方法。本发明的技术方案如下:
一种基于强化学习的驾驶员异常姿态监测方法,其准备阶段和检测阶段,其中准备阶段包括:基于时间与空间变化的驾驶员动态行为,利用机器学习算法训练得到驾驶员姿态检测模型,结合保护动机理论建立具有引导性质的安全预警机制;
检测阶段包括以下步骤:
视频获取步骤:通过车载单目摄像机获取驾驶员的驾驶视频;
关键点检测步骤:利用OpenPose关键点检测系统标记视频中每一帧图像中驾驶员的面部关键点和骨骼关键点,使问题规模从图像中的像素点转换为驾驶员姿态变化的关键点;利用参考点重构并归一化处理后的关键点的初始化状态信息之间的拓扑关系提取驾驶员自然驾驶状态特征;
关键帧序列提取步骤:若驾驶员处于非自然驾驶状态,则进行关键帧提取。关键帧序列提取方法基于强化学习的方式,通过姿态检测模型反馈相应的奖励,并根据奖励和姿态变化更新动作价值函数。每一个非自然状态的发生都会更新动作价值函数,直到得到适用于每个驾驶员的稳定的关键帧提取策略。通过关键帧提取策略经过一定时间的自适应在线训练,得到最具代表性的关键帧序列;
姿态检测步骤:若驾驶员处于自然驾驶状态,则直接进行姿态检测;若驾驶员处于非自然驾驶状态,则进行关键帧提取,得到最具代表性的关键帧序列,并将其输入姿态检测模型;关键帧提取过程中若不满足关键帧提取策略,则放弃该时刻的关键帧提取,直接进行姿态检测;
安全预警步骤:根据姿态检测步骤得到的检测结果进行安全预警。
进一步的,所述准备阶段基于时间与空间变化的驾驶员动态行为,利用机器学习算法训练得到驾驶员姿态检测模型,结合保护动机理论建立具有引导性质的安全预警机制,具体包括:
所述姿态检测模型的训练包括从训练集中采集多帧不连续图像中的关键点作为姿态检测模型的多维度输入数据,该输入数据从空间和时间上对驾驶员的特征以关键点的形式呈现。以类别作为姿态检测模型的输出结果;
所述安全预警机制从驾驶员对社会和交通法规的认识程度上对其驾驶姿态进行解释,以驾驶员对于车内环境的响应成本来引导其驾驶行为。
进一步的,所述关键点检测步骤中,利用OpenPose关键点检测系统只选取12个最能表述驾驶员行为的关键点和68个面部关键点,输出其对应在图像中的坐标值。
进一步的,所述关键点检测步骤中,OpenPose关键点检测系统将研究对象从视频中的每帧图像的全部像素点变成关键点数据,包括将视频中的每一帧图像建模成G(N,W,V),N向量为80个关键点对应的编号,W向量为80个关键点对应的相对于以脖子为原点的79个相对二维坐标值,V向量为W向量对应的关键点相对于原点的曼哈顿距离,各个变量为:
Gq=(Nq,Wq,Vq) q=1,2…n
Nq=i i=1,2…80
Wq=(xi,yi)
i表示1-80个关键点,n表示某一动作的最大帧数、yo表示代表脖子关键点的坐标值、xo表示脖子关键点的坐标值、o表示脖子对应的关键点,x,y表示各个关键点对应的坐标值,q为对应的视频帧编号。
进一步的,所述强化学习采用基于值的方法:通过不断地学习驾驶员状态的变化,优化对不同状态下的动作价值估计函数,从而直到模型收敛,获得最优动作控制策略,将关键帧的挑选过程建立为马尔可夫决策过程,马尔可夫决策过程包括动作、状态和奖励,其中状态s描述为驾驶员的状态发生改变时对应的图像帧,状态的变化通过向量V来描述,状态s:
s=φ(q,V)
动作a描述为对于图像的选择与忽略,奖励r通过动作检测模型检测得到的结果返回相应的奖励,通过优化不同状态下的动作价值函数Q,获得最优动作控制策略,动作价值函数的跟新表达式如下:
Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)-Q(s,a)]
s←s′
α表示学习率、γ表示衰减值、s′表示相对于状态s的下一个状态、a′表示在状态s′下选择的动作。
进一步的,动作检测模型可以准确识别4种状态下的驾驶员特征,分别为:一级不良驾驶状态、二级不良驾驶状态、正常驾驶状态和危险驾驶状态。
进一步的,所述姿态检测模型根据机器学习得到,其训练规则可归纳为如下,包括:所述正常驾驶行为表述为驾驶员关键点信息相对于初始化信息变化不大;所述危险驾驶行为表述为驾驶员关键点信息相对于初始化信息发生大幅度波动;所述不良驾驶行为表述为驾驶员关键点信息相对于初始化信息发生小幅度波动,二级不良驾驶行为表述为驾驶员处于不良驾驶行为,且驾驶员的面部特征仍然处于正常驾驶状态;一级不良驾驶行为表述为驾驶员处于不良驾驶行为,且驾驶员的面部特征仍然处于非正常驾驶状态,所述面部特征处于正常状态表述为驾驶员目视驾驶前方。
进一步的,所述关键点检测步骤后,利用面部关键点进行三次样条插值构建面部特征,进行驾驶员身份识别,将面部关键点进行三次样条插值后,得到表征眼睛、嘴巴、脸型的函数曲线,利用函数曲线体现的每一个驾驶员的特征来进行身份识别。
进一步的,安全预警的实施具体包括:对一级不良驾驶行为采取紧急危险提醒预警并提醒行为主体接受该行为可能的法律惩罚;对二级不良驾驶行为,系统忽略,不采取危险提醒,但告知行为主体该行为的影响及相关行为的法律责任;对危险驾驶行为,采取紧急语音提醒,采取驾驶权转移处理;若系统仍旧检测不到驾驶员的自然驾驶状态,通过导航系统,实现自动求助最近的救护站。
本发明的优点及有益效果如下:
1、本发明所述的一种基于强化学习的驾驶员异常姿态监测方法,主要特点是通过关键点检测系统将研究对象从图像像素点转化为关键点数据,极大减少了CPU运算负担和内部缓存负担。基于OpenPose实时关键点监测系统,提取驾驶员关键点信息,使后续处理的对象从图像大数据转为骨骼关键点小数据,使对CPU的要求降低。在本发明背景下,提取驾驶员骨骼关键点信息相比于传统方法中提取人体局部位置特征更加可靠稳定。
2、本发明所述的一种基于强化学习的驾驶员异常姿态监测方法,主要特点是当驾驶员更替时,系统会判断驾驶员是否更替,系统会自动跟新关键帧提取策略,使检测结果及时且高效。基于强化学习的方式,使系统自行学习不同驾驶员的行为特点,经过多个回合的关键帧迭代选择,重新得出最优关键帧选择策略,获取最能代表该动作的图像序列。其中,关键帧提取策略并不会将驾驶员的一些小动作当作异常驾驶姿态,保证了异常姿态检测的可靠性。
3、本发明所述的一种基于强化学习的驾驶员异常姿态监测方法,主要特点是姿态检测模型的训练过程输入的是驾驶员动作的趋势特征,不必像传统方法训练每一种动作的数据,使模型更具有适用性。将驾驶员的驾驶行为根据产生的结果分类为:正常驾驶行为、不良驾驶行为和危险驾驶行为。并根据3种情况下的关键点运动趋势挑选训练数据,且训练数据以一个动作的多帧图像对应的关键点信息反应运动趋势。
4、本发明所述的一种基于强化学习的驾驶员异常姿态监测方法,主要特点是基于保护动机理论建立安全预警机制,引导驾驶员减少在驾驶过程当中出现具有潜在危险的行为。当驾驶员处于不良驾驶行为时及时提醒驾驶员该行为的法律后果,既可以增加驾驶员的法律意识,也可以对驾驶员的行为约束,从而达到纠正不良驾驶行为的目的。
附图说明
图1是本发明提供优选实施例的方法示意图
图2为本发明的一个较佳实施例的驾驶员骨骼关键点示意图
图3为本发明的一个较佳实施例的驾驶员面部关键点示意图
图4为本发明的一个较佳实施例的行为描述图
图5为本发明的一个较佳实施例的关键帧提取过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
图1为本实例的方法示意图,具体步骤为:该方法由视频获取、关键点检测、关键帧序列提取、姿态检测和安全预警5个部分组成。具体步骤包括以下两方面:(1)检测前的准备:基于时间与空间都在变化的驾驶员动态行为,利用机器学习算法训练得到驾驶员姿态检测模型。结合保护动机理论建立具有引导性质的安全预警机制,提高驾驶员的交通安全意识。
(2)检测步骤:通过车载单目摄像机获取驾驶员的驾驶视频。利用OpenPose关键点检测系统标记视频中每一帧图像中驾驶员的面部关键点和骨骼关键点,使问题规模从研究图像中的像素点转换为驾驶员姿态变化关键点。利用参考点重构并归一化处理后的关键点的初始化状态信息之间的拓扑关系构建驾驶员自然驾驶状态特征,为非自然驾驶状态提供匹配依据。利用面部关键点进行三次样条插值构建面部特征,进行驾驶员身份识别,保证汽车拥有者的财产安全。若驾驶员处于自然驾驶状态,则直接进行姿态检测,并根据检测结果对驾驶员进行安全预警。若驾驶员处于非自然驾驶状态,则进行关键帧提取,获取驾驶员处于非自然驾驶状态的动作视频序列。该过程基于强化学习的方式,通过姿态检测模型反馈相应的奖励,并根据奖励和某种姿态的每个动作更新动作价值函数,每一个非自然状态的发生都会更新动作价值函数,直到得到适用于每个驾驶员的稳定的关键帧提取策略。通过关键帧提取方法经过一定时间的自适应在线训练得到最具代表性的关键帧序列,并将其输入姿态检测模型得到检测结果,最后根据检测结果进行安全预警。
本发明利用OpenPose关键点检测系统提取驾驶员的骨骼关键点和面部关键点在图像中的位置信息。图2为步骤(2)中得到的12个骨骼关键点:1-脖子,2-鼻子,3-左眼,4-右眼,5-左耳,6-右耳,7-左肩,8-右肩,9-右肘,10-右腕,11-左肘,12-左腕。图3为步骤(3)中得到的68个骨骼关键点。原始OpenPose关键点检测系统得到的是整个人体骨骼关键点,本方法中改进OpenPose系统,只选取12个最能表述驾驶员行为的关键点,输出其对应在图像中的坐标值。
本实施例中在驾驶员刚启动检测系统的一定时间内,记录驾驶员的初始关键点坐标,这样做记录驾驶员正常情况下的特征,为检测结果增加准确性。同时,系统根据面部关键点信息记录驾驶员特征,便于驾驶员的身份识别;另一方面,系统根据面部关键点信息记录自然驾驶状态的驾驶员面部特征,以备与非自然驾驶状态进行对比分析。
系统通过关键点检测系统将研究对象从视频中的每帧图像变成关键点数据。包括将视频中的每一帧图像建模成G(N,W,V),N向量为80个关键点对应的编号,W向量为80个关键点对应的相对于以脖子为原点的79个相对二维坐标值,V向量为W向量对应的关键点相对于原点的曼哈顿距离。
各个变量,为:
Gq=(Nq,Wq,Vq) q=1,2…n
Nq=i i=1,2…80
Wq=(xi,yi)
i表示1-80个关键点,n表示某一动作的最多视频帧、yo表示代表脖子关键点的坐标值、xo表示脖子关键点的坐标值、o表示脖子对应的关键点,x,y表示各个关键点对应的坐标值,q为对应的视频帧编号。
强化学习主要包括两类方法:基于值和基于概率的方法。本方法采用基于值的方法:通过不断的学习驾驶员状态的变化,优化对不同状态下的动作价值估计函数,从而直到模型收敛,获得最优动作控制策略。因此将关键帧的挑选过程建立为马尔可夫决策过程。马尔可夫决策过程包括动作、状态和奖励。其中所述状态s描述为驾驶员的状态发生改变时对应的图像帧,其所述状态的变化通过V的变化来描述。状态s:
s=φ(q,V)
所述动作a描述为对于图像的选择与忽略。所述奖励r通过动作检测模型检测得到的结果返回相应的奖励。通过优化不同状态下的动作价值函数Q,获得最优动作控制策略。动作价值函数的跟新表达式如下:
Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)-Q(s,a)]
s←s′
α表示学习率、γ表示衰减值、s′表示相对于状态s的下一个状态、a′表示在状态s′下选择的动作。
图5为基于强化学习的关键帧提取流程示意图。具体为控制器检测到环境的变化,即该帧图像对应的V向量相对于前一帧产生超过一定阈值的变化量,就进入关键帧提取过程。根据状态转移函数执行动作a(选择该帧图像或忽略该帧)。定义V的变化量越大,选择该帧的概率越大。当选择的关键帧达到m帧,即可通过动作检测模型得到一个奖励值r。随之跟新动作价值函数Q。学习器的目标是长期最大化来自于环境反馈的奖励。驾驶员每次的状态变化都会不断返回奖励值,不断跟新动作价值函数,直到动作价值函数不再变化,即模型已经达到收敛的状态,关键帧提取模型才可以达到真正意义上的效果。另一方面如果关键帧提取过程不满足关键帧提取策略,则停止该过程,直接将当前视频帧输入姿态检测模型,该过程可以忽略驾驶员的对检测结果产生干扰的一些小动作,使预警效果更加人性化。
姿态检测模型的输入数据是对应的关键帧的V向量组成的集合体,输出的结果是4类驾驶状态:一级不良驾驶状态、二级不良驾驶状态、危险驾驶状态和正常驾驶状态,如图3。鉴于上述关键帧提取模型提取的是状态发生变化的关键帧序列,姿态检测模型只需返回不良驾驶状态和危险驾驶状态对应的奖励值。姿态检测模型预测为自然驾驶状态的结果,不进行预警。
驾驶员状态包括打电话、喝水、突发疾病、昏倒在方向盘上等驾驶动作,将所述驾驶状态归类为正常驾驶状态、危险驾驶状态和不良驾驶状态。正常驾驶状态下,驾驶员的骨骼关键点只会发生微小波动;不良驾驶状态下,骨骼关键点发生部分偏移;危险状态下骨骼关键点发生严重偏移,甚至无法找到骨骼关键点。驾驶员有时可能不得以要处于不良驾驶状态下,比如紧急通话等。系统考虑这方面的情况,若驾驶员处于不良驾驶状态,但面部状态仍处于正常驾驶状态,即目视驾驶前方,即认为不必对驾驶员进行安全预警。基于上述的分析,姿态检测模型可以准确识别4种状态下的驾驶员特征,分别为:一级不良驾驶状态、二级不良驾驶状态、正常驾驶状态和危险驾驶状态。形象描述如图4所示。
安全预警的实施具体包括:对一级不良驾驶行为采取紧急危险提醒预警并提醒行为主体接受该行为可能的法律惩罚。对二级不良驾驶行为,系统忽略,不采取危险提醒,但告知行为主体该行为的影响及相关行为的法律责任。对危险驾驶行为,采取紧急语音提醒,进一步可采取驾驶权转移处理;若再进一步,系统仍旧检测不到驾驶员的正常信息,通过导航系统,实现自动求助最近的救护站。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。