杨铮, 方慧娟,2, 罗继亮,2, 孙海信
(1. 华侨大学 信息科学与工程学院, 福建 厦门 361021;2. 华侨大学 福建省电机控制与系统优化调度工程技术研究中心, 福建 厦门 361021;3. 厦门大学 信息学院, 福建 厦门 361005)
脑机接口(BCI)是一项在人脑与外界设备之间建立联系的技术[1-2],能够辅助残疾人或正常人控制移动设备[3].BCI技术的优势是能够准确、直接地控制外部设备,但是由于其系统模态单一,单模态脑机接口系统存在控制指令不足的问题.为了解决这一问题,Pfurtscheller等[4]于2010年提出混合BCI的概念,将单模态BCI与其他生理或技术信号相结合,构建多模态BCI系统.目前,很多学者对混合BCI进行了大量研究,张浩等[5]开发了一种基于P300和运动想象的混合BCI系统控制轮椅;窦立祥[6]结合稳态视觉诱发(SSVEP)和运动想象设计一种混合BCI系统,实现Dobot机械臂在线写字.上述混合BCI系统的设计均有各自的优势和不足.基于稳态视觉诱发的BCI系统性能稳定且不受头部运动影响,但是输入速度慢;P300具有准确性高的特点,但长时间的实验会引起人眼不适.
随着科技的发展,基于计算机视觉[7-9]的控制技术也愈发成熟(如体感技术[10]等).基于计算机视觉的眨眼检测技术是通过对摄像头获取的用户面部图像进行模式识别实现的,最常见的是基于眼部纵横比(EAR)的方法[11],其核心是眼睛面部地标之间距离比例的简单计算,通过图像分析捕获实时的眨眼动作.该技术不需要接触其他设备,直接与计算机进行高效、快速的人-机交互.
单模态的运动想象脑机接口的实验范式设定由空闲状态控制移动机器人向前运动,左想象控制移动机器人向左运动、右想象控制移动机器人向右运动.然而,移动机器人在执行任务过程中可能会遇到极端的情况,如移动机器人无法通过自身的避障系统避开下楼梯这类环境,出于对移动机器人行动时安全性能的考虑,给该系统添加一个启停机制是必要的.借鉴以上技术的特点,本文提出一种用计算机视觉代替视觉依赖型反应式BCI系统的方法,避免实验过程中受试者眼部产生不适反应.
人脸检测方法包括基于统计型和基于知识型两种.基于统计型方法是从大量的人脸图像样本中提取人脸特征,构造人脸模板,将模板与目标图像进行相似度量计算,根据结果判断目标图像中是否有人脸存在;而基于知识型方法则是利用先验知识(如五官特征及相互之间的几何位置)检测人脸.通过两种人脸识别算法采集人脸图像,实现人脸和人脸轮廓的捕捉和特征点提取,通过算法得到对应实验结果,再将检测结果实时转换成控制指令,从而实现眨眼干预移动机器人.眨眼检测算法流程图,如图1所示.
图1 眨眼检测算法流程图Fig.1 Flow chart of blink detection algorithm
采用主动形状模型(ASM)算法[12]进行人脸识别.该算法是一种基于点分布模型的算法,应用面部68个特征点定位脸部的重要区域(包括眼睛、眉毛、鼻子和嘴巴),这意味着可以通过特定脸部的索引,提取特定的脸部结构,在完成人脸检测的同时也完成了人眼定位.该算法的主要流程如下.
1) 搜集n个人脸训练样本,记录人脸关键特征点的位置坐标信息.
2) 构建训练集的形状向量,将人脸图中标定关键特征点组成一个形状向量,即
(1)
对标定的人脸特征点进行对齐,减少非形状因素的干扰,消除不同图像大小和方向变化等影响.定义训练集G={Xi},采用普氏(Procrustes)分析法对该训练集进行对齐,主要有以下4个步骤.
步骤1将训练集中所有人脸模型对齐到第1个人脸模型,将模型与新点集进行匹配,对刚得到的模型进行平移、旋转和放缩,即
(2)
式(2)中:T为旋转放缩平移矩阵;θ为旋转角度;s为放缩尺寸;X为水平方向平移向量;Y为垂直方向平移向量;(x,y)表示任意特征点的二维坐标.
图2 样本对齐结果Fig.2 Sample alignment result
(3)
步骤4重复步骤2,3,直至收敛,样本对齐结果,如图2所示.
3) 将对齐后的形状向量进行主成分分析(PCA)[13]降维处理,计算向量协方差矩阵S,即
(4)
4) 计算矩阵S特征值并从大到小排序,得到λ1,λ2,…,λq,选取包含了前t个特征值构成的特征向量矩阵P=[P1,P2,……,Pt],使其满足
(5)
式(5)中:fv是特征向量个数确定的比例系数,一般为95.0%或97.5%.
通过任意样本模型与标准模型,计算得到特征点P为
(6)
图3 模型匹配效果图Fig.3 Model matching effect diagram
式(6)中:b是一个t维向量(约束条件),用来控制特征点P的变化.该向量不宜过大,否则会导致整个形状超过人脸变化范围.
b的求取过程如下:1) 初始化b向量为单位向量,得到标准模型Z1(X,Y);2) 将标准模型Z1(X,Y)与样本模型Z2(X,Y)比较,标准模型Z1(X,Y)通过变换矩阵T得到样本模型Z2(X,Y),采用模型Z1(X,Y),Z2(X,Y)的结果反求b,不同的样本模型得到不同的b,不断更新b,直至收敛.
将得到的模型P模型与样本图像进行匹配,取样本图像上对应模型特征点附近梯度值最大的点,得到新特征点P样本,将其标定在图像上,并配合跟踪算法[14-15]实现对人脸的实时跟踪.模型匹配效果图,如图3所示.
图4 眼部坐标点Fig.4 Eye coordinates
对于眨眼检测,从眼睛的结构入手,每只眼睛用6个点p1~p6表示,如图4所示.运用这些坐标得出眼部宽度和高度之间的眼部纵横比(EAR)关系为
(7)
式(7)中:分子部分表示眼睛垂直方向标识之间的距离;分母部分则表示眼睛水平方向标识之间的距离.
图5 实时EAR值结果波形图Fig.5 Result waveform of real-time EAR value
眼睛的纵横比在眼睛张开/闭合的时候大致是恒定的,但是在眨眼时会迅速降低.依据这一眨眼特点,计算眼部纵横比,通过实时的眼部纵横比值与设定的眨眼阈值相比较,判断是否眨眼,如果EAR值低于设定的阈值,则记录眨眼1次.然而,出于对眼球的保护,人体会不自觉地产生眨眼的动作.眨眼检测过程中,根据实时的EAR数据绘制的眨眼波形图,如图5所示.图5中:β为眼部纵横比个数.由图5可知:无意识眨眼时的EAR值波动小,而刻意眨眼时的EAR值波动较大.无意识眨眼对整个实验而言是一种扰动因素,会影响刻意眨眼次数的统计.为了避免将无意识的眨眼次数统计到实验结果中,对眨眼阈值大小的选取显得尤为重要.
除了EAR值,刻意眨眼与无意识眨眼在眨眼时间上有较大的区别.刻意眨眼一次会在眼睛闭合时持续一小段时间,所需时间为0.7~1.0 s左右,而无意识眨眼消耗的时间低于0.4 s.因此,可以将眼部纵横比阈值和眨眼时间作为切入点,去除无意识眨眼对眨眼检测的影响.
采用基于Adaboost[11,16-18]算法对眼部状态进行识别.Adaboost算法是一种精度极高的分类器,通过分层分类器对训练样本进行训练,根据每一层的训练结果修改对应的样本权值,并基于新样本权值重新训练.这样不断循环训练会提高错误样本的分布概率,分类器更新样本权值后会对这些错误样本重点照顾.最后,将每次训练得到的分类器融合起来,即变成最终的决策分类器.利用Adaboost算法把弱的分类器组合成强的分类器后,进行级联并用于人脸检测,对模型眼部进行瞳孔边缘的椭圆拟合和Canny边缘检测,从而确定眼睛的状态.
将瞳孔与椭圆拟合后,通过Canny边缘检测确定眼睛的状态.Canny算子是一个多级的边缘检测算法,通过查找图像中梯度的局部最大值提取图像的边缘信息,若某一点的边缘强度满足边缘定位条件,则将该点定位为边缘点.采用边缘局部特征处理得到人眼的边缘闭合曲线,根据人眼区域的黑像素点变化情况识别当前的睁闭眼状态.对眼部黑色像素的数目设定一个阈值,该阈值的判定函数为
(8)
当f值大于该阈值时,判定此时人眼处于睁开状态;当f值小于该阈值时,则判定人眼处于闭合状态.人的眼部状态可以分为4类:双眼睁开;左眼闭合、右眼睁开;左眼睁开、右眼闭合;双眼闭合.实时眼部状态识别结果,如图6所示.
图6 实时眼部状态识别结果Fig.6 Real-time eye status recognition results
1.3.1 眨眼检测实验 室内正常光照条件下,要求5名受试者在摄像头前眨眼50次,系统根据眨眼检测算法统计受试者的眨眼次数.采用的眨眼检测算法是将眼部纵横比与眨眼阈值进行比较,判断是否眨眼,因此,眨眼阈值是眨眼检测算法中的重要参数.为了选取合适的眨眼阈值(θ),对不同眨眼阈值下的眨眼次数进行分析,如表1所示.表1中:δ为眨眼检测误差.
表1 不同眨眼阈值的眨眼次数Tab.1 Blink times with different blink thresholds
由表1可知:当阈值为0.15~0.18时,眨眼次数统计结果相对精确;当阈值设定为0.17时,实验得到的眨眼检测误差最低,因此,将眨眼阈值设定为0.17.
阈值参数设定后,要求受试者在室内正常光照条件下完成不同的眨眼次数实验,各20组.为保证发出控制指令的快速性,要求受试者在1 s内完成1次眨眼.不同眨眼控制指令下的识别成功次数,如表2所示.表2中:n为眨眼次数;N为识别成功的总次数;η为识别准确率;t为眨眼识别用时.
表2 不同眨眼控制指令下的识别成功次数Tab.2 Successful identified times under different blink control commands
1.3.2 眼部状态识别实验 在室内正常光照条件下,要求9名会睁、闭单眼的受试者完成4类眼部睁闭状态实验,各20组.4种眼部状态的识别成功次数,如表3所示.
表3 4种眼部状态的识别成功次数Tab.3 Successful identified times of four kinds of eye states
实验结果表明:基于眨眼次数统计的眨眼控制方法适用人群广、准确率较高,且对硬件设备的要求不高,但是滑动时间窗导致移动机器人接收到对应的控制指令有几秒的延时,实时性略差;而基于眼部状态识别的眨眼控制方法实时性好、准确性高,但是对硬件设备的要求较高,且不适用于不会睁、闭单只眼睛的人群.
基于眨眼次数的控制方法可以获取实时的眼部纵横比数据,与眨眼阈值比较后可判断是否刻意眨眼.在此基础上,设计一种通过自适应滑动时间窗转换眼部纵横比数据的方法,统计滑动时间窗范围内的眨眼次数并将其转换成控制指令,干预移动机器人的运动状态.为了在实验过程中减少计算机对眨眼次数的误判,将两次及两次以上的连续眨眼转换为控制指令.其算法如下.
算法1眨眼次数转换为控制指令算法.
输入:实时的眼部纵横比数据、滑动时间窗和眨眼阈值参数
输出:眨眼次数,眨眼次数对应的控制指令
1 系统获取实时的眼部纵横比数据;
2 时间窗框定眼部纵横比数据,范围KL~(K+1)L-1,K=0;
3 将眼部纵横比数据与眨眼阈值比较,得到低于眨眼阈值的EAR值个数n(即眨眼次数);
IF n<2,K=K+1
THEN 记录时间窗最后一个数据的位置Pi,根据策略将眨眼次数转换为控制指令,下一个 滑动时间窗的方位为Pi+1~Pi+L;
IF n≥2
THEN 下一个滑动时间窗框定范围KL~(K+1)L-1.
基于眼部状态识别的控制方法可以识别实时的眼部状态.而在实验过程中,发现大多数情况下人的两只眼睛都是处于睁开状态,这使得眼部识别结果为“双眼睁开”的频率过高,所以不适合将“双眼睁开”状态转换为控制指令.若将其转换为直行指令,则无法随时控制移动机器人切换至转向状态连续转向;若将其转换为停止指令,则无法控制移动机器人连续直行或连续转向.因此,提出将其他眼部状态转换为控制指令的算法.
算法2眼部状态转换为控制指令算法.
输入:实时眼部图像,黑色像素阈值f
输出:对应的控制指令
1 系统获取实时的眼部图像;
2 对于瞳孔区域进行椭圆拟合,椭圆外部图像全设置为白色;
3 得到椭圆内部左、右眼各自的黑色像素数目GL和GR;
4 将实时的黑色像素数目G与阈值f比较
IF GL>f && GR>f
THEN 识别结果“双眼睁开”
ELSE IF GL
THEN 识别结果“左眼闭合、右眼睁开”,转换为控制指令1;
ELSE IF GL>f && GR THEN 识别结果“左眼睁开、右眼闭合”,转换为控制指令2; ELSE IF GL THEN 识别结果“双眼闭合”,转换为控制指令3. 结合眨眼控制系统模块、运动想象脑机接口系统模块、AmigoBot移动机器人系统模块和Petri网模块设计混合脑机接口系统,如图7所示. 图7 混合脑机接口系统Fig.7 Hybrid brain computer interface system 为了方便受试者更轻松地控制移动机器人,提出如下策略:通过眨眼的方式控制整个移动机器人的直行、转向和停止3种状态,当眨眼控制系统发出转向指令时,移动机器人接收运动想象脑电信号,进一步执行左转或右转指令;当眨眼控制系统发出直行或停止指令时,移动机器人不接收运动想象控制指令.此外,当移动机器人没有接收到新的控制信号时,会继续执行前一个控制指令对应的任务;当移动机器人接收到新的、不同的控制指令时,停止上一个任务,执行新的任务. 为了验证混合系统的效果,设计一个控制移动机器人移动过程中避开楼梯口的实验,受试者需要控制移动机器人从起点运行到楼梯口,再运行至终点.实验使用的计算机配置为Inert(R) Core(TM) i5-8250 CPU,8.00 GB安装内存和1.80 GHz主频,Windows 10操作系统;实验数据来自电脑自带摄像头,图像的分辨率设置为1 920 px×1 080 px,视频帧率为30 帧·s-1;将微软Microsoft Visual Studio 2013开发平台与移动机器人仿真界面平台MoibleSim相结合,进行在线仿真实验.仿真实验界面,如图8所示. 图8 仿真实验界面Fig.8 Simulation experimental interface 图8为混合脑机接口系统在线实验的工作环境,眨眼检测界面、运动想象脑机接口界面和移动机器人的仿真图都在同一界面上.受试者仅需看着电脑界面就可控制仿真界面中的移动机器人.针对控制问题,对混合BCI实验范式进行改进. 1) 调节移动机器人的移动速度和转动角度.移动机器人在实验过程中以0.1 m·s-1的速度移动,每次转向时的转动角度为15°,即在超低速环境下实现混合脑机接口控制移动机器人. 2) 为了方便受试者控制移动机器人,实验过程中受试者不需要持续发出控制信号.受试者发出控制指令后由系统决策,只要混合BCI系统没有决策得到新的控制指令,移动机器人就一直执行原有决策结果对应的任务;若混合BCI系统决策得到新的控制指令,移动机器人会停止执行原任务,开始新任务的执行. 单一运动想象BCI系统和混合BCI系统控制移动机器人经过楼梯(下梯)口的移动路线,如图9所示.图9中:绿线代表移动机器人停止运动的位置. (a) 单一运动想象BCI系统控制 (b) 混合BCI控制 图9 不同BCI系统控制移动机器人的移动路线Fig.9 Movement paths of mobile robot controlled by different BCI system 单一运动想象BCI系统控制移动机器人抵达楼梯口时,由于受试者不能及时控制移动机器人调转方向,使移动机器人触碰到楼梯口的障碍物后停止运行,无法按预期完成抵达终点的任务.实验结果表明:单一运动想象BCI系统控制移动机器人经过下梯口时,操作不当会产生移动机器人掉下楼梯的风险,而基于眨眼和运动想象控制的BCI混合系统可以实时控制移动机器人停止,不仅避免了该风险的发生,还解决了单一运动想象BCI控制指令不足的问题,提高了脑机接口系统的实际应用效果. 不同受试者通过脑电设备控制移动机器人的效果不一,但大多都能通过适合自身的眨眼方式控制移动机器人停止.当受试者感觉控制状态不佳或在实验过程中感到疲劳时,可以随时停止移动机器人,进行短暂休息或者调整自身的状态,以便在接下来的实验中以更好的精神状态继续工作. 设计基于眨眼和运动想象控制移动机器人运动的混合BCI系统,实现由运动想象移动机器人左转、右转,眨眼控制移动机器人停止、直行和转向的功能,有效解决单一运动想象控制移动机器人过程中控制指令不足这一问题.仿真实验证明了系统方案的合理性、准确性和实时性.实验将系统的安全性放在首位,受试者可以通过眨眼随时停止移动机器人,减轻受试者视觉和大脑方面的负担、降低实验的复杂程度,同时有望提高脑机接口系统的实用性.1.5 混合脑机接口系统
2 实验仿真分析
3 结束语