疲劳检测方法、装置、系统及计算机可读存储介质
技术领域
本发明涉及图像检测技术领域,尤其是涉及一种疲劳检测方法、装置、系统及计算机可读存储介质。
背景技术
众所周知,目标对象(诸如,人)的疲劳程度可能会影响到目标对象的行为,因此在一些关键场合下需要尤为关注目标对象的疲劳程度,以避免目标对象因过于疲劳而出现的不佳行为。以典型的驾驶场合为例,如果驾驶员因睡眠不足、驾驶时间过长等原因而疲劳,则会在驾驶过程中产生生理机能和心理机能的失调,从而影响驾驶员的注意、感觉、知觉、思维、判断、意志、决定和运动等诸方面因素。诸如,驾驶员处于轻度疲劳时,可能会出现换档不及时和不准确;当驾驶员处于重度疲劳时,往往会下意识操作或出现短时间睡眠现象,严重时会失去对车辆的控制能力。因此,在一些诸如驾驶车辆内等关键场合对目标对象进行疲劳检测尤为重要。
发明内容
有鉴于此,本发明的目的在于提供一种疲劳检测方法、装置、系统及计算机可读存储介质,在简便易行的基础上能够有效提升疲劳检测的准确率。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种疲劳检测方法,包括:获取目标对象在第一预设时长内的连续帧图像;检测各所述帧图像中的所述目标对象的多个嘴部关键点;基于所述嘴部关键点确定所述目标对象在各所述帧图像中的嘴部开闭状态;根据第二预设时长以及所述目标对象在各所述帧图像中的嘴部开闭状态,记录所述目标对象在所述第一预设时长内发生的打哈欠事件的次数;其中,所述第二预设时长小于所述第一预设时长,且所述打哈欠事件为:所述目标对象的嘴部持续张开时长不低于所述第二预设时长;基于所述打哈欠事件的次数,确定所述目标对象的疲劳程度。
进一步,所述检测各所述帧图像中的所述目标对象的多个嘴部关键点的步骤,包括:分别检测各所述帧图像中的所述目标对象的第一嘴部关键点、第二嘴部关键点、第三嘴部关键点和第四嘴部关键点;其中,所述第一嘴部关键点为嘴部的左侧嘴角,所述第二嘴部关键点为嘴部的右侧嘴角,所述第三嘴部关键点为嘴部上唇的内唇缘中心,所述第四嘴部关键点为嘴部下唇的内唇缘中心。
进一步,所述基于所述嘴部关键点确定所述目标对象在各所述帧图像中的嘴部开闭状态的步骤,包括:分别计算各所述帧图像中的第一嘴部关键点与第二嘴部关键点之间的左右距离值、第三嘴部关键点和第四嘴部关键点之间的上下距离值;判断各所述帧图像中的上下距离值与左右距离值的比值是否大于预设阈值;将比值大于所述预设阈值的帧图像确定为所述目标对象处于嘴部张开状态,将比值小于所述预设阈值的帧图像确定为所述目标对象处于嘴部闭合状态。
进一步,所述根据第二预设时长以及所述目标对象在各所述帧图像中的嘴部开闭状态,记录所述目标对象在所述第一预设时长内发生的打哈欠事件的次数的步骤,包括:将所述连续帧图像中的各所述帧图像按照时间顺序逐一作为当前帧图像,对所述当前帧图像执行预设的检测操作,直至所述连续帧图像均执行所述检测操作后,得到所述目标对象在所述第一预设时长内发生的打哈欠事件的次数;其中,所述预设的检测操作包括如下步骤:根据所述目标对象在所述当前帧图像中的嘴部开闭状态,以及所述目标对象在所述当前帧图像之前的帧图像的嘴部开闭状态,判断所述当前帧图像是否为首次张嘴帧图像或者首次闭嘴帧图像;如果所述当前帧图像为首次张嘴帧图像,记录所述当前帧图像对应的首次张嘴时刻,并开启检测下一帧图像;如果所述当前帧图像为首次闭嘴帧图像,记录所述当前帧图像对应的首次闭嘴时刻,并获取在所述当前帧图像之前最后记录的首次张嘴时刻,并判断所述首次闭嘴时刻与所述首次张嘴时刻之间的差值是否大于所述预设第二时长;如果是,将所述打哈欠事件的次数加一,并开启检测下一帧图像;如果所述当前帧图像为所述连续帧图像中的最后帧图像,且所述目标对象在所述当前帧图像中处于嘴部张开状态,获取在所述当前帧图像之前最后记录的首次张嘴时刻,并判断所述当前帧图像对应的时刻与所述首次张嘴时刻之间的差值是否大于所述预设第二时长;如果是,将所述打哈欠事件的次数加一;如果所述当前帧图像不为所述连续帧图像中的最后帧图像,且不为首次闭嘴帧图像和首次张嘴帧图像,直接开启检测下一帧图像。
进一步,所述方法还包括:将确定的打哈欠事件加入至打哈欠列表中,并在所述打哈欠列表中记录所述打哈欠事件对应的首次张嘴时刻和首次闭嘴时刻;如果所述打哈欠列表中还记录有所述第一预设时长之前发生的打哈欠事件,将所述第一预设时长之前发生的打哈欠事件清除;所述得到所述目标对象在所述第一预设时长内发生的打哈欠事件的次数的步骤,包括:统计所述打哈欠列表中记录的所述第一预设时长内的打哈欠事件,将统计次数确定为所述目标对象在所述第一预设时长内发生的打哈欠事件的次数。
进一步,所述基于所述打哈欠事件的次数,确定所述目标对象的疲劳程度的步骤,包括:如果所述打哈欠事件的次数低于预设第一数值,确定所述目标对象不疲劳;如果所述打哈欠时间的次数大于或等于所述预设第一数值,且小于所述预设第二数值,确定所述目标对象轻度疲劳;如果所述打哈欠事件的次数大于或等于所述第二数值,确定所述目标对象重度疲劳。
进一步,所述预设阈值为0.4。
进一步,所述第二预设时长为800毫秒。
第二方面,本发明实施例还提供一种疲劳检测装置,所述装置包括:帧图像获取模块,用于获取目标对象在第一预设时长内的连续帧图像;关键点检测模块,用于检测各所述帧图像中的所述目标对象的多个嘴部关键点;嘴部状态确定模块,用于基于所述嘴部关键点确定所述目标对象在各所述帧图像中的嘴部开闭状态;打哈欠次数记录模块,用于根据第二预设时长以及所述目标对象在各所述帧图像中的嘴部开闭状态,记录所述目标对象在所述第一预设时长内发生的打哈欠事件的次数;其中,所述第二预设时长小于所述第一预设时长,且所述打哈欠事件为:所述目标对象的嘴部持续张开时长不低于所述第二预设时长;疲劳确定模块,用于基于所述打哈欠事件的次数,确定所述目标对象的疲劳程度。
第三方面,本发明实施例提供了一种疲劳检测系统,所述系统包括:图像采集装置、处理器和存储装置;所述图像采集装置,用于采集目标对象的连续帧图像;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如第一方面任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面任一项所述的方法的步骤。
本发明实施例提供了一种疲劳检测方法、装置、系统及计算机可读存储介质,在获取目标对象在第一预设时长内的连续帧图像后,可以根据帧图像中目标对象的嘴部关键点确定目标对象在各帧图像中的嘴部开闭状态,在将目标对象的嘴部持续张开时长不低于所述第二预设时长记为一次打哈欠事件的基础上,根据目标对象在各帧图像中的嘴部开闭状态统计目标对象在第一预设时长内发生的打哈欠事件的次数,进而确定目标对象的疲劳程度。这种方式仅需关注目标对象的嘴部状态,而且通过在连续时长内多次统计打哈欠事件来综合确定目标对象的疲劳程度,简单可行且准确率较高。
本发明实施例的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明实施例的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例所提供的一种电子设备的结构示意图;
图2示出了本发明实施例所提供的一种疲劳检测方法流程图;
图3示出了本发明实施例所提供的一种嘴部关键点的标记示意图;
图4示出了本发明实施例所提供的一种嘴部开闭状态序列图;
图5示出了本发明实施例所提供的一种当前帧图像的检测方法流程图;
图6示出了本发明实施例所提供的一种疲劳检测装置的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到现有的疲劳检测技术繁琐复杂且准确率不高,为改善此问题,本发明实施例提供的一种疲劳检测方法、装置、系统及计算机可读存储介质,该技术可以采用相应的软件或硬件实现,以下对本发明实施例进行详细介绍。
实施例一:
首先,参照图1来描述用于实现本发明实施例的一种疲劳检测方法、装置、系统及计算机可读存储介质的示例电子设备100。
如图1所示的一种电子设备的结构示意图,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108以及图像采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
所述处理器102可以采用数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)中的至少一种硬件形式来实现,所述处理器102可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元中的一种或几种的组合,并且可以控制所述电子设备100中的其它组件以执行期望的功能。
所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
所述图像采集装置110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。
示例性地,用于实现根据本发明实施例的疲劳检测方法、装置、系统及计算机可读存储介质的示例电子设备可以被实现为诸如智能手机、平板电脑、计算机等智能终端。
实施例二:
本实施例提供了一种疲劳检测方法,该方法可以由上述电子设备执行,参见图2所示的一种疲劳检测方法流程图,该方法包括如下步骤:
步骤S202,获取目标对象在第一预设时长内的连续帧图像。在具体实施时,目标对象包括但不限为人,也可以是实验观察的动物。以下均以目标对象是人为例进行说明。第一预设时长可以根据需要而自行设定,如果是对目标对象的状态进行实时检测,则可以将第一预设时长设置较短,诸如仅设置3分钟。
一种方式中,执行疲劳检测方法的电子设备可以通过摄像装置实时采集包含有目标对象的视频流,从视频流中可得到指定时长内的连续帧图像;诸如,该摄像装置可以安装于车辆内,该目标对象为驾驶员;又诸如,该摄像装置可以设置于电脑前,该目标对象可以为学生等,在此不再赘述。另一种方式中,电子设备可以直接接收预先录制好的视频流,并从该视频流中得到指定时长内的连续帧图像。
步骤S204,检测各帧图像中的目标对象的多个嘴部关键点。在具体实现时,可以预先从各帧图像中检测出人脸,然后再在人脸上检测嘴部关键点。
可以理解的是,人们的嘴部轮廓大致相同,均具有关键点,因此可预先设置嘴部关键点位置,并基于预先设置的嘴部关键点位置从帧图像中检测出目标对象的嘴部关键点。嘴部关键点的数量应当为多个,以体现出嘴型特征。为了使嘴型检测更为方便快捷,在一种实施方式中,可以仅设置四个嘴部关键点,然后分别检测各帧图像中的目标对象的第一嘴部关键点、第二嘴部关键点、第三嘴部关键点和第四嘴部关键点。其中,第一嘴部关键点为嘴部的左侧嘴角,第二嘴部关键点为嘴部的右侧嘴角,第三嘴部关键点为嘴部上唇的内唇缘中心,第四嘴部关键点为嘴部下唇的内唇缘中心。具体可参见图3所示的一种嘴部关键点的标记示意图,清楚的示意了四个关键点的位置。应当注意的是,图3仅是便于理解的简单示意图,不应当被视为限制。
步骤S206,基于嘴部关键点确定目标对象在各帧图像中的嘴部开闭状态。嘴部开闭状态包括嘴部张开状态(张嘴状态)以及嘴部闭合状态(闭嘴状态)。
诸如,可以分别计算各帧图像中的第一嘴部关键点与第二嘴部关键点之间的左右距离值、第三嘴部关键点和第四嘴部关键点之间的上下距离值,然后判断各帧图像中的上下距离值与左右距离值的比值是否大于预设阈值,最后将比值大于预设阈值的帧图像确定为目标对象处于嘴部张开状态,将比值小于预设阈值的帧图像确定为目标对象处于嘴部闭合状态。上下距离值和左右距离值可参照两点之间的距离公式实现,诸如两点坐标分别为(x1,y1)、(x2、y2),则距离公式可表示为
在上述方式中,嘴部的开闭状态可以根据嘴部纵向张开程度与嘴部横向张开程度的比值进行综合确定,诸如,当纵向张开程度(也即,上述上下距离值)与横向张开程度(也即,上述左右距离值)的比值大于预设阈值时,可以确定目标对象张嘴,反之则认为是目标对象闭嘴。应当注意的是,人在正常说话时也会出现嘴部微张的情况,通过上述嘴部开闭状态的判断,人在嘴部微张时,纵向张开程度与横向张开程度通常小于预设阈值,因此在本实施例中仍旧认为是嘴部闭合状态。基于此,鉴别嘴部开闭状态的预设阈值也是判别人是否张嘴的关键因素,如果预设阈值设置较小,则可能会将人说话时的嘴部开合程度误判为人在张嘴,从而容易在后续误判为人在打哈欠;如果预设阈值设置较大,则可能人在打哈欠时,也会被误判为人仅是在说话,而没有准确识别出人的当前状态,同样影响了疲劳检测的准确度。
本实施例中提及的预设阈值可以经过多次实验而综合确定,发明人对多数人的张嘴程度进行了充分研究,将预设阈值设定为0.4可以较好地区分开人是处于张嘴状态还是闭嘴状态。也即,如果前述的上下距离值与左右距离值的比值大于0.4,则说明人处于张嘴状态,如果上下距离值与左右距离值的比值小于0.4,则说明人处于闭嘴状态。当然,也可以根据实际情况而采用其它预设阈值来鉴别嘴部的开闭状态,在此不进行限定。
步骤S208,根据第二预设时长以及目标对象在各帧图像中的嘴部开闭状态,记录目标对象在第一预设时长内发生的打哈欠事件的次数;其中,第二预设时长小于第一预设时长,且打哈欠事件为:目标对象的嘴部持续张开时长不低于第二预设时长。
打哈欠的判别也是疲劳程度的关键检测环节,而相关的疲劳检测技术中只要检测到目标对象张嘴,则确认目标对象打哈欠,容易出现误判;本实施例只有在目标对象持续张嘴达到设定的预设时长(上述第二预设时长)时,才会确认目标对象在打哈欠。这种方式有效提升了目标对象打哈欠的判断准确性。基于此,第二预设时长也是鉴别目标对象是否打哈欠的关键因素,第二预设时长太短或太长,均会影响到目标对象的打哈欠判别结果,进而影响疲劳检测的准确性。发明人对多数人的打哈欠事件进行了充分研究,确定第二预设时长为800毫秒可以较好地区分开打哈欠与否。当然,第二预设时长也可以根据实际情况而采用其它时长,在此不进行限定。
步骤S210,基于打哈欠事件的次数,确定目标对象的疲劳程度。在实际应用中,可以预先设置疲劳程度与打哈欠次数的对应关系,可以理解的是,目标对象在第一预设时长内的打哈欠事件的次数越多,目标对象越疲劳,疲劳程度越大。
本发明实施例提供的上述疲劳检测方法,在获取目标对象在第一预设时长内的连续帧图像后,可以根据帧图像中目标对象的嘴部关键点确定目标对象在各帧图像中的嘴部开闭状态,在将目标对象的嘴部持续张开时长不低于所述第二预设时长记为一次打哈欠事件的基础上,根据目标对象在各帧图像中的嘴部开闭状态统计目标对象在第一预设时长内发生的打哈欠事件的次数,进而确定目标对象的疲劳程度。这种方式仅需关注目标对象的嘴部状态,而且通过在连续时长内多次统计打哈欠事件来综合确定目标对象的疲劳程度,简单可行且准确率较高。
本实施例在根据第二预设时长以及目标对象在各帧图像中的嘴部开闭状态,记录目标对象在第一预设时长内发生的打哈欠事件的次数时,可以将连续帧图像中的各帧图像按照时间顺序逐一作为当前帧图像,对当前帧图像执行预设的检测操作,直至连续帧图像均执行检测操作后,得到目标对象在第一预设时长内发生的打哈欠事件的次数。可以理解的是,上述检测连续帧图像中各帧图像的嘴部关键点,可以是首先统一检测,也可以是各帧图像按照时间顺序逐一作为当前帧图像时再分别检测,具体可根据实际应用情况而定,在此不进行限制。
其中,上述预设的检测操作包括如下步骤:
(1)根据目标对象在当前帧图像中的嘴部开闭状态,以及目标对象在当前帧图像之前的帧图像的嘴部开闭状态,判断当前帧图像是否为首次张嘴帧图像或者首次闭嘴帧图像。具体而言,可以比对当前帧图像的嘴部开闭状态与当前帧图像的前一帧图像的嘴部开闭状态,来判断当前帧图像是否为首次张嘴帧图像或者首次闭嘴帧图像。诸如,如果当前帧图像为张嘴状态,而当前帧图像的前一帧图像为闭嘴状态,则认为当前帧图像为首次张嘴帧图像。如果当前帧图像为闭嘴状态,而当前帧图像的前一帧图像为张嘴状态,则认为当前帧图像为首次闭嘴帧图像。
应当注意的是,在连续时长内可能出现多次打哈欠事件,因此连续帧图像中可能会有多个首次张嘴帧图像和多个首次闭嘴帧图像。
(2)如果当前帧图像为首次张嘴帧图像,记录当前帧图像对应的首次张嘴时刻,并开启检测下一帧图像。其中,首次张嘴时刻又可称为首次张嘴时间戳。
(3)如果当前帧图像为首次闭嘴帧图像,记录当前帧图像对应的首次闭嘴时刻,并获取在当前帧图像之前最后记录的首次张嘴时刻,并判断首次闭嘴时刻与首次张嘴时刻之间的差值是否大于预设第二时长;如果是,将打哈欠事件的次数加一,并开启检测下一帧图像。由于当前帧图像前面可能出现多个首次张嘴图像及对应的首次张嘴时刻,因此获取的是在当前帧图像之前最后记录的首次张嘴时刻。
(4)如果当前帧图像为连续帧图像中的最后帧图像,且目标对象在当前帧图像中处于嘴部张开状态,获取在当前帧图像之前最后记录的首次张嘴时刻,并判断当前帧图像对应的时刻与首次张嘴时刻之间的差值是否大于预设第二时长;如果是,将打哈欠事件的次数加一。如果目标对象在连续帧图像最后为持续张嘴状态,则可以通过上述方式判断目标对象是否在第一预设时长的最后在打哈欠,以确保打哈欠次数记录的准确性。
(5)如果当前帧图像不为连续帧图像中的最后帧图像,且不为首次闭嘴帧图像和首次张嘴帧图像,直接开启检测下一帧图像。
为便于理解,可参见图4所示的一种嘴部开闭状态序列图,在图4中,以“C”表示呈现嘴部闭合状态的帧图像,以“O”表示呈现嘴部张开状态的帧图像,同时示意出了连续帧图像中第一帧图像对应的时刻为T0,最后一帧图像对应的时刻为T6;同时也示意出了首次张嘴时刻T1、T3和T5,首次闭嘴时刻T2和T4。其中,T6-T0=3min;T2-T1=100ms;T4-T3=1000ms;T6-T5=1200ms。
结合图4,通过采用本实施例提供的上述打哈欠次数的确定方式,以预设第二时长为800ms为例,可以得知目标对象在T3~T4期间以及在T6~T5期间处于打哈欠的状态,目标对象在预设第一时长(3min)之内发生的打哈欠事件次数为2次。
进一步,为了清楚的记录目标对象的打哈欠事件,本实施例提供的疲劳检测方法还包括:将确定的打哈欠事件加入至打哈欠列表中,并在打哈欠列表中记录打哈欠事件对应的首次张嘴时刻和首次闭嘴时刻;以图4为例,在打哈欠列表中可以记录如表1所示:
打哈欠事件 |
首次张嘴时刻 |
首次闭嘴时刻 |
1 |
T3 |
T4 |
2 |
T5 |
T6 |
表1
可以理解的是,如果是采用时间滑窗方式实时监测目标对象,随着时间的移动,打哈欠列表中还可能记录有当前正在监测的第一预设时长之前发生的打哈欠事件,为了确保当前正在监测的第一预设时长的打哈欠事件次数统计正确,因此可以将打哈欠列表中原记录的第一预设时长之前发生的打哈欠事件清除。进而可统计打哈欠列表中记录的第一预设时长内的打哈欠事件,将统计次数确定为目标对象在第一预设时长内发生的打哈欠事件的次数。
当统计得到目标对象在第一预设时长内发生的打哈欠事件的次数之后,即可根据打哈欠次数衡量目标对象的疲劳程度。在一种具体的实施方式中,可以将疲劳程度划分为三个等级,分别为不疲劳、轻度疲劳和重度疲劳。诸如,如果打哈欠事件的次数低于预设第一数值,确定目标对象不疲劳;如果打哈欠时间的次数大于或等于预设第一数值,且小于预设第二数值,确定目标对象轻度疲劳;如果打哈欠事件的次数大于或等于第二数值,确定目标对象重度疲劳。
在实际应用中,可以灵活设置上述数值,主要还取决于第一预设时长。诸如,以第一预设时长为3min为例,上述预设第一数值可以为1,预设第二数值可以为3。
综上所述,本实施例仅需关注目标对象的嘴部状态,而且通过在连续时长内多次统计打哈欠事件来综合确定目标对象的疲劳程度,简单可行且准确率较高,适用于诸如监测驾驶员疲劳程度、监测学生疲劳程度等多种场合。
实施例三:
在前述实施例的基础上,本实施例提供了一种应用前述疲劳检测方法的具体实施方式,具体包括如下步骤:
步骤一:获取视频流中的第一持续时长连续帧图像。该第一持续时长可以设定为3分钟。
步骤二:将连续帧图像中的每帧图像按照时间排列顺序逐一作为当前帧图像进行检测,具体可参见图5所示的一种当前帧图像的检测方法流程图,包括如下步骤:
步骤S501,对当前帧图像进行人脸检测,并获取目标对象在当前帧图像中的四个嘴部关键点。
步骤S502,根据四个嘴部关键点的位置计算目标对象的嘴部的上下距离和左右距离。
步骤S503,判断上下距离与左右距离的比值是否大于预设阈值;如果是,执行步骤S504,如果否,执行步骤S510;
上述预设阈值可以为0.4。
步骤S504,确定目标对象在当前帧图像中处于张嘴状态,然后执行步骤S505;
步骤S505,判断目标对象在前一帧图像中是否为张嘴状态;如果是,执行步骤S506,如果否,执行步骤S509。
步骤S506,判断当前帧图像是否为最后一帧图像;如果是,执行步骤S507;如果否,执行步骤S516。
步骤S507,判断当前帧图像对应的时刻与预先记录的首次张嘴时刻FOT之间的差值是否大于第二预设时长,如果是,执行步骤S508:将打哈欠列表中记录的打哈欠次数加1。如果否,结束。
上述第二预设时长可以设定为800毫秒。
步骤S509,确定当前帧图像为首次张嘴帧图像,并记录当前帧图像对应的首次张嘴时刻FOT。然后执行步骤S516。
步骤S510,确定目标对象在当前帧图像中处于闭嘴状态。然后执行步骤S511。
步骤S511,判断目标对象在前一帧图像中是否为闭嘴状态;如果是,执行步骤S515,如果否,执行步骤S512。
步骤S512,确定当前帧图像为首次闭嘴帧图像,并记录当前帧图像对应的时刻。然后执行步骤S513。
步骤S513,判断当前帧图像对应的时刻与预先记录的首次张嘴时刻FOT之间的差值是否大于第二预设时长。如果是,执行步骤S514,如果否,执行步骤S516。
步骤S514,在打哈欠列表中记录本次打哈欠事件,打哈欠次数加1,并将FOT重置为0。
步骤S515:判断当前帧图像是否为最后一帧图像;如果是,结束;如果否,执行步骤S516。
步骤S516:开始检测下一帧图像。
为便于实施,在本实施例中设定首次张嘴时刻FOT(又可称为首次张嘴时间戳);如果目标对象处于张嘴状态,则FOT被赋予有效的首次张嘴时刻值,如果目标对象处于闭嘴状态,则FOT被重置为0。可以通过检测FOT的值,来判断目标对象在之前处于张嘴还是闭嘴,如,FOT为非零的有效值,说明目标对象之前处于张嘴状态;如果FOT为零值,说明目标对象之前处于闭嘴状态。通过这种方式,能够简单清楚地记录目标对象之前的嘴部状态,还可以在检测到目标对象首次闭嘴时,直接基于FOT的值获知上一次首次张嘴对应的时刻,从而直接进行时长计算。
步骤三:遍历打哈欠列表,将打哈欠列表中记录的第一预设时长之前发生的打哈欠事件清除,并通过打哈欠列表统计目标对象在第一持续时长内打哈欠的总次数。
步骤四:根据目标对象在第一持续时长内打哈欠的总次数,确定目标对象的疲劳程度。诸如,0次为不疲劳,1~3次为轻度疲劳,3次及以上为重度疲劳。
综上所述,本实施例提供的疲劳检测方法,仅需关注目标对象的嘴部状态,而且通过在连续时长内多次统计打哈欠事件来综合确定目标对象的疲劳程度,简单可行且准确率较高,适用于诸如监测驾驶员疲劳程度、监测学生疲劳程度等多种场合。
实施例四:
对于实施例二中所提供的疲劳检测方法,本发明实施例提供了一种疲劳检测装置,参见图6所示的一种疲劳检测装置的结构框图,该装置包括以下模块:
帧图像获取模块602,用于获取目标对象在第一预设时长内的连续帧图像;
关键点检测模块604,用于检测各帧图像中的目标对象的多个嘴部关键点;
嘴部状态确定模块606,用于基于嘴部关键点确定目标对象在各帧图像中的嘴部开闭状态;
打哈欠次数记录模块608,用于根据第二预设时长以及目标对象在各帧图像中的嘴部开闭状态,记录目标对象在第一预设时长内发生的打哈欠事件的次数;其中,第二预设时长小于第一预设时长,且打哈欠事件为:目标对象的嘴部持续张开时长不低于第二预设时长;
具体实施时,上述第一预设时长可以为3分钟;第二预设时长可以为800毫秒。
疲劳确定模块610,用于基于打哈欠事件的次数,确定目标对象的疲劳程度。
本发明实施例提供的上述疲劳检测装置,在获取目标对象在第一预设时长内的连续帧图像后,可以根据帧图像中目标对象的嘴部关键点确定目标对象在各帧图像中的嘴部开闭状态,在将目标对象的嘴部持续张开时长不低于所述第二预设时长记为一次打哈欠事件的基础上,根据目标对象在各帧图像中的嘴部开闭状态统计目标对象在第一预设时长内发生的打哈欠事件的次数,进而确定目标对象的疲劳程度。这种方式仅需关注目标对象的嘴部状态,而且通过在连续时长内多次统计打哈欠事件来综合确定目标对象的疲劳程度,简单可行且准确率较高。
在一种实施方式中,上述关键点检测模块604用于:分别检测各帧图像中的目标对象的第一嘴部关键点、第二嘴部关键点、第三嘴部关键点和第四嘴部关键点;其中,第一嘴部关键点为嘴部的左侧嘴角,第二嘴部关键点为嘴部的右侧嘴角,第三嘴部关键点为嘴部上唇的内唇缘中心,第四嘴部关键点为嘴部下唇的的内唇缘中心。
在一种实施方式中,上述嘴部状态确定模块606用于:分别计算各帧图像中的第一嘴部关键点与第二嘴部关键点之间的左右距离值、第三嘴部关键点和第四嘴部关键点之间的上下距离值;判断各帧图像中的上下距离值与左右距离值的比值是否大于预设阈值;将比值大于预设阈值的帧图像确定为目标对象处于嘴部张开状态,将比值小于预设阈值的帧图像确定为目标对象处于嘴部闭合状态。在一种实施方式中,上述预设阈值为0.4。
在一种实施方式中,上述打哈欠次数记录模块608用于:将连续帧图像中的各帧图像按照时间顺序逐一作为当前帧图像,对当前帧图像执行预设的检测操作,直至连续帧图像均执行检测操作后,得到目标对象在第一预设时长内发生的打哈欠事件的次数;
其中,预设的检测操作包括如下步骤:
根据目标对象在当前帧图像中的嘴部开闭状态,以及目标对象在当前帧图像之前的帧图像的嘴部开闭状态,判断当前帧图像是否为首次张嘴帧图像或者首次闭嘴帧图像;
如果当前帧图像为首次张嘴帧图像,记录当前帧图像对应的首次张嘴时刻,并开启检测下一帧图像;
如果当前帧图像为首次闭嘴帧图像,记录当前帧图像对应的首次闭嘴时刻,并获取在当前帧图像之前记录的首次张嘴时刻,并判断首次闭嘴时刻与首次张嘴时刻之间的差值是否大于预设第二时长;如果是,将打哈欠事件的次数加一,并开启检测下一帧图像;
如果当前帧图像为连续帧图像中的最后帧图像,且目标对象在当前帧图像中处于嘴部张开状态,获取在当前帧图像之前记录的首次张嘴时刻,并判断当前帧图像对应的时刻与首次张嘴时刻之间的差值是否大于预设第二时长;如果是,将打哈欠事件的次数加一;
如果当前帧图像不为连续帧图像中的最后帧图像,且不为首次闭嘴帧图像和首次张嘴帧图像,直接开启检测下一帧图像。
在一种实施方式中,上述装置还包括:列表加入模块,用于将确定的打哈欠事件加入至打哈欠列表中,并在打哈欠列表中记录打哈欠事件对应的首次张嘴时刻和首次闭嘴时刻;清除模块,用于如果打哈欠列表中还记录有第一预设时长之前发生的打哈欠事件,将第一预设时长之前发生的打哈欠事件清除;
上述打哈欠次数记录模块608进一步用于:统计打哈欠列表中记录的第一预设时长内的打哈欠事件,将统计次数确定为目标对象在第一预设时长内发生的打哈欠事件的次数。
在一种实施方式中,上述疲劳确定模块610用于:如果打哈欠事件的次数低于预设第一数值,确定目标对象不疲劳;如果打哈欠时间的次数大于或等于预设第一数值,且小于预设第二数值,确定目标对象轻度疲劳;如果打哈欠事件的次数大于或等于第二数值,确定目标对象重度疲劳。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
实施例五:
对应于前述实施例所提供的方法和装置,本发明实施例还提供了一种疲劳检测系统,该系统包括图像采集装置、处理器和存储装置;
图像采集装置,用于采集目标对象的连续帧图像;
存储装置上存储有计算机程序,计算机程序在被处理器运行时执行上述疲劳检测方法。
本实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述任一项疲劳检测方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
本发明实施例所提供的疲劳检测方法、装置、系统及计算机可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。