眼球追踪技术[1]可实时捕获人眼的运动并获取注视点, 由于人的眼球运动行为与大脑的活动密切相关[2], 因此这种技术可辅助用户在计算机等相关设备上完成简单的交互工作[3–5], 并广泛应用于网页测试、广告评估、人机交互、布局评价等诸多领域[6,2]. 近年来有学者提出将眼动交互应用于多通道交互[7], 为眼动人机交互技术开发了更广阔的应用前景. 利用眼动实现人机交互的方式[1]主要有驻留, 平滑跟踪及眼势[8](凝视、眼睛上、下、左、右的运动、眨眼等). 目前大多数眼动交互的工作都使用眼动仪辅助完成, 其工作原理为使用红外摄像头拍摄高清的瞳孔图像, 采用基于瞳孔和角膜反射的视频记录法[9]以准确定位人眼注视点. 多数研究眼动交互的学者一般也会使用红外摄像头作为采集设备, 但在日常生活中, 红外摄像头不易获得, 眼动仪大多造价昂贵且需要预先进行复杂的校准工作, 都不适合作为日常眼动交互的采集设备. 有部分学者针对普通的网络摄像头, 提出了双摄像头估计视线的办法[10], 但易受到头部姿态和外界环境的影响, 无法替代传统使用红外光源辅助的视线跟踪系统. 也有学者提出识别眼动行为的方法, 但只是估计几种不同使用情景下的眼动行为, 并未提出将识别出的眼动行为应用在人机交互中的解决方案[11,12]. 在眼动交互中基于驻留和平滑跟踪的眼动交互方式存在米斯达(Midas)接触问题[4]且需要较高的定位精度, 有研究认为将眼动行为应用在人机交互中需要使用额外的高清摄像机[8,13].
针对以上结论, 本文利用前置网络摄像头作为采集设备, 提出一种使用方向梯度直方图(HOG)特征+SVM和LSTM神经网络的方法, 实现眼势识别并应用于人机交互中. 相较于驻留和平滑跟踪的眼动交互方式, 基于眼势的交互方式对精度和米斯达接触问题更具鲁棒性. 并且随着计算机的普及, 越来越多的家庭或公司职员都拥有笔记本电脑. 大多数笔记本电脑自带前置网络摄像头, 为低成本的基于视觉的人机交互技术提供了环境.
1 关键算法 1.1 人眼定位跟踪及预处理 1.1.1 人眼定位跟踪及预处理在视频流的第一帧, 使用方向梯度直方图(Histogram of Oriented Gradient, HOG)特征检测人脸位置, 若检测人脸成功, 采用文献[14]所提出的基于回归树方法的人脸对齐进行人脸关键点定位. 人脸部分关键点的标注如图1所示.
依据定位的脸部关键点, 计算双眼区域, 如图2所示, 具体计算方法如下:
4个眼角坐标点对应的编号为37、40、43、46. 假设4个眼角坐标点的坐标从左到右分别是(x1, y1), (x2, y2), (x3, y3), (x4, y4), 首先由式(1)~式(2)计算出双眼的平均宽度w和双眼之间的间隔eyelen.
$w = \left( {x2 - x1 + x4 - x3} \right)/2$ | (1) |
$eyelen = (x3 - x2)/2$ | (2) |
假设含有双眼的矩形区域的左上角坐标和右下角坐标分别为(X1,Y1), (X2,Y2)计算X1, Y1, X2, Y2的公式如式(3)~式(6):
$X1 = x1 - eyelen$ | (3) |
$Y1 = y1 - w \times {{2/3}}$ | (4) |
$X2 = x4 - eyelen$ | (5) |
$Y2 = y2 + w \times 2/3$ | (6) |
1.1.2 人眼区域匹配跟踪
使用计算所得的双眼区域作为模板, 在视频流的第二帧及随后的帧中使用模板匹配的办法来跟踪人眼.
模板匹配成功后, 利用人脸三庭五眼的规律扩展出包含整个人脸的矩形区域, 具体计算方法为: 假设模板的宽W、高H. 以模板为中心向上扩宽H个像素, 向下扩宽H×7/2个像素, 宽度不变, 即可得到包含人脸区域的图像. 重复进行人脸对齐关键点检测, 以更新跟踪的双眼模板.
1.1.3 人眼区域处理(1)基于人脸关键点定位到的4个眼角坐标, 按如下计算方法得出单只眼睛的矩形区域.
以左眼为例, 首先计算眼睛的宽度w, 两个眼角坐标的中心坐标(x,y), 以该坐标为中心, 左右扩展w×3/4的像素区域, 上下扩展w×1/2的像素区域, 即可计算出只包含单个眼睛的图像, 如图3所示.
(2)调整大小: 分别裁剪出双眼的图像后, 使用插值法调整成36×36像素大小.
(3)对双眼图像进行图像处理: 使用边缘保留滤波去除噪声, 使用幂次变换提升区域整体对比度, 消除部分阴影, 结果如图4所示.
(4)瞳孔光斑修复算法: 使用自适应阈值将眼睛图像分割成二值化图像, 瞳孔上的光斑与附近的对比度较高而形成一个孤立的区域, 其他大部分区域会联通. 下一步标记联通区域, 将像素点总数在14~30的区域的像素点, 替换成该区域附近的像素值. 瞳孔光斑修复结果如图5所示.
1.2 眼动信息获取和行为识别 1.2.1 眨眼判断
(1)粗略判断方法, 使用定位的人脸关键点计算人眼长宽比, 区分睁闭眼状态, 计算方法: 在人脸关键点定位的基础上选取特征点编号为37~48的12个点. 按编号顺序设单眼周围的6个特征为P1, P2, P3, P4, P5, P6, 如图6所示.
使用式(7)可求出一只眼睛的长宽比, 其中分子表示眼睛的特征点在垂直方向上的距离, 分母表示眼睛的特征点在水平方向上的距离.
$\frac{{\left\| {P2 - P6} \right\| + \left\| {P3 - P5} \right\|}}{{2\left\| {P1 - P4} \right\|}}$ | (7) |
经过不同使用者测试实验, 当眼睛为完全睁开状态时, 长宽比平均在0.30左右, 眼睛完全闭合时, 长宽比平均在0.19左右. 因此以0.25为阈值, 当小于0.25时, 认为眼睛处于闭眼或半闭眼状态, 大于0.25时认为是睁眼状态.
(2)精确判断方法, 使用HOG+SVM模型, 区分有意眨眼和无意眨眼: 判断为闭眼或半闭眼状态, 触发精确的动态眨眼判断.
具体判断方法为: 当连续15帧中, 有10帧的眼睛图像在提取完HOG特征, 并被SVM分类两只眼睛的状态分别为一睁一闭, 就判定其做出了一个单眨眼动作.
1.2.2 眼动轨迹获取本文采用文献[15]的方法来定位眼球的中心, 以实时获取眼球的位置. 接下来计算眼动轨迹: 使用式(8)和式(9)计眼球中心坐标(Xc, Yc)与眼睛图像长宽36像素的比值tx, ty:
$ {t_x} = {X_c}/36 $ | (8) |
$ {t_y} = {Y_c}/36 $ | (9) |
计算出比值后, 比值作为纵坐标, 帧数作为横坐标, 可得到在发生眼动的50帧以内, 普通阅读扫视、向左眼动和向右眼动的完整轨迹, 如图7所示.
1.2.3 眼动行为识别在获得左右眼动时瞳孔眼球中心的轨迹基础上, 根据在纵坐标上是否出现峰值来判断眼球是否可能正在进行一个眼势动作:
(1)当眼球中心位置比值tx小于T1, 我们判断眼球做出了向左移动的眼势;
(2)当眼球中心位置比值tx大于T2, 我们判断眼球做出了向右移动的眼势;
(3)当眼球中心位置比值ty大于T3, 则判断眼球做出了向上移动的眼势.
本文中T1, T2, T3需根据实际不同的屏幕的大小, 推断出正常浏览时眼球的运动范围的范围, 调整出最佳的参数. 由图7可得, 本文在27.2英寸的屏幕正常浏览时的tx, ty的值集中在0.45~0.55, 再经过实际体验, 本文选取的参数最佳为T1=0.32, T2=0.7, T3=0.62.
通过了以上3种判断的任一种, 说明在判断发生时眼球做出了一次眼动行为, 经过测试, 眼动行为的完成时间多在1.5秒以内, 因此将这1.5秒内的眼动视频截取并作为下一步输入. 本文在30 帧/s的摄像头采样速率下, 截取的眼动视频总帧数为50帧.
1.2.4 LSTM行为识别长短期记忆网络 (Long Short-Term Memory, LSTM)的提出是为了解决循环神经网络 (Recurrent Neural Network, RNN)的长依赖问题. LSTM使用独特的输入门、输出门和遗忘门结构, 可以充分保留有效信息并丢弃不相关的信息, 将CNN (Convolutional Neural Networks)与LSTM结合起来, 可以应用于视频分类和视频描述[16]. 应用在行为识别时, 为了去除背景光照等冗余信息, 可以提取原视频帧类似光流数据的运动信息作为输入[17]. 本文将对原眼动视频帧进行帧间差分处理, 以提取眼动行为的运动特征, 消除由于人眼形状与光照不同而造成的误差. 考虑到识别的稳定性, 应当将两只眼睛的眼动视频序列一起作为输入. 识别的简要过程如图8所示.
本文将采取LSTM和CNN结合的网络模型来完成眼动行为的分类任务. 在CNN部分使用一个卷积层和一个池化层, 卷积层使用两个卷积核, 尺寸为4×4, 步长为1, 池化层的尺寸为2×2, 步长为2, 还需在每个卷积层之后添加一个非线性激活函数Relu. 在LSTM部分, 隐藏神经元个数与输入的帧长度相等, 为50个.
将两个眼动帧间差分视频同时作为输入, 在经过卷积层后, 将两张眼动视频提取的特征图通过Concat层进行特征融合操作, 特征维度是一个立方体, 使用Flatten层矢量化并输入进LSTM, 最后经过Softmax分类器预测出每个眼动行为的概率.
本文采取的LSTM网络结构如图9所示.
2 实验及结果分析 2.1 数据采集和样本制作数据采集环境如图10所示, 实验环境如下:
(1)摄像头: 罗技C270i, 1280×720像素 30帧.
(2)显示器: 冠捷 AOC2701 Q27P1B (27.2 英寸).
(3)处理器: 英特尔 Core i7-8700 @ 3.20 GHz 六核.
(4)内存: 16 GB (金士顿 DDR4 2400 MHz).
(5)显卡: Nvidia GeForce GTX 1060 6 GB (6 GB/微星).
(6)操作系统: Windows 10 专业版 64位(DirectX 12).
使用Python语言并利用深度学习库OpenCV, Keras, DLIB进行实验. 被采集者距离屏幕的位置没有太多限制, 但应正对电脑屏幕, 并且摄像头能够拍摄到完整的人脸图像. 在正常均匀光照条件下, 使用上文提到的预处理方法采集训练数据.
2.2 眨眼数据集的训练本文使用的训练数据集样本为长宽36像素的眼睛灰度图像. 采集总计16 000张单帧左右眼睁闭图片. 其中睁闭眼图片分别有8000张, 而8000张眼睛图像中左右眼各占4000张. 训练数据中的闭眼数据集包含半睁状态的人眼图片. 测试数据额外采集, 总计4000张单帧眼部图像.
2.3 眼势数据集的训练单个样本为50帧长宽36像素的灰度视频, 采集10个不同的使用者总计2000张6分类的眼势视频, 加上双眼眨眼视频, 眼睛静止视频两种负样本各100张, 共有2200张8分类的训练数据. 额外录制300张6分类的眼动视频作为测试集.
由于采集到的样本数量有限, 本文使用如下方法扩充训练数据:
(1)调整帧长: 将一个完整的眼动视频帧序列, 增加或减少帧的长度.
(2)滑动窗口填充: 在数据帧的前或后加上长度为10以内的0填充帧, 填充后所有帧的长度一致.
(3)左右眼调换: 翻转左右眼, 运动方向也随之相反, 改变标签.
(4)加入随机噪声: 在图像中给不为零的像素点随机增减5以内的像素值.
经过上述步骤, 训练样本数量理论上可以扩充至10倍以上, 随后挑选正确率最高的组合训练模型来测试预测的准确率.
2.4 实验处理流程本文定义了6种眼动行为, 分别是向左看、向右看、向上看、眨眼向左看、眨眼向右看和眨眼向上看. 并规定2种负样本, 分别是眼睛轻微眼跳或静止和普通无意眨眼.
实验总体技术流程如图11所示.
其中眨眼判断时当识别到当前人眼状态为闭眼或半闭眼, 不管是有意眨眼还是无意眨眼, 都不会进入下一步眼动行为的判断, 结束本帧的处理, 并读取下一帧. 对于眼动语义预测, 由于存在米斯达接触问题, 因此眼球在向上、左和右运动的过程中, 视线都应尽量远离屏幕, 以区分有意眼动和无意眼动. 接下来将基于瞳孔中心轨迹的眼动行为识别到一个疑似的眼动行为的操作, 截取前后总计50帧的眼动视频序列, 输入到LSTM网络中进行最终的眼动行为语义判断. 需要说明的是在输入到LSTM网络前, 需要对截取的50帧眼动视频序列进行帧间差分处理, 以消除光照和人眼形状的影响.
2.5 实验结果及分析在眨眼判断中, 训练时, 实际将图像调整成24×24像素, 一个12像素组成一个cell, 一个cell构成一个block, 其他参数设为默认, 使用线性核函数的SVM做分类. 将全体数据集样本训练一个轮次. 单张静态睁闭眼图片的分类在测试集中达到了96.23%的准确率. 在正常环境下当做出单眨眼行为, 单眨眼状态保持0.3 s以上, 动态识别准确率达到95%.
在眼动语义判断中, 本文使用使用Kreas提供的接口, 除了上文提到的模型细节外其他参数都为默认. 训练时, 使用adam作为优化器, categorical_crossentropy作为损失函数, 将150个样本作为一个批处理, 循环将所有样本训练12次. 经过各种扩充方法的组合训练, 最高在50帧的眼动视频在LSTM中的预测准确率达到99.3%. 其中主要误差原因是基于瞳孔的移动轨迹来预测眼动行为会发生误报的情况, 因为眼中心定位有时会出错, 如图12所示.
经过判断, 识别错误的情况大多为无意眨眼时的半闭眼状态瞳孔中心定位错误, 向右或向左眼动过程中心定位到眼角从而做出了完全相反的预测.
在为识别出的眼动行为的基础上我们分别添加滚动和翻页的命令, 应用于电脑阅读, 使得用户无需用手操作鼠标和键盘, 并且拥有良好的阅读体验.
以下选取了一些相似研究的文献与本文进行对比, 如表1所示.
从表1可以看出, 本文提出的基于LSTM的眼动行为识别方法兼顾识别数量、准确率与设备方便上的优势, 并拥有完整的眼动交互解决方案.
2.6 实际应用本文一共尝试并实现了两种应用, 分别是网页阅读, 以及在PC上使用手机模拟器来模拟APP的使用.
2.6.1 网页阅读如图13所示, 测试者正对电脑, 使用4种眼势(向上、眨眼向上、向左、向右), 分别对应控制向下滚动、向上滚动、向左翻页和向右翻页. 测试表明: 在测试者双手占用的情况下, 可以使用眼势代替滚动和翻页等简单的操作, 并且在扫视浏览文字的过程中极少发生误触, 能够正常地阅读.
2.6.2 模拟的APP的使用如图14所示, 使用者在电脑上运行手机模拟器, 模拟手机上的使用. 所有眼势均可对应一种操作. 分别为:
1)左运动对应左翻页.
2)右运动对应右翻页.
3)上运动对应向下滚动.
4)左眨眼运动实现返回键.
5)右眨眼运动则向下滚动.
6)上眨眼运动触发大幅度向上滚动.
7)左眨眼为模拟鼠标点击屏幕中央.
8)右眨眼可轮流选择下方菜单模块.
手机上运行一款普通的新闻APP, 经测试, 除在选择点击新闻时略不方便, 以及无法完成点击某个特定位置的需求, 大部分操作已可通过眼势完成.
2.7 使用体验在上文提到的实验环境中测试, 程序运行时CPU占用率峰值不超过10%, 内存占用5%. 每秒帧数在30, 目前的帧数处理上限由摄像头的采样频率的决定, 不会造成其他软件使用卡顿的情况. 此外, 使用MacBook Air (2015年初, 1.6 GHz 双核i5)笔记本搭建同样的环境运行, 每秒帧数也可以稳定在25左右, 可以达到实时性.
本文在录制不同测试者的数据集的同时, 收到了不同的用户反馈. 部分用户在初使用时, 存在眼势使用不熟练的情况. 经过训练, 如: 用某个物品模拟注视焦点, 让测试者的眼睛通过跟随焦点和移动焦点完成眼势, 最终都能达到比较良好的效果.
3 结论与讨论为实现简便实惠的眼动人机交互应用, 本文利用笔记本前置摄像头获取眼动信息, 提出一种使用人工提取特征分类+深度学习模型LSTM眼势预测的眼动行为识别方法, 并实现了基本人机交互操作.
其中人工提取特征分类的方法用来识别眼睛的静帧图像, 并将多个相邻帧之间的识别结果组合分析, 实现动态的眨眼识别过程; 采用LSTM网络的深度学习方法, 将50帧的眼动差分序列作为输入, 实现识别眼球向左右上运动等眼动行为. 将以上识别的结果分别触发相应的计算机命令, 实际应用在人机交互中. 实验结果验证在笔记本中基于前置摄像头视频源图像的眼动行为识别的可行性. 但本文方法虽然在测试集和训练集上都有良好的表现, 在实际应用时还要考虑存在部分遮挡、眼睛镜片反光、抖动模糊及眼球中心定位错误等情况下算法的完善和优化. 同时下一步将考虑加上视线追踪, 以期完成更为复杂的交互任务.
[1] |
陈庆荣, 周曦, 韩静, 等. 眼球追踪: 模式、技术和应用. 实验室研究与探索, 2012, 31(10): 10-15. DOI:10.3969/j.issn.1006-7167.2012.10.004 |
[2] |
王刚. 一种基于眼动轨迹的语义提取方法研究. 重庆师范大学学报(自然科学版), 2013, 30(1): 73-76. |
[3] |
朱麒文, 闫隆鑫, 张若兰, 等. 基于视线追踪的眼控鼠标设计. 电子器件, 2016, 39(2): 235-241. DOI:10.3969/j.issn.1005-9490.2016.02.001 |
[4] |
李姗, 潘纲, 李石坚. 面向残障人士的基于眼动交互的绘画系统. 电子学报, 2011, 39(S1): 163-167. |
[5] |
董占勋, 许若楠, 顾振宇. 眼动交互在大屏手机操作中的应用趋势. 包装工程, 2015, 36(24): 57-60, 69. |
[6] |
刘青, 薛澄岐, Hoehn F. 基于眼动跟踪技术的界面可用性评估. 东南大学学报(自然科学版), 2010, 40(2): 331-334. DOI:10.3969/j.issn.1001-0505.2010.02.022 |
[7] |
王增磊, 张树生, 白晓亮. 面向协同装配的混合现实手眼交互技术研究. 计算机应用与软件, 2019, 36(1): 251-258. DOI:10.3969/j.issn.1000-386x.2019.01.045 |
[8] |
林敏. 基于眼动信息的人机交互关键技术研究[博士学位论文]. 上海: 上海大学, 2014.
|
[9] |
王向军, 蔡方方, 刘峰, 等. 非接触动态实时视线跟踪技术. 计算机科学与探索, 2015, 9(3): 266-278. |
[10] |
温晴川, 达飞鹏, 方旭. 基于双目立体视觉的视线跟踪系统标定. 光学学报, 2012, 32(10): 1015002. |
[11] |
王际航. 基于视频图像的眼动系统算法研究与实现[硕士学位论文]. 长春: 吉林大学, 2016.
|
[12] |
孟春宁, 白晋军, 张太宁, 等. 单摄像机下基于眼动分析的行为识别. 物理学报, 2013, 62(17): 174203. DOI:10.7498/aps.62.174203 |
[13] |
Elleuch H, Wali A, Samet A, et al. A real-time eye gesture recognition system based on fuzzy inference system for mobile devices monitoring. Proceedings of the 17th International Conference on Advanced Concepts for Intelligent Vision Systems. Lecce, Italy. 2016. 172–180.
|
[14] |
Kazemi V, Sullivan J. One millisecond face alignment with an ensemble of regression trees. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus, OH, USA. 2014. 1867–1874.
|
[15] |
Rosch J L, Vogel-Walcutt J J. A review of eye-tracking applications as tools for training. Cognition, Technology & Work, 2013, 15(3): 313-327. |
[16] |
厍向阳, 苏学威. 基于CNN和LSTM混合模型的人体跌倒行为研究. 计算机应用研究, 2019, 36(12): 3857-3859, 3868. DOI:10.19734/j.issn.1001-3695.2018.06.0424 |
[17] |
黄友文, 万超伦, 冯恒. 基于CNN与LSTM的多特征融合人体行为识别算法. 激光与光电子学进展. http://kns.cnki.net/kcms/detail/31.1690.TN.20181113.1008.030.html. [2019-07-25].
|
[18] |
倪怡雯, 穆平安, 戴曙光. 快速眼动信息识别算法研究. 计算机应用研究, 2014, 31(3): 917-920. DOI:10.3969/j.issn.1001-3695.2014.03.067 |