发明内容
本申请实施例的目的在于提供一种注意力判定方法、模型训练方法及对应装置,以改善上述技术问题。
为实现上述目的,本申请提供如下技术方案:
第一方面,本申请实施例提供一种注意力判定方法,包括:获取待判定的人眼图像;将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,所述眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态;判断所述眼睛状态是否满足注意力判定条件,若所述眼睛状态满足所述注意力判定条件,则根据所述视线估计结果确定第一注意力判定结果。
在上述方法中,并非直接使用视线估计结果进行注意力判定,而是先对眼睛状态进行判断,仅在眼睛状态满足注意力判定条件时,才会根据视线估计结果进行注意力判定,从而有效避免了在某些非正常的眼睛状态(例如,闭眼、被遮挡)下得到的视线估计结果并不能有效地进行注意力判定的问题,显著提高的注意力判定的准确性。
在第一方面的一种实现方式中,所述眼睛状态包括眼睛开闭状态和眼睛遮挡状态,所述判断所述眼睛状态是否满足注意力判定条件,若所述眼睛状态满足所述注意力判定条件,则根据所述视线估计结果确定第一注意力判定结果,包括:判断所述眼睛开闭状态是否为眼睛睁开;若所述眼睛开闭状态为眼睛睁开,则判断所述眼睛遮挡状态是否为未被遮挡;若所述眼睛遮挡状态为未被遮挡,则根据所述视线估计结果确定第一注意力判定结果;其中,所述眼睛开闭状态为眼睛睁开且所述眼睛遮挡状态为未被遮挡,表明所述眼睛状态满足所述注意力判定条件。
若眼睛状态包括眼睛开闭状态和眼睛遮挡状态,在上述实现方式中,仅在眼睛睁开且眼睛未被遮挡时,才根据视线估计结果进一步判定注意力,此举有利于提高注意力判定的准确性。
在第一方面的一种实现方式中,所述根据所述视线估计结果确定第一注意力判定结果,包括:判断所述视线估计结果是否处于正常视线范围内;若所述视线估计结果处于所述正常视线范围内,则将所述第一注意力判定结果确定为第一结果,否则将所述第一注意力判定结果确定为第二结果,所述第一结果表示视线正常,所述第二结果表示视线偏离。
上述实现方式给出了一种根据视线估计结果进行注意力判定的具体方法:由于视线估计结果可以量化表示(例如,用姿态角表示视线),从而可以设定一个阈值范围(即上面的正常视线范围)来判定视线是否正常。
在第一方面的一种实现方式中,在所述判断所述眼睛开闭状态是否为眼睛睁开之后,所述方法还包括:若所述眼睛开闭状态为眼睛闭合,则将所述第一注意力判定结果确定为所述第二结果;在所述判断所述眼睛遮挡状态是否为未被遮挡之后,所述方法还包括:若所述眼睛遮挡状态为被遮挡,则将所述第一注意力判定结果确定为第三结果,所述第三结果表示注意力不可判断。
上述实现方式给出了一种在眼睛闭合或者眼睛被遮挡时的注意判定方法。此外,考虑对多帧图像进行注意力判定的情况,由于在判断眼睛状态时,先判断眼睛是否睁开,再判断眼睛是否被遮挡,因此有利于得到更多的明确判定结果(第二结果),从而能够增强注意力判定方法在实际系统中的可用性。相对地,如果先判断眼睛是否被遮挡,再判断眼睛是否睁开,则注意力判定结果中可能包含更多的非明确判定结果(第三结果),不容易为实际系统所采纳。
在第一方面的一种实现方式中,所述获取待判定的人眼图像,包括:获取人脸图像;从所述人脸图像中裁剪出所述人眼图像。
摄像头往往拍摄范围较大,很难只采集人眼图像,从而可以先采集人脸图像(指包含人脸的图像),再在从人脸图像中裁剪出人眼图像。裁剪方法有多种,例如可基于人脸图像的特征点检测结果进行裁剪,或者根据人脸图像的目标检测结果(目标为眼睛)进行裁剪等。
在第一方面的一种实现方式中,所述从所述人脸图像中裁剪出所述人眼图像,包括:检测得到所述人脸图像中人物的头部姿态;根据所述头部姿态,从所述人脸图像中裁剪出更靠近摄像头的眼睛的图像作为所述人眼图像。
此种实现方式针对的是采用单眼图像进行注意力判定的情况。人物的头部姿态不同时,两只眼睛的图像也具有不同的质量(此处的质量是针对视线估计和眼睛状态预测这两项任务而言),更靠近摄像头的眼睛图像具有较高的质量,选择其作为人眼图像有利于获得更精确的视线估计结果和眼睛状态预测结果,从而提高后续注意力判定的准确性。例如,人物正对摄像头时,若头部向自己的左侧偏转,则左眼将远离并侧对着摄像头,左眼图像在人脸图像中的面积也显著缩小,不利于对左眼进行视线估计以及眼睛状态预测,此时根据人物的头部姿态可选择右眼图像作为人眼图像,进行后续的注意力判定依据。
在第一方面的一种实现方式中,所述将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,包括:检测得到所述人脸图像中人物的头部姿态;所述将所述人眼图像及其对应的头部姿态输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态。
人物的头部姿态对于人眼图像的质量存在影响,从而在利用神经网络模型进行视线估计以及眼睛状态预测时,可将头部姿态作为模型的一项输入,以改善视线估计结果和眼睛状态预测结果。
在第一方面的一种实现方式中,所述方法还包括:检测得到所述人脸图像中人物的头部姿态;判断所述头部姿态是否处于正常姿态范围内;所述从所述人脸图像中裁剪出所述人眼图像,包括:若所述头部姿态处于所述正常姿态范围内,则从所述人脸图像中裁剪出所述人眼图像;所述方法还包括:若所述头部姿态处于所述正常姿态范围外,则将所述第一注意力判定结果确定为第二结果,所述第二结果表示视线偏离。
在上述实现方式中,仅在头部姿态正常时,才进一步进行人眼图像裁剪,头部姿态非正常时则直接判定为视线偏离,从而有效避免了在某些非正常的头部姿态(例如,偏转角度过大)下得到的人眼图像质量较差,并不能有效进行视线估计和眼睛状态预测的问题,有利于提高注意力判定的准确性。并且,由于头部姿态可以量化表示(例如,用姿态角表示视线),从而可以设定一个阈值范围(即上面的正常姿态范围)来判定头部姿态是否正常。
在第一方面的一种实现方式中,所述神经网络模型被训练为专门处理灰度图像,所述获取待判定的人眼图像,包括:获取原始人眼图像,所述原始人眼图像为彩色图像;将所述原始人眼图像转换为灰度图像,作为所述人眼图像。
可以将神经网络模型训练为专门用于处理彩色图像,但这样的话,对于黑白或红外摄像头采集的图像模型将不能很好地处理。而如果将神经网络模型训练为专门用于处理灰度图像,则黑白或红外摄像头采集的图像模型可以有效处理,彩色摄像头采集的彩色图像在转化为灰度图像后,模型也可以有效处理,即具有较高的兼容性。
在第一方面的一种实现方式中,所述神经网络模型为单一网络,该网络包括多个分支,所述将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,包括:将所述人眼图像输入至所述神经网络模型,获得所述多个分支中的视线估计分支输出的视线估计结果,以及,所述多个分支中的至少一个眼睛状态预测分支输出的至少一种眼睛状态。
可以利用不同的神经网络模型分别进行视线估计以及眼睛状态预测,也可以将视线估计和眼睛状态预测集成到一个神经网络模型的不同分支中。此举可以减少网络数量,便于设计轻量级网络,从而有利于将神经网络模型集成到一些硬件性能不高的环境(例如,手机、车载设备)中。
在第一方面的一种实现方式中,所述获取待判定的人眼图像,包括:从当前帧中获取所述人眼图像;在获得所述当前帧对应的第一注意力判定结果之后,所述方法还包括:对所述当前帧以及所述当前帧的至少一个前序帧对应的第一注意力判定结果进行统计,获得第一统计结果;将所述第一统计结果中出现频率最高的第一注意力判定结果确定为所述当前帧对应的第二注意力判定结果。
在上述实现方式中,对当前帧对应的第一注意力判定结果进行了多帧平滑处理,得到当前帧对应的第二注意力判定结果,此举有利于修正一些偶然因素造成的判定错误,提高注意力判定的准确性。
在第一方面的一种实现方式中,所述第二注意力判定结果的可取值包括第一结果、第二结果以及第三结果,所述第一结果表示视线正常,所述第二结果表示视线偏离,所述第三结果表示注意力不可判断;在所述将所述第一统计结果中出现频率最高的第一注意力判定结果确定为所述当前帧对应的第二注意力判定结果之后,所述方法还包括:对所述当前帧以及所述当前帧的至少一个前序帧对应的第二注意力判定结果进行统计,获得第二统计结果;其中,参与所述第二注意力判定结果统计的总帧数大于参与所述第一注意力判定结果统计的总帧数;判断所述第二统计结果中所述第三结果的总数是否大于第一阈值,若所述第二结果的总数大于所述第一阈值,则将所述当前帧对应的第三注意力判定结果确定为所述第三结果;若所述第三结果的总数不大于所述第一阈值,则判断所述第二统计结果中所述第二结果的总数是否大于第二阈值,若所述第二结果的总数大于所述第二阈值,则将所述当前帧的第三注意力判定结果确定为所述第二结果,否则,将所述当前帧的第三注意力判定结果确定为所述第一结果。
在上述实现方式中,对当前帧对应的第二注意力判定结果进行了进一步修正,得到当前帧对应的第三注意力判定结果。修正的依据是:短时间内的视线偏离或者注意力不可判断并不能等同于注意力分散,例如,人眨眼属于正常现象,若图像恰好在眨眼过程中眼睛闭合的时刻采集,可能被判定为视线偏离,这种判定结果是不恰当的。
按照上述依据,若人物的注意力在较长的时间内(超过第一阈值的帧数对应的时间)始终是不可判断的,最终的注意力判定结果(第三注意力判定结果)才会被确定为不可判断;若人物的视线在较长的时间内(超过第二阈值的帧数对应的时间)始终是偏离的,最终的注意力判定结果才会被确定为视线偏离;若以上两个条件均不满足,则最终的注意力判定结果为视线正常。
第二方面,本申请实施例提供一种模型训练方法,包括:获取训练用的人眼图像,所述人眼图像包括实际人眼图像以及渲染人眼图像,所述实际人眼图像带有视线标签以及眼睛状态标签,所述渲染人眼图像带有视线标签,所述眼睛状态标签包括眼睛开闭状态的标签和/或眼睛遮挡状态的标签;将所述人眼图像输入至待训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,所述眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态;根据所述视线估计结果、所述眼睛状态以及所述人眼图像带有的标签计算所述神经网络模型的预测损失,并根据所述预测损失,利用反向传播算法更新所述神经网络模型的参数;其中,所述实际人眼图像带有的标签用于计算所述预测损失中的视线估计损失以及眼睛状态预测损失,所述渲染人眼图像带有的标签用于计算所述预测损失中的视线估计。
上述方法用于训练第一方面或其可能的实现方式中使用的神经网络模型,该神经网络模型输出的视线估计结果和眼睛状态可以结合起来用于注意力判定,提高了注意力判定的准确性。并且,该方法中除了使用实际人眼图像之外,还使用了渲染人眼图像作为训练样本,从而有利于获得更丰富的训练样本,进而改善模型的预测性能以及泛化能力。
在第二方面的一种实现方式中,所述获取训练用的人眼图像,包括:利用渲染工具生成单眼渲染图像,所述单眼渲染图像均为左眼图像或者均为右眼图像;对所述单眼渲染图像进行随机的水平翻转,获得所述人眼图像中的所述渲染人眼图像。
由于人眼一般是对称分布的,从而可以对单眼渲染图像进行随机的水平翻转,以获得另一侧眼睛的渲染图像,此举有利于增强训练样本的均衡性,进而改善模型的预测性能以及泛化能力。
在第二方面的一种实现方式中,所述获取训练用的人眼图像,包括:获取实际人脸图像以及原始渲染人眼图像;利用所述实际人脸图像中的人眼特征点,从所述实际人脸图像中裁剪出所述实际人眼图像,以及,利用所述原始渲染人眼图像中的人眼特征点,从所述原始渲染人眼图像中裁剪出所述渲染人眼图像;其中,在裁剪所述实际人脸图像以及所述原始渲染人眼图像时,对根据所述人眼特征点所确定的裁剪区域进行随机的偏移和/或缩放。
人眼特征点的位置确定后,裁剪区域的位置也就确定了,根据裁剪区域可以直接从原始图像(指实际人脸图像或原始渲染人眼图像)中裁剪出人眼图像,但这样获得的人眼图像数量较少。在上述实现方式中,先对裁剪区域进行随机的偏移和/或缩放处理,即适当地改变裁剪区域的位置和/或尺寸,然后,再从原始图像中裁剪出人眼图像,这样可以得到更丰富的训练样本,进而改善模型的预测性能以及泛化能力。
第三方面,本申请实施例提供一种注意力判定装置,包括:第一图像获取模块,用于获取待判定的人眼图像;第一预测模块,用于将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,所述眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态;注意力判定模块,用于判断所述眼睛状态是否满足注意力判定条件,并在所述眼睛状态满足所述注意力判定条件时,根据所述视线估计结果确定第一注意力判定结果。
第四方面,本申请实施例提供一种模型训练装置,包括:第二图像获取模块,用于获取训练用的人眼图像,所述人眼图像包括实际人眼图像以及渲染人眼图像,所述实际人眼图像带有视线标签以及眼睛状态标签,所述渲染人眼图像带有视线标签,所述眼睛状态标签包括眼睛开闭状态的标签和/或眼睛遮挡状态的标签;第二预测模块,用于将所述人眼图像输入至待训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,所述眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态;参数更新模块,用于根据所述视线估计结果、所述眼睛状态以及所述实际人眼图像带有的标签计算所述神经网络模型的视线估计损失和眼睛状态预测损失,并根据计算出的视线估计损失和眼睛状态预测损失,利用反向传播算法更新所述神经网络模型的参数;以及用于,根据所述眼睛状态以及所述渲染人眼图像带有的标签计算所述神经网络模型的眼睛状态预测损失,并根据计算出的眼睛状态预测损失,利用反向传播算法更新所述神经网络模型的参数。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面、第二方面或以上两方面的任意一种可能的实现方式提供的方法。
第六方面,本申请实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面、第二方面或以上两方面的任意一种可能的实现方式提供的方法。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
图1示出了本申请实施例提供的注意力判定方法的一种可能的流程。该方法可以但不限于由图7中的电子设备执行,该电子设备的结构具体见后文对图7的阐述。参照图1,该方法包括:
步骤S110:获取待判定的人眼图像。
注意力判定主要依赖于视线估计,而视线估计则要基于人眼图像进行。人眼图像是指仅包含眼睛的图像,当然,人眼图像中也可以包含一部分眼睛周围的皮肤。视线估计既可以采用单眼图像也可以采用双眼图像,为简单起见,后文主要以采用单眼图像的情况为例,采用双眼图像的情况是类似的。
由于摄像头往往拍摄范围较大,很难直接采集人眼图像,从而在步骤S110的一些实现方式中,可以先采集人脸图像,再从人脸图像中裁剪出人眼图像。其中,人脸图像指包含人脸的图像,但还可能包含人体的其余部分。
裁剪人眼图像的方法有多种:例如,可以先对人脸图像进行特征点检测(可利用一些现有的工具,如openCV库和dlib库实现),再基于检测到的人眼特征点进行裁剪(例如,取外接矩形);又例如,可以在人脸图像上进行目标检测(目标为眼睛),然后根据得到的检测框进行裁剪,等等。总之,裁剪时应尽可能将人脸中与眼睛无关的部分排除在外。
步骤S120:将人眼图像输入至预训练的神经网络模型,获得神经网络模型输出的视线估计结果以及眼睛状态。
其中,视线估计结果即人眼图像对应的视线,视线可进行量化表示,例如用姿态角pitch和yaw来表示。关于姿态角,可以参照图2,图2示出的虽然是用姿态角表示头部姿态(头部姿态可用于注意力判定,详见后文),但实际上将其中的头部换成眼球也是同样适用的。姿态角共有3个:pitch、yaw以及roll,在图2中,pitch表示头部的俯仰角度,yaw表示头部的偏转角度,roll表示头部的倾斜角度,研究表明,roll角度对于注意力判定结果影响不大,因此后文在阐述视线估计结果或者头部姿态时均只考虑pitch和yaw两个角度。
眼睛状态包括眼睛开闭状态(睁开、闭合)和/或眼睛遮挡状态(被遮挡、未被遮挡),后文中主要以眼睛状态包括眼睛开闭状态和眼睛遮挡状态的情况为例。
步骤S120中的神经网络模型可以是一个也可以是多个。例如,可以是三个神经网络模型,人眼图像分别输入至这三个模型,一个模型输出视线估计结果,一个模型输出眼睛开闭状态,一个模型输出眼睛遮挡状态。又例如,可以是一个神经网络模型,该模型包括三个分支,三个分支有公共的部分也有各自独立的部分,一个分支是视线估计分支,用于输出视线估计结果,另外两个分支是眼睛状态预测分支,分别用于输出眼睛开闭状态和眼睛遮挡状态。可以理解的,若某种实现方式中只需要预测眼睛开闭状态或眼睛遮挡状态,模型也可以只设置一个眼睛状态预测分支。
例如,参照图3,卷积模块1、卷积模块2、卷积层1、卷积层2、拼接操作以及全连接层1构成了三个分支的公共部分,全连接层2、全连接层3、全连接层4则是三个分支的独立部分,其中,卷积模块是指由多个卷积层(还可能有其他层)构成的特定结构(如残差块)。
图3中的神经网络模型其工作流程大致为:首先利用卷积模块以及卷积层提取人眼图像中的特征,然后将提取到的特征和头部姿态信息进行拼接,最后利用全连接层对拼接后的特征进行深度整合,得到预测结果(包括视线估计结果和眼睛状态预测结果)。
可以理解,图3中的网络结构仅为示例,神经网络模型还可以采用其他结构。另外,图3中的神经网络模型使用了头部姿态作为模型输入,这是可选的,后文再详细介绍,若某些实现方式中不使用头部姿态,则图3中的拼接操作可以省略。
相较而言,若步骤S120采用多个神经网络模型实现,可能会获得更精确的视线估计结果和眼睛状态预测结果,但网络结构会变得相对复杂,并且无论是在模型的训练阶段还是推理阶段都会产生更大的运算量。若步骤S120采用单一神经网络模型实现,则可以减少网络数量,便于设计轻量级的网络结构(如图3中的网络结构),从而有利于将神经网络模型集成到一些硬件性能不高的环境(例如,手机、车载设备)中。
步骤S130:判断眼睛状态是否满足注意力判定条件。
步骤S140:根据视线估计结果确定第一注意力判定结果。
步骤S130、S140合并在一起进行阐述。注意力判定条件是与眼睛状态相关的预设规则,若眼睛状态满足注意力判定条件,则执行步骤S140,否则不执行步骤S140。
无论眼睛状态如何,步骤S120中的神经网络模型总能够给出一个视线估计结果,但该视线估计结果并不一定可靠,例如在某些非正常的眼睛状态(闭眼、被遮挡)下得到的视线估计结果是不可靠的,如果直接根据这样的视线估计结果去进行注意力判定,很可能会得到错误的判定结果。
步骤S130中判断是否满足注意力判定条件也可以认为是在判断视线估计结果的置信度,若置信度较高(满足注意力判定条件),则认为视线估计结果是可靠的,才能够进一步根据视线估计结果进行注意力判定,若置信度较低(不满足注意力判定条件),则认为视线估计结果是不可靠的,不能够根据视线估计结果进行注意力判定。这样一来,就有效避免了在某些非正常的眼睛状态下得到的视线估计结果并不能有效地进行注意力判定的问题,从而显著提高的注意力判定的准确性。
第一注意力判定结果表示步骤S110中的人眼图像对应的注意力判定结果,并不一定只有步骤S140才能得到第一注意力判定结果,其他一些判断分支也可能得到第一注意力判定结果。第一注意力判定结果的可取值包括第一结果、第二结果和第三结果。其中,第一结果表示视线正常,第二结果表示视线偏离,第三结果表示注意力不可判断。在实际系统中,例如智能驾驶辅助系统,对于第一结果可忽略,对于第二结果可进行报警,对于第三结果可根据需求选择忽略或报警。
若眼睛状态包括眼睛开闭状态和眼睛遮挡状态,则步骤S130和步骤S140可以进一步实现为两个连续的判断步骤:
步骤A:判断眼睛开闭状态是否为眼睛睁开,若眼睛开闭状态为眼睛睁开,则执行步骤B,否则将第一注意力判定结果确定为第二结果。
步骤B:判断眼睛遮挡状态是否为未被遮挡,若眼睛遮挡状态为未被遮挡,则根据视线估计结果确定第一注意力判定结果,否则将第一注意力判断结果确定为第三结果。
对于步骤A,若眼睛开闭状态为眼睛闭合,则表明眼睛状态不满足步骤S130中的注意力判定条件,此时直接将第一注意力判定结果指定为第二结果,不使用视线估计结果进一步判定注意力,避免判定错误。这里需要注意,严格来说,眼睛闭合时得到的视线估计结果意义不大,但在实际系统中,例如智能驾驶辅助系统,眼睛闭合很可能是人物困倦的表现,存在严重的驾驶风险,这种情况和其他视线偏离的情况一样,是需要报警的,所以也可将其归为视线偏离的一种特殊情况,即判定为第二结果。
对于步骤B,若眼睛遮挡状态为未被遮挡(既然执行到了步骤B,此时隐含了眼睛开闭状态为睁开),则表明眼睛状态满足步骤S130中的注意力判定条件,从而按照步骤S140,可以进一步根据视线估计结果进行注意力判定,此时判定结果的准确性较高。若眼睛遮挡状态为被遮挡,则表明眼睛状态不满足步骤S130中的注意力判定条件,此时直接将第一注意力判定结果指定为第三结果,不使用视线估计结果进一步判定注意力,避免判定错误。
可选的,基于视线估计结果判定注意力可采取如下方式:
判断视线估计结果是否处于正常视线范围内;若视线估计结果处于正常视线范围内,则将第一注意力判定结果确定为第一结果,否则将第一注意力判定结果确定为第二结果。
由于视线估计结果可以量化表示,从而可以设定一个阈值范围(即上面的正常视线范围)来判定视线是否正常。例如,对于用pitch、yaw表示的视线,若pitch的取值位于区间[P1,P2]内,且yaw的取值位于区间[Y1,Y2]内,则表明视线估计结果位于正常视线范围(由[P1,P2]、[Y1,Y2]形成的范围)内,否则表明视线估计结果不在正常视线范围。
在上面步骤A和B中,是先判断眼睛闭合状态,再判断眼睛状态,在另一些实现方式中也可以将这个顺序反过来,即先判断眼睛遮挡状态,再判断眼睛闭合状态。下面简单对比这两种方式:
考虑对多帧图像进行注意力判定的情况(这种情况是常见的,例如在司机驾驶的过程中连续采集图像并判定注意力),若在判断眼睛状态时,先判断眼睛是否睁开,再判断眼睛是否被遮挡,则有利于得到更多的明确判定结果(第二结果),从而能够增强注意力判定方法在实际系统中的可用性。相对地,如果先判断眼睛是否被遮挡,再判断眼睛是否睁开,则注意力判定结果中可能包含更多的非明确判定结果(第三结果),不容易为实际系统所采纳。
应当理解,若某些实现方式中,神经网络模型只预测了眼睛开闭状态或者眼睛遮挡状态,则上面步骤A和B中的判断只执行一个就可以了。
在注意力判定的过程中,还可以利用人物的头部姿态进一步改善判定结果的准确性,头部姿态可以用姿态角表示,如图2中的pitch和yaw。在介绍步骤S110时曾经提到,在一些实现方式中,可以先采集人脸图像,再从其中裁剪出人眼图像,对于这些实现方式,可以从人脸图像中获取人物的头部姿态。利用一些现有的工具,例如openCV库和dlib库,都可以实现头部姿态的检测。
头部姿态的用途至少包括以下几项:
(1)用于选择人眼图像
人脸图像中往往包含两只眼睛,若采用单眼图像进注意力判定,则只需要裁剪出其中一只眼睛的图像。发明人研究发现,人物的头部姿态不同时,两只眼睛的图像也具有不同的质量(此处的质量是针对视线估计和眼睛状态预测这两项任务而言),更靠近摄像头的眼睛图像具有较高的质量,因此根据头部姿态将其选择作为步骤S110中的人眼图像有利于获得更精确的视线估计结果和眼睛状态预测结果,从而提高后续注意力判定的准确性。
例如,人物面向摄像头时,若头部向自己的左侧偏转,则左眼将远离并侧对着摄像头,这样左眼图像在人脸图像中的面积也显著缩小,不利于对左眼进行视线估计以及眼睛状态预测,而此时右眼图像由于距离摄像头较近,并且相对而言是正对着摄像头的,因此在人脸图像中的面积相对较大,有利于对右眼进行视线估计以及眼睛状态预测。总之,这种情况下可根据人物的头部姿态可选择右眼图像作为步骤S110中的人眼图像作为注意力判定的依据。
考虑头部姿态用pitch和yaw表示的情况,可以通过如下方式选择人眼图像:
若头部姿态的yaw小于0度(向右偏转,对应图2中向左偏转,因为图2是摄像头视角),则选择左眼图像作为步骤S110中的人眼图像;若头部姿态的yaw大于0度(向左偏转,对应图2中向右偏转,因为图2是摄像头视角),则选择右眼图像作为步骤S110中的人眼图像;若头部姿态的yaw等于0度(不偏转),则选择左眼图像或右眼图像作为步骤S110中的人眼图像均可。
若按照头部姿态选择人眼图像,可能存在如下问题:
例如,若按照头部姿态选择了左眼图像,但在后续判断出左眼被遮挡,只能得到一个不明确的判定结果(第三结果),如果按照眼睛状态反推,前面可能选择右眼图像更为合适。这种情况至少有两种处理方法:一种是将左眼图像的第一注意力判定结果作废,重新裁剪右眼图像进行判定;另一种是认可左眼图像的第一注意力判定结果,留待后续处理(详见后文的判定结果修正部分)。其中,若注意力判定对实时性要求较高,则可采取后一种方式。
(2)用于判断是否需要裁剪人眼图像
根据用途(1)中的分析可知,人物的头部姿态对于人眼图像的质量存在影响,从而在获取到人脸图像之后,以及在从其中裁剪出人眼图像之前,可以先判断从人脸图像中检测到的头部姿态是否处于正常姿态范围内,若头部姿态处于正常姿态范围内,则从人脸图像中裁剪出人眼图像,否则,不从人脸图像中裁剪出人眼图像进行后续的注意力判定,直接将第一注意力判定结果确定为第二结果。
在某些非正常的头部姿态(例如,偏转角度过大)下,人眼图像的质量是较差的(即使按照用途(1)选择了相对较好的单眼图像,其质量仍然较差),若使用这样的人眼图像,得到的视线估计结果和眼睛状态都是不可靠的,可能导致注意力判定不准确。从而,可以根据头部姿态初步判断当前的人脸图像中的人眼图像的质量是否合格,若合格(头部姿态处于正常姿态范围内),才将其从人脸图像中裁剪出来并进一步用于视线估计和眼睛状态预测,这样就能够提高注意力判定的准确性。
由于头部姿态可以量化表示,从而可以设定一个阈值范围(即上面的正常姿态范围)来判定头部姿态是否正常。例如,对于用pitch、yaw表示的头部姿态,若pitch的取值位于区间[P3,P4]内,且yaw的取值位于区间[Y3,Y4]内,则表明头部姿态位于正常姿态范围(由[P3,P4]、[Y3,Y4]形成的范围)内,否则表明头部姿态不在正常视线范围。
(3)用于视线估计和眼睛状态预测
根据用途(1)中的分析可知,人物的头部姿态对于人眼图像的质量存在影响,从而步骤S120在利用神经网络模型进行视线估计以及眼睛状态预测时,可将头部姿态作为模型的一项输入(若有多个神经网络模型,这些神经网络模型都可以增加头部姿态作为模型输入),以改善视线估计结果和眼睛状态预测结果。头部姿态的具体输入位置不限,例如,在图3中,头部姿态直到卷积层2之后才输入至神经网络模型。可以理解的,图3中的卷积层2输出的是特征图,而头部姿态可能只是两个角度值(pitch和yaw),因此在将二者进行拼接之前可以先将头部姿态中的角度值扩展为特征图的形状。
应当理解,在一个检测了头部姿态的注意力判定方案中,头部姿态的上述三项用途可以全部实现,也可以只实现其中的一项或两项。
常见的摄像头包括彩色摄像头(采集彩色图像)、黑白摄像头(采集灰度图像)以及红外摄像头(采集红外图像,和灰度图像类似),其中彩色摄像头应用得最为广泛。对于步骤S120中的神经网络模型,可以将其训练为专门用于处理彩色图像(用彩色图像训练),但这样的话,对于黑白或红外摄像头采集的图像模型将不能很好地处理。
因此,在一些实现方式中,可以将步骤S120中的神经网络模型训练为专门用于处理灰度图像(用灰度图像训练),对于彩色摄像头采集到的原始人眼图像(彩色图像),可先将其转换为人眼图像(灰度图像),再输入神经网络模型。而对于黑白或红外摄像头采集的人眼图像(灰度图像或与其类似的红外图像),则可以直接将其输入神经网络模型。这样,神经网络模型对于多种摄像头采集的图像都可以有效处理,使得注意力判定方法具有较高的兼容性。
可以理解的,若先采集人脸图像,再从中裁剪出人眼图像,则从上述从彩色图像到灰度图像的转换可以对整个人脸图像进行。
上面阐述的注意力判定方法基本针对的是单帧图像的情况。然而,在很多实际系统中,注意力判定是连续执行的,例如在司机驾驶的过程中,摄像头不断地采集司机的人脸图像并进行逐帧(或者间隔取帧)的注意力判定,其中每帧都可以按照上面的方法得到对应的注意力判定结果。在多帧连续判定的情况下,还可以根据注意力在时间上的连续性分布对注意力判定结果进行修正,下面举例说明:
a.对第一注意力判定结果的修正:
将视频帧序列中正在进行注意力判定的一帧人脸图像简称为当前帧,在视频帧序列中位于当前帧之前的人脸图像简称为当前帧的前序帧。
首先,按照前文阐述的方法,可以得到当前帧对应的第一注意力判定结果(指当前帧中的人眼图像对应的第一注意力判定结果),以及当前帧的每个前序帧对应的第一注意力判定结果,第一注意力判定结果的可取值包括第一结果、第二结果以及第三结果。
然后,对当前帧以及当前帧的至少一个前序帧对应的第一注意力判定结果进行统计,获得第一统计结果。例如,对包括当前帧在内的连续5帧进行统计,第一统计结果为4个第一结果、1个第二结果。
最后,将第一统计结果中出现频率最高的第一注意力判定结果确定为当前帧对应的第二注意力判定结果。例如,第一结果的出现频率最高,所以当前帧对应的第二注意力判定结果就是第一结果。显然,根据第一统计结果的不同,当前帧对应的第二注意力判定结果未必等于其对应的第一注意力判定结果,即对第一注意力判定结果进行了修正。
实际中,不排除一些偶然因素导致按图1中的方法得到的第一注意力判定结果是错误的,但既然是偶然因素导致的错误,其在时间上通常不具有持续性,即只会在个别帧出现,很快会恢复正常。上面的修正方式本质上是一种多帧平滑处理,即使当前帧对应的第一注意力判定结果出错,也会用一个大概率正确的判定结果(在所统计的帧内出现频率最高的)将其替换掉,从而可以减少降低偶然对判定结果的影响,提高注意力判定的准确性和可靠性。
b.对第二注意力判定结果的修正:
首先,按照对第一注意力判定结果的修正方法,可以得到当前帧对应的第二注意力判定结果,以及当前帧的每个前序帧对应的第二注意力判定结果,第二注意力判定结果的可取值包括第一结果、第二结果以及第三结果。
然后,对当前帧以及当前帧的至少一个前序帧对应的第二注意力判定结果进行统计,获得第二统计结果;其中,参与第二注意力判定结果统计的总帧数大于参与第一注意力判定结果统计的总帧数。例如,对包括当前帧在内的连续30帧进行统计,第二统计结果为1个第一结果、28个第二结果、1个第三结果。
最后,判断第二统计结果中第三结果的总数是否大于第一阈值,若第二结果的总数大于第一阈值,则将当前帧对应的第三注意力判定结果确定为第三结果;若第三结果的总数不大于第一阈值,则判断第二统计结果中第二结果的总数是否大于第二阈值,若第二结果的总数大于第二阈值,则将当前帧的第三注意力判定结果确定为第二结果,否则,将当前帧的第三注意力判定结果确定为第一结果。
例如,第一阈值设置为0.5×30=15,第二阈值设置为0.9×30=27,由于第二统计结果中第三结果的个数1<15,所以应继续判断,由于第二统计结果中第二结果的个数28>27,所以当前帧对应的第三注意力判定结果就是第二结果。显然,根据第二统计结果的不同,当前帧对应的第三注意力判定结果未必等于其对应的第二意力判定结果,即对第二注意力判定结果进行了修正。可以理解的,由于第二结果表示视线偏离,在实际系统中可能需要报警,所以在判断时条件可以严格一些,即第二阈值可以设置得比第一阈值更大。
发明人研究发现,短时间内的视线偏离或者注意力不可判断并不能等同于注意力分散,例如,人眨眼属于正常现象,若图像恰好在眨眼过程中眼睛闭合的时刻采集,可能被判定为视线偏离,这种判定结果是不恰当的。当然,这里所说的短时间可能并不一定是个别孤立的帧,也可能是连续的几帧。
按照上述发现,若人物的注意力在较长的时间内(超过第一阈值的帧数对应的时间)始终是不可判断的,最终的注意力判定结果(第三注意力判定结果)才会被确定为不可判断;若人物的视线在较长的时间内(超过第二阈值的帧数对应的时间)始终是偏离的,最终的注意力判定结果才会被确定为视线偏离;若以上两个条件均不满足,则最终的注意力判定结果为视线正常。这样的修正,有利于提高注意力判定结果的准确性。
图4示出了本申请实施例提供的模型训练方法的一种可能的流程。该方法可用于训练上述注意力判定方法中使用的神经网络模型,该神经网络模型输出的视线估计结果和眼睛状态可以结合起来用于注意力判定,有利于提高注意力判定的准确性,这在上文已经阐述。图4中的模型训练可以但不限于由图7中的电子设备执行,该电子设备的结构具体见后文对图7的阐述。参照图4,该方法包括:
步骤S210:获取训练用的人眼图像。
训练用的人眼图像包括实际人眼图像以及渲染人眼图像。实际人眼图像即摄像头采集的真实人眼图像,例如,实际人眼图像可以从摄像头采集的实际人脸图像中裁剪得到,对于训练阶段,两只眼睛的图像都可以作为训练样本,无需考虑眼睛图像的质量问题。渲染人眼图像即利用设定好参数的渲染工具生成的模拟人眼图像(根据后文可知,渲染人眼图像并不一定是渲染工具直接输出的图像,还可能进一步裁剪)。例如,3D渲染工具UnityEyes可用于产生渲染人眼图像。同时将实际人眼图像和渲染人眼图像作为训练样本用于模型训练,有利于获得丰富训练样本的类型,改善模型的预测性能以及泛化能力。
实际人眼图像至少带有视线标签(例如,真实视线的姿态角pitch和yaw)以及眼睛状态标签,其中,眼睛状态标签进一步包括眼睛开闭状态的标签(眼睛真实的开闭状态)和/或眼睛遮挡状态的标签(眼睛真实的遮挡状态)。在采集实际人眼图像时,可以指示被采集人员将视线集中在特定的位置,或者使眼睛处于某种特定的状态,等等,这样就可以得到实际人眼图像的标签。
渲染人眼图像至少带有视线标签,若只带有视线标签,此时每张渲染人眼图像中的眼睛都可以是睁开且未被遮挡的。由于渲染人眼图像是渲染工具生成的,所以其中的视线是已知的,可直接作为视线标签。
可选的,实际人眼图像以及渲染人眼图像还可以带有头部姿态标签(眼睛对应的真实头部姿态)。在采集实际人眼图像时,可指示被采集人员保持某种头部姿态从而获得该标签。而渲染人眼图像由于是渲染工具生成的,所以其对应的头部姿态是已知的,可直接作为头部姿态标签。应当理解,头部姿态标签和视线标签、眼睛状态标签在用途上还是有些区别的,头部姿态标签并不用于步骤S230中的损失计算,只可能被用于步骤S220中的视线估计以及眼睛状态预测。
在步骤S210的一些实现方式中,为渲染设置简单起见,渲染工具生成的图像为单眼渲染图像,即均为左眼图像或者均为右眼图像,如果直接将单眼图像用于训练,将导致训练样本不均衡(左右眼图像数量相差较大),影响模型性能。考虑到人眼一般是对称分布的,从而可以对单眼渲染图像进行随机的水平翻转,以获得另一侧眼睛的渲染图像,这样处理之后,左右眼图像的数量就相差不大了。此举有利于增强训练样本的均衡性,进而改善模型的预测性能以及泛化能力。
在步骤S210的一些实现方式中,可以先获取实际人脸图像以及原始渲染人眼图像,然后利用实际人脸图像中的人眼特征点,从实际人脸图像中裁剪出实际人眼图像,以及,利用原始渲染人眼图像中的人眼特征点,从原始渲染人眼图像中裁剪出渲染人眼图像。其中,在裁剪实际人脸图像以及原始渲染人眼图像时,对根据人眼特征点所确定的裁剪区域进行随机的偏移和/或缩放。
其中,实际人脸图像就是摄像头实际采集的人脸图像,原始渲染人眼图像即渲染工具直接输出的图像。实际人脸图像中的人眼特征点可以通过检测得到,而原始渲染人眼图像中的人眼特征点是已知的。注意,原始渲染人眼图像除了包含眼睛外,一般还会包含眼睛周围的部分皮肤,而人眼特征点分布在眼球附近,从而根据人眼特征点所确定的裁剪范围比原始渲染人眼图像更小,因此这样的裁剪在理论上是可行的。
无论是对于实际人眼图像还是渲染人眼图像,人眼特征点的位置确定后,裁剪区域的位置也就确定了,从而根据裁剪区域可以直接从原始图像(指实际人脸图像和原始渲染人脸图像)中裁剪出人眼图像,但这样获得的人眼图像数量较少。在上面给出的替代方案中,先对裁剪区域进行随机的偏移和/或缩放处理(即适当地改变裁剪区域的位置和/或尺寸),这样的处理重复多次后,就可以获得多个裁剪区域。然后,再根据这些裁剪区域从原始图像中裁剪出人眼图像,这样可以得到更丰富的训练样本,进而改善模型的预测性能以及泛化能力。可选的,偏移量可以选择0附近的值,缩放倍数可以选择1附近的值,也就是说偏移或者缩放的程度不应太大,避免裁剪出的人眼图像质量不佳(例如,只包含了部分眼睛)。
在步骤S210一些实现方式中,若希望训练专门处理灰度图像的神经网络模型(这类模型的优点见前文阐述),则需要将实际人眼图像以及渲染人眼图像转换为灰度图像,或者,在采集(或渲染)时就直接按照灰度图像采集(或渲染)。
上述步骤S210的多种实现方式是自由组合,例如,对于原始渲染人眼图像,先对其进行裁剪,然后对裁剪后的图像进行水平翻转,再将翻转后的图像转换为灰度图像,作为步骤S210中的渲染人眼图像。
步骤S220:将人眼图像输入至待训练的神经网络模型,获得神经网络模型输出的视线估计结果以及眼睛状态。
该步骤和S120比较类似,这里重点阐述不同之处,其余内容可以参考前文。
眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态,需要指出,步骤S220中的眼睛状态和步骤S210中的眼睛状态标签是一致的,比如,步骤S220中的神经网络模型只能预测眼睛开闭状态,步骤S210中的训练样本也只需带有眼睛开闭状态的标签,无需带有眼睛遮挡状态的标签。
若人眼图像带有头部姿态标签,则可以将头部姿态也作为步骤S220中模型的一项输入,以提高视线估计和眼睛状态预测的准确性。
在步骤S220中,实际人眼图像和渲染人眼图像的输入顺序不作限定,例如,可以随机选择实际人眼图像或渲染人眼图像输入模型,可以交替着输入模型(比如,分批次训练时,输入一批实际人眼图像,然后输入一批渲染人眼图像),可以先输入完其中一种图像再输入另一种图像,等等。当然,如果神经网络模型包括多个,有单独的模型用于眼睛状态预测,那渲染人眼图像就不必输入这些模型了,因为渲染图像没有眼睛状态标签,虽然模型可以输出对应的眼睛状态,但无法进行损失计算。
步骤S230:根据视线估计结果、眼睛状态以及人眼图像带有的标签计算神经网络模型的预测损失,并根据预测损失,利用反向传播算法更新神经网络模型的参数。
其中,预测损失包括两部分,一部分是视线估计损失,一部分是眼睛状态预测损失。实际人眼图像由于至少带有视线标签和眼睛状态标签,所以这两项损失的计算都可以参与。而渲染人眼图像由于至少带有视线标签,所以至少可以参与视线估计损失的计算。
以神经网络模型是单个网络,且包含三个分支(一个视线估计分支,一个眼睛开闭状态预测分支,一个眼睛遮挡状态预测分支)的情况为例,无论是实际人眼图像还是渲染人眼图像,输入模型后会得到三项预测结果,即视线估计结果、眼睛开闭状态以及眼睛遮挡状态。
对于实际人眼图像,视线估计结果可以和视线标签计算视线估计损失,损失函数的类型可采用MSE,进而可以根据该损失,利用反向传播算法更新视线估计分支的参数;眼睛开闭状态的预测结果可以和眼睛开闭状态的标签计算眼睛开闭状态的预测损失,损失函数的类型可采用Softmax交叉熵,进而可以根据该损失,利用反向传播算法更眼睛开闭状态预测分支的参数;眼睛遮挡状态的预测结果可以和眼睛遮挡状态的标签计算眼睛遮挡状态的预测损失,损失函数的类型可采用Softmax交叉熵,进而可以根据该损失,利用反向传播算法更眼睛遮挡状态预测分支的参数。
对于渲染人眼图像,视线估计结果可以和视线标签计算视线估计损失,损失函数的类型可采用MSE,进而可以根据该损失,利用反向传播算法更新视线估计分支的参数。
当然,实际中训练策略非常灵活,例如,也可以先训练视线估计分支,再分别训练两个眼睛状态预测分支,然后再三个分支一起训练。在训练视线估计分支时,对于实际人眼图像,只计算视线估计损失(虽然理论上此时它可以计算眼睛状态预测损失),在训练眼睛状态预测分支时,对于实际人眼图像,只计算眼睛状态预测损失(虽然理论上此时它可以计算视线估计损失)。即,虽然实际人眼图像的标签支持其同时计算视线估计损失和眼睛状态预测损失,但是并非每一轮训练中都会同时计算这两项损失。
图5示出了本申请实施例提供的注意力判定装置300的功能模块图。注意力判定装置300用于训练第一检测模型,所述第一检测模型包括特征提取模块、密集预测模块、质量分布编码模块以及质量分布采样模块,参照图5,注意力判定装置300包括:
第一图像获取模块310,用于获取待判定的人眼图像;
第一预测模块320,用于将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,所述眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态;
注意力判定模块330,用于判断所述眼睛状态是否满足注意力判定条件,并在所述眼睛状态满足所述注意力判定条件时,根据所述视线估计结果确定第一注意力判定结果。
在注意力判定装置300的一种实现方式中,所述眼睛状态包括眼睛开闭状态和眼睛遮挡状态,注意力判定模块330判断所述眼睛状态是否满足注意力判定条件,并在所述眼睛状态满足所述注意力判定条件时,根据所述视线估计结果确定第一注意力判定结果,包括:判断所述眼睛开闭状态是否为眼睛睁开;若所述眼睛开闭状态为眼睛睁开,则判断所述眼睛遮挡状态是否为未被遮挡;若所述眼睛遮挡状态为未被遮挡,则根据所述视线估计结果确定第一注意力判定结果;其中,所述眼睛开闭状态为眼睛睁开且所述眼睛遮挡状态为未被遮挡,表明所述眼睛状态满足所述注意力判定条件。
在注意力判定装置300的一种实现方式中,注意力判定模块330根据所述视线估计结果确定第一注意力判定结果,包括:判断所述视线估计结果是否处于正常视线范围内;若所述视线估计结果处于所述正常视线范围内,则将所述第一注意力判定结果确定为第一结果,否则将所述第一注意力判定结果确定为第二结果,所述第一结果表示视线正常,所述第二结果表示视线偏离。
在注意力判定装置300的一种实现方式中,注意力判定模块330还用于:在所述眼睛开闭状态为眼睛闭合时,将所述第一注意力判定结果确定为所述第二结果;以及用于:在所述眼睛遮挡状态为被遮挡时,将所述第一注意力判定结果确定为第三结果,所述第三结果表示注意力不可判断。
在注意力判定装置300的一种实现方式中,第一图像获取模块310获取待判定的人眼图像,包括:获取人脸图像;从所述人脸图像中裁剪出所述人眼图像。
在注意力判定装置300的一种实现方式中,第一图像获取模块310从所述人脸图像中裁剪出所述人眼图像,包括:检测得到所述人脸图像中人物的头部姿态;根据所述头部姿态,从所述人脸图像中裁剪出更靠近摄像头的眼睛的图像作为所述人眼图像。
在注意力判定装置300的一种实现方式中,第一预测模块320将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,包括:检测得到所述人脸图像中人物的头部姿态;所述将所述人眼图像及其对应的头部姿态输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态。
在注意力判定装置300的一种实现方式中,第一图像获取模块310还用于:检测得到所述人脸图像中人物的头部姿态;判断所述头部姿态是否处于正常姿态范围内;第一图像获取模块310从所述人脸图像中裁剪出所述人眼图像,包括:若所述头部姿态处于所述正常姿态范围内,则从所述人脸图像中裁剪出所述人眼图像;注意力判定模块330还用于:在所述头部姿态处于所述正常姿态范围时,将所述第一注意力判定结果确定为第二结果,所述第二结果表示视线偏离。
在注意力判定装置300的一种实现方式中,所述神经网络模型被训练为专门处理灰度图像,第一图像获取模块310获取待判定的人眼图像,包括:获取原始人眼图像,所述原始人眼图像为彩色图像;将所述原始人眼图像转换为灰度图像,作为所述人眼图像。
在注意力判定装置300的一种实现方式中,所述神经网络模型为单一网络,该网络包括多个分支,第一预测模块320将所述人眼图像输入至预训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,包括:将所述人眼图像输入至所述神经网络模型,获得所述多个分支中的视线估计分支输出的视线估计结果,以及,所述多个分支中的至少一个眼睛状态预测分支输出的至少一种眼睛状态。
在注意力判定装置300的一种实现方式中,第一图像获取模块310获取待判定的人眼图像,包括:从当前帧中获取所述人眼图像;注意力判定模块330还用于:在获得所述当前帧对应的第一注意力判定结果之后,对所述当前帧以及所述当前帧的至少一个前序帧对应的第一注意力判定结果进行统计,获得第一统计结果;将所述第一统计结果中出现频率最高的第一注意力判定结果确定为所述当前帧对应的第二注意力判定结果。
在注意力判定装置300的一种实现方式中,所述第二注意力判定结果的可取值包括第一结果、第二结果以及第三结果,所述第一结果表示视线正常,所述第二结果表示视线偏离,所述第三结果表示注意力不可判断;注意力判定模块330还用于:在将所述第一统计结果中出现频率最高的第一注意力判定结果确定为所述当前帧对应的第二注意力判定结果之后,对所述当前帧以及所述当前帧的至少一个前序帧对应的第二注意力判定结果进行统计,获得第二统计结果;其中,参与所述第二注意力判定结果统计的总帧数大于参与所述第一注意力判定结果统计的总帧数;判断所述第二统计结果中所述第三结果的总数是否大于第一阈值,若所述第二结果的总数大于所述第一阈值,则将所述当前帧对应的第三注意力判定结果确定为所述第三结果;若所述第三结果的总数不大于所述第一阈值,则判断所述第二统计结果中所述第二结果的总数是否大于第二阈值,若所述第二结果的总数大于所述第二阈值,则将所述当前帧的第三注意力判定结果确定为所述第二结果,否则,将所述当前帧的第三注意力判定结果确定为所述第一结果。
本申请实施例提供的注意力判定装置300,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
图6示出了本申请实施例提供的模型训练装置400的功能模块图。模型训练装置400用于利用第二检测模型进行模型训练,所述第二检测模型包括特征提取模块以及密集预测模块,参照图6,模型训练装置400包括:
第二图像获取模块410,用于获取训练用的人眼图像,所述人眼图像包括实际人眼图像以及渲染人眼图像,所述实际人眼图像带有视线标签以及眼睛状态标签,所述渲染人眼图像带有视线标签,所述眼睛状态标签包括眼睛开闭状态的标签和/或眼睛遮挡状态的标签;
第二预测模块420,用于将所述人眼图像输入至待训练的神经网络模型,获得所述神经网络模型输出的视线估计结果以及眼睛状态,所述眼睛状态包括眼睛开闭状态和/或眼睛遮挡状态;
参数更新模块430,用于根据所述视线估计结果、所述眼睛状态以及所述人眼图像带有的标签计算所述神经网络模型的预测损失,并根据所述预测损失,利用反向传播算法更新所述神经网络模型的参数;其中,所述实际人眼图像带有的标签用于计算所述预测损失中的视线估计损失以及眼睛状态预测损失,所述渲染人眼图像带有的标签用于计算所述预测损失中的视线估计。
在模型训练装置400的一种实现方式中,第二图像获取模块410获取训练用的人眼图像,包括:利用渲染工具生成单眼渲染图像,所述单眼渲染图像均为左眼图像或者均为右眼图像;对所述单眼渲染图像进行随机的水平翻转,获得所述人眼图像中的所述渲染人眼图像。
在模型训练装置400的一种实现方式中,第二图像获取模块410获取训练用的人眼图像,包括:获取实际人脸图像以及原始渲染人眼图像;利用所述实际人脸图像中的人眼特征点,从所述实际人脸图像中裁剪出所述实际人眼图像,以及,利用所述原始渲染人眼图像中的人眼特征点,从所述原始渲染人眼图像中裁剪出所述渲染人眼图像;其中,在裁剪所述实际人脸图像以及所述原始渲染人眼图像时,对根据所述人眼特征点所确定的裁剪区域进行随机的偏移和/或缩放。
本申请实施例提供的模型训练装置400,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
图7示出了本申请实施例提供的电子设备500的一种可能的结构。参照图7,电子设备500包括:处理器510、存储器520以及通信接口530,这些组件通过通信总线540和/或其他形式的连接机构(未示出)互连并相互通讯。
其中,处理器510包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器510可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network ProcessingUnit,简称NPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器510为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
存储器520包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。处理器510以及其他可能的组件可对存储器520进行访问,读和/或写其中的数据。
特别地,在存储器520中可以存储一个或多个计算机程序指令,处理器510可以读取并运行这些计算机程序指令,以实现本申请实施例提供的注意力判定方法和/或模型训练方法。
通信接口530包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口530可以包括进行有线和/或无线通信的接口。
可以理解,图7所示的结构仅为示意,电子设备500还可以包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。图7中所示的各组件可以采用硬件、软件或其组合实现。电子设备500可能是实体设备,例如PC机、笔记本电脑、平板电脑、手机、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备500也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的注意力判定方法和/或模型训练方法。例如,计算机可读存储介质可以实现为图7中电子设备500中的存储器520。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。