一种前置摄像头视频源的眼动行为识别方法
技术领域
本发明涉及一种眼动行为识别技术,采用计算机前置网络摄像头采集数据,可以识别用户眼动行为从而触发计算机命令实现人机交互,具体是涉及一种前置摄像头视频源的眼动行为识别方法。
背景技术
眼动是指瞳孔扫视、凝视、眨眼等基本眼部姿势的变化。眼动交互是人机交互领域中的一项关键性技术,在安保、车辆、助残、仪器、军事、医学、计算机等诸多领域中有广泛的应用前景。
目前市场上通常使用眼动仪来完成眼动人机交互的工作。大多数眼动仪工作原理是通过红外摄像头拍摄高清的瞳孔图像,采用基于瞳孔和角膜反射的视频记录法,可以准确定位人眼的注视点。应用到人机交互上,可以完全不使用双手操作计算机,仅依靠注视点的位置就可替代鼠标完成操作。但此类眼动仪大多价格昂贵,校准复杂,通常的使用者是残障人士或是研究工作者,对于不依赖使用眼睛操控计算机的普通人来说,眼动仪性价比不高。
现有眼动仪大多价格昂贵校准复杂,大多数用户的需求,只是使用眼动来触发计算机的几个命令即可。复杂的任务若都使用眼动操作反而会导致眼睛疲劳。
为此,便利且高效识别出眼动行为是眼动控制人机交互应用普及的关键。因此,需要提供一种仅使用电脑的前置网络摄像头采集视频数据,进而通过识别几种规定的眼动行为来触发计算机对应的命令实现眼动控制人机交互,便捷且低成本的前置摄像头视频源的眼动行为识别方法,旨在解决上述问题。
发明内容
针对现有技术存在的不足,本发明实施例的目的在于提供一种前置摄像头视频源的眼动行为识别方法,仅使用电脑的前置网络摄像头采集视频数据,进而通过识别几种规定的眼动行为来触发计算机对应的命令实现眼动控制人机交互,便捷且低成本,以解决上述背景技术中的问题。
为实现上述目的,本发明提供如下技术方案:
一种前置摄像头视频源的眼动行为识别方法,普通带有摄像头的电脑的前置摄像头正脸采集数据的视频数据识别出人的6种眼势和2种眨眼共计8种眼动行为,对应触发8种计算机命令,具体包括以下四个步骤:
步骤一、人脸检测跟踪
采用了检测速度较快的方向梯度直方图特征的人脸检测方法,检测到人脸以后,使用基于回归树方法进行人脸关键点定位,定位的4个眼角关键点划分出的含有双眼的矩形区域作为模板;
在第二帧中不再重复全图的人脸检测操作,而是使用含有双眼的矩形区域模板进行模板匹配,找到图中匹配的双眼区域来寻找人脸;
在第二帧匹配到对应的人眼区域后,扩展出包含人脸的矩形区域再重复进行关键点检测,假设模板的宽高分别为:W,H;以模板为中心向上扩宽H个像素,向下扩宽H*7/2个像素,宽度不变,即可得到只含人脸区域的图像;
得到人脸区域进行关键点定位,基于定位的四个眼角关键点再次划分出的含有双眼的矩形区域更新模板,如此循环,完成人脸的稳定鲁棒跟踪;
步骤二、眨眼判断
人脸关键点定位的基础上可得到单眼周围的六个特征点p1,p2,p3,p4,p5,p6,使用公式:
求出一只眼睛的长宽比,将单眼眨眼作为触发电脑命令的一种眼动行为,因此左眼单眨眼或右眼单眨眼称为有意眨眼,双眼眨眼称为无意眨眼,本发明使用定位的人眼特征点对眨眼状态进行粗略判断,用HOG+SVM的方法对眨眼进行精确判断。
步骤三、双眼区域提取和处理
以及步骤二的判断,如果判断当前眼睛不是眨眼状态,则进行眼势的判断;
基于人脸关键点定位到的四个眼角坐标,按如下计算方法得出每只眼睛的矩形区域:
3-1)计算两只眼睛的宽度w;
3-2)计算两个眼角坐标的中心坐标(X,Y),以该中心坐标为中心,左右扩展w*3/4的像素区域,上下扩展w*1/2的像素区域;
3-3)眼部图像裁剪与增强:截取矩形区域的眼部图像,调整成36*36像素大小,使用边缘保留滤波去除噪声,使用幂次变换提升区域整体对比度,消除部分阴影;
步骤四、眼球中心位置标定和眼动行为判别
4-1)眼球中心位置标定:在提取出的双眼区域中,计算梯度的方向和幅值,然后取梯度方向相交最多的那个点,即认为是眼球中心,使用(Xc,Yc)表示;
4-2)眼势发生判断:使用以下公式计眼球中心坐标(Xc,Yc)与眼睛图像长宽36像素的比值tx,ty:
tx=Xc÷36
ty=Yc÷36
判断眼球是否正在进行一个眼势动作的方法为:
A、当眼球中心位置比值tx小于0.30,判断眼球做出了向左移动的眼势;
B、当眼球中心位置比值tx大于0.60,判断眼球做出了向右移动的眼势;
C、当眼球中心位置比值ty大于0.62,判断眼球做出了向上移动的眼势;
4-3)预测判断眼动行为:判断出4-2)中三种眼势动作发生后,截取前后总计50帧的眼部视频流进行下一步预测判断眼动行为;
将记录眼动行为的视频帧进行帧间差分后,将采用正常的卷积在每一帧中对两个眼睛图像分别提取特征,经过一个最大池化层,进行左右眼特征融合,将数据一维化后连接一个LSTM神经网络,使用Softmax进行8分类。
作为本发明进一步的方案,所述计算机命令为键盘上一个按键、组合的快捷键或者是鼠标的点击和滚轮操作。
作为本发明进一步的方案,笔记本前置摄像头读取视频帧,对图像进行灰度化并反转,采用方向梯度直方图特征方法检测定位到人脸,随后使用模板匹配的方法跟踪人脸,检测人脸关键点,依据定位出的12个眼部关键点计算长宽比判断眨眼情况,依据4个眼角关键点的坐标取出双眼的矩形区域,预处理后根据图像的梯度情况定位眼球中心,分析相邻帧之间眼球中心的位置,将可疑的有意眼势视频序列输入到LSTM网络中进一步判断,输出眼动行为的预测判断结果,触发计算机命令。
作为本发明进一步的方案,步骤一中,计算含有双眼矩形区域方法为:
假设四个眼角坐标点的坐标从左到右分别是(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),由以下公式计算出双眼的平均宽度W,和双眼之间的间隔L:
W=(x2-x1+x4-x3)÷2
L=(x3-x2)÷2
含有双眼的矩形区域的左上角坐标和右下角坐标分别为(X1,Y1)、(X2,Y2);
计算X1,Y1,X2,Y2的公式为:
X1=x1-L
Y1=y1-W×2÷3
X2=x4+L
Y2=y2+W×2÷3。
作为本发明进一步的方案,步骤二中,单眼的以0.2为阈值,当小于0.2时认为是眨眼状态,大于0.2时认为是睁眼状态。
作为本发明进一步的方案,有意的眼势有6种,分别是向左看、向右看、向上看、眨眼向左看、眨眼向右看和眨眼向上看。
作为本发明进一步的方案,2种无意的眼势分别是眼睛静止和普通眨眼。
综上所述,本发明实施例与现有技术相比具有以下有益效果:
本发明普通带有摄像头的电脑的前置摄像头正脸采集数据的视频数据可识别出人的6种眼势和2种眨眼共计8种眼动行为,可对应触发8种计算机命令。这些命令可以是键盘上一个按键,可以是组合的快捷键,也可以是鼠标的点击和滚轮操作。
本发明可应用于平常浏览阅读等低频率操控电脑的场景中。平时在浏览阅读时,用户会不时操纵鼠标执行滚动和翻页动作,使用本发明系统可完全使用眼动行为来替代这些简单的命令,从而解放双手来完成其它的一些现实的工作。
为更清楚地阐述本发明的结构特征和功效,下面结合附图与具体实施例来对本发明进行详细说明。
附图说明
图1为发明实施例的整体技术路线的示意图。
图2为发明实施例中人脸检测跟踪技术路线的示意图。
图3为发明实施例中眨眼判断技术路线的示意图。
图4为发明实施例中眼动行为判断识别LSTM网络结构的示意图。
图5为发明实施例中眼势判断技术路线的示意图。
图6为发明实施例中眼动行为判断识别技术路线的示意图。
图7为发明实施例中人脸检测的效果示意图。
图8为发明实施例中人脸关键点标定的效果示意图。
图9为发明实施例中人脸跟踪的效果示意图。
图10为发明实施例中扩展出人脸范围并进行眼睛区域获取以及眼球中心标定的效果示意图。右眨眼、向左看、向右看、向上看的示意图
图11为发明实施例的眼动行为识别中右眨眼的效果示意图。
图12为发明实施例的眼动行为识别中向左看的效果示意图。
图13为发明实施例的眼动行为识别中向右看的效果示意图。
图14为发明实施例的眼动行为识别中向上看的效果示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案做进一步的说明。
参见图1所示,一种前置摄像头视频源的眼动行为识别方法,普通带有摄像头的电脑的前置摄像头正脸采集数据的视频数据可识别出人的6种眼势和2种眨眼共计8种眼动行为,可对应触发8种计算机命令。这些命令可以是键盘上一个按键,可以是组合的快捷键,也可以是鼠标的点击和滚轮操作。应用于平常浏览阅读等低频率操控电脑的场景中。平时在浏览阅读时,用户会不时操纵鼠标执行滚动和翻页动作,使用本发明系统可完全使用眼动行为来替代这些简单的命令,从而解放双手来完成其它的一些现实的工作。
本发明的前置摄像头视频源的眼动行为识别方法,所基于的编程语言及版本为Python3.7.1;编程软件为JetBrains PyCharm 2018.3.2x64;依赖库为opencv、dlib、keras。
参见图1所示,本发明的整体技术方案是:首先采用笔记本前置摄像头读取视频帧,对图像进行灰度化并反转后,采用方向梯度直方图(Hog)特征方法检测定位到人脸,随后使用模板匹配的方法跟踪人脸,检测人脸关键点,依据定位出的12个眼部关键点计算长宽比判断眨眼情况。依据4个眼角关键点的坐标取出双眼的矩形区域,预处理后根据图像的梯度情况定位眼球中心,分析相邻帧之间眼球中心的位置,将可疑的有意眼势视频序列输入到LSTM网络中进一步判断,输出眼动行为的预测判断结果,触发计算机命令。
具体包括以下四个步骤:
步骤一、人脸检测跟踪
参见图2所示的人脸检测跟踪技术路线。
人脸检测技术已经很完善,在本发明中,采用了检测速度较快的方向梯度直方图(Hog)特征的人脸检测方法。
检测到人脸以后,使用基于回归树方法进行人脸关键点定位,目的是为了分别获得单个眼睛的矩形区域。
在这之前,为了提高系统的运行速度,将定位的4个眼角关键点划分出的含有双眼的矩形区域作为模板,计算含有双眼矩形区域方法如下所示:
假设四个眼角坐标点的坐标从左到右分别是(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)。首先由公式(1~2)计算出双眼的平均宽度W,和双眼之间的间隔L。
W=(x2-x1+x4-x3)÷2 (1)
L=(x3-x2)÷2 (2)
含有双眼的矩形区域的左上角坐标和右下角坐标分别为(X1,Y1)、(X2,Y2)。计算X1,Y1,X2,Y2的公式(3~6)如下所示:
X1=x1-L (3)
Y1=y1-W×2÷3 (4)
X2=x4+L (5)
Y2=y2+W×2÷3 (6)
在第二帧中不再重复全图的人脸检测操作,而是使用含有双眼的矩形区域模板进行模板匹配,找到图中匹配的双眼区域来寻找人脸。
在第二帧匹配到对应的人眼区域后,需要扩展出包含人脸的矩形区域再重复进行关键点检测,假设模板的宽高分别为:W,H。以模板为中心向上扩宽H个像素,向下扩宽H*7/2个像素,宽度不变,即可得到只含人脸区域的图像。
得到人脸区域进行关键点定位,基于定位的四个眼角关键点再次划分出的含有双眼的矩形区域更新模板,如此循环,实现人脸的稳定鲁棒跟踪。
其中,人脸检测跟踪技术路线为:开始→初始化摄像头→初始化帧→是否跟踪状态:是→双眼区域模板匹配→根据三庭五眼扩展人脸→人脸关键点检测→更新双眼区域模板→显示→初始化帧;否→HOG人脸检测→框出人脸→人脸关键点检测→更新双眼区域模板→显示→初始化帧。
其中,人脸检测的效果图参见图7所示,人脸关键点标定的效果图参见图8所示,人脸跟踪的效果图参见图9所示,内矩形框为模板区域,外矩形框为模板匹配的范围,内矩形框和外矩形框可以采用不同颜色区分。
步骤二、眨眼判断
参见图3所示的眨眼判断技术路线。
在人脸关键点定位的基础上可得到单眼周围的六个特征点p1,p2,p3,p4,p5,p6,使用公式(7)可求出一只眼睛的长宽比
本发明以0.2为阈值,当小于0.2时认为是眨眼状态,大于0.2时认为是睁眼状态。
为了兼顾实时性和准确性,以上为粗略判断方法,当粗略判断判定为眨眼状态时,后使用HOG+SVM的方法精确分类眼睛的睁闭状态。
采用HOG+SVM的方法对睁眨眼状态进行判断前,对模型进行预训练,训练数据集的获取包括网上收集的4000张单帧睁闭眼图片加上自己采集的总计有16000张单帧左右眼睁闭图片。在训练时,不区分左右眼,仅区分睁闭眼二分类。
测试数据由自己采集的数据构成,一共4000张单帧眼部图像,训练好的模型在测试集中达到了96.23%的准确率。
本发明将单眼眨眼作为触发电脑命令的一种眼动行为,因此左眼单眨眼或右眼单眨眼称为有意眨眼,双眼眨眼称为无意眨眼。
当发生有意眨眼动作时,双眼的长宽比之差大于0.05,以此判断有意或无意眨眼。发生有意眨眼动作,取长宽比较小的一方来区分左右眨眼,然后分别触发计算机对应的两种命令。
如果判断当前眼睛正处于眨眼状态,不管是无意眨眼还是有意眨眼,都不会再进行下一步眼势的判断,直接结束本轮的处理并读取下一帧。
其中,眨眼判断技术路线为:人脸对齐→计算双眼长宽比→长宽比判断是否眨眼状态:否→双眼区域处理;是→使用HOG+SVM精确分类眨眼状态→是否在连续15帧内有10帧被判断为单眨眼:否→结束本帧处理;是→区分左右眼→触发计算机指令→结束本帧处理。
步骤三、双眼区域提取和处理
紧接上一步,假若判断当前眼睛不是眨眼状态,会进行眼势的判断。
基于人脸关键点定位到的四个眼角坐标,按如下计算方法得出每只眼睛的矩形区域:
Step1:计算两只眼睛的宽度w;
Step2:计算两个眼角坐标的中心坐标(X,Y),以该中心坐标为中心,左右扩展w*3/4的像素区域,上下扩展w*1/2的像素区域;
Step3:眼部图像裁剪与增强:截取矩形区域的眼部图像,调整成36*36像素大小,使用边缘保留滤波去除噪声,使用幂次变换提升区域整体对比度,消除部分阴影。
步骤四、眼球中心位置标定和眼动行为判别
(4-1),眼球中心位置标定:在提取出的双眼区域中,计算梯度的方向和幅值,然后取梯度方向相交最多的那个点,即认为是眼球中心,使用(Xc,Yc)表示。
参见图10所示,根据模板区域扩展出人脸范围,并获取眼睛区域、然后标定眼球中心。
(4-2),眼势发生判断:使用公式(8~9)计眼球中心坐标(Xc,Yc)与眼睛图像长宽36像素的比值tx,ty。
tx=Xc÷36 (8)
ty=Yc÷36 (9)
使用以下方法判断眼球是否可能正在进行一个眼势动作:
A、当眼球中心位置比值tx小于0.30,我们判断眼球做出了向左移动的眼势
B、当眼球中心位置比值tx大于0.60,我们判断眼球做出了向右移动的眼势
C、当眼球中心位置比值ty大于0.62,我们判断眼球做出了向上移动的眼势
(4-3),预测判断眼动行为:判断出(4-2)中三种眼势动作发生后,截取前后总计50帧的眼部视频流进行下一步预测判断眼动行为。
针对有意眼势和无意眼势区分判别,本发明使用LSTM深度学习神经网络来具体判断这些眼势是有意的眼势,还是无意的眼势。
有意的眼势有6种,前三种分别是向左看,向右看和向上看,基于这三种扩展出另外三种分别是眨眼向左看,眨眼向右看和眨眼向上看总计6种我们需要识别的眼势,另外2种无意的眼势分别是眼睛静止或无规律小幅度的扫视运动和普通眨眼。
参见图11-图14所示,眼势有右眨眼、向左看、向右看、向上看的示意图。
将记录眼动行为的视频帧进行帧间差分后,将采用正常的卷积在每一帧中对两个眼睛图像分别提取特征,经过一个最大池化层,进行左右眼特征融合,将数据一维化后连接一个LSTM神经网络,使用Softmax进行8分类。网络结构如图4所示,使用LSTM网络进行眼势判断的技术路线如图5所示。
其中,眼势判断技术路线为:双眼矩形区域预处理→定位眼球中心→是否为眼势可疑序列:否→结束本轮处理;是→帧间差分处理序列→LSTM判别眼势含义→是否有意眼势:是→触发计算机命令→结束本轮处理;否→样本召回→结束本轮处理。
为增加样本数据,本发明在使用LSTM预测前,进行了双眼翻转,增加灰度,旋转,添加噪声等预处理将训练数据集扩展到初始样本集的5倍。将训练后的模型在含有180个样本的测试集中取得了91.3%的准确率。
综上所述,本发明在一帧内判断识别眼动行为的简要流程如图6所示,其具体为:初始化帧→检测跟踪人脸→眨眼判断→双眼区域处理→眼球中心检测→眼动判定→LSTM预测含义。
以上结合具体实施例描述了本发明的技术原理,仅是本发明的优选实施方式。本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。