缑新科,王 润
(1.兰州理工大学,甘肃 兰州 730050;2.甘肃省工业过程先进控制重点实验室,甘肃 兰州 730050)
手势识别相比于人脸识别,行为识别等更具有直观性和简洁性。因此,手势识别[1]广泛应用于人工智能、虚拟现实、人机交互以及医疗保健等领域。手势识别系统通常包括手势信息的获取,手部检测,手部追踪[2]以及手势识别等几个关键的步骤。手势识别起源于20世纪80年代,由Grimes发明了基于硬件的手势识别系统从此开始了手势识别的研究。Korea Polytechnic大学的李金石,李振恩等[3]采用熵分析法从背景复杂的视频数据中心分割出人的手势形状进行手识别,平均识别率可达95%。2018年,Pedreo[4]等人通过计算手势图像的立体HOG 和HOF 特征进一步提升了手势识别率可达98%。
尽管国内的手势识别起步较晚,但也取得了不错的成绩。清华大学祝远新[5]提出了一种基于运动、形状和色彩等多信息分层融合的方法,在线对12种手势进行识别,其识别率可达90%左右。2018年吴小风[6]等人通过算法Faster-CNN对10种手势图像进行识别平均准确率可达98%。
HOG 特征提取由法国的Naveet Dalal[7]等人在2005年首次提出,是一种实现行为、表情和手势识别等检测的图像描述算法,对环境具有很强的鲁棒性。在本文中,首先通过HOG对手势图像进行特征提取,为了除去HOG特征提取中含有大量的冗余信息,所以利用PCA[8]降维技术只保留手势特征的主要成分。深度学习[9-10]在图像分类上展现了强大的潜力,但其耗时长且需要大量的样本数据,并不适合小样本分类的问题。传统手势识别使用单一分类器的学习能力有限,故本文提出了一种基于ABC优化的集成分类器来强化学习。本文利用本文设计的集成分类器是以SVM[11-12],KNN[13],XGBoost[14]为基分类器,并通过ABC算法为这三个基分类器寻找最优的权重。
HOG 特征是一种图像的局部特征,对于几何和光学形变具有极强的鲁棒性。HOG[15]特征结合SVM已经广泛应用到图像识别当中。首先利用HOG 对手势图像进行特征提取,算法的具体步骤[16]如下:
(1) 灰度化,将RGB图像转换成灰度图像。
(2) 标准化gamma空间和颜色空间。gamma标准化可以减少光照对手势图像的影响,同时增强该算法的鲁棒性,降低对于光照的敏感性。校正公式如下:
(3) 计算图像梯度。分别利用梯度算子[-1,0,1]和[1,0,-1]T对手势图像做卷积运算,该算子公式为:
上式中,Gx(x,y),Gy(x,y),H(x,y)分别是在像素点在(x,y)处的水平梯度和垂直梯度和像素值,且像素点(x,y)处的梯度幅值和梯度方向的公式分别为:
(4) 计算HOG的特征维数。实验中的检测窗口大小是64*64,块大小是16*16,块的步进是8*8,再将每个块划分为4 个胞元,每个胞元大小为8*8,设置每个胞元的直方图的bin 值为9,也就是每个块有4*9=36 个特征向量,所以一个64*64 的检测窗口HOG 特征向量为[(64-16)/8+1]2*36=1764维。将手势图片尺寸归一化为64*64,并提取的HOG特征图如图1所示。
图1 提取HOG特征图
PCA(主成分分析)是最常用的降维方法之一,其原理是用n维特征向量代替总维度m维特征向量(m≥n),在降维的过程中尽量将数据损失降到最小,通过PCA 降维可以避免维度爆炸,并除去一定的干扰信息。
一般用下式来表示数据信息的主成分:
y为前n个主成分特征,xi为需要的降维特征,x为训练样本的特征均值,UT为协方差矩阵。UT具体为:
在HOG-PCA特征降维的过程为:首先计算出HOG原始特征的特征维度,本文选取的HOG 手势特征为1764 维;得到HOG 的特征维度后,计算协方差矩阵UT,并求得相应的特征值和特征向量;最后将特征值进行排列,取前n 个特征值对应的特征向量组成n维手势特征向量。
2.3.1 基于SVM的分类方法
SVM 一般用于解决线性分类的问题,首先将一般分类问题简化成一个二分类的模型。线性分类器就是设计一个超平面[17],在样本空间(xi,yi),i=1,…,xRd,y{-1,+1}中,该超平面可表示为:
在最佳分割超平面上的点,从一个点到一个超平面的距离为:
通过对w和wo的归一化,得:
y1为类别1,y2为类别2,分类面之间的距离为2/||w||,如果该样本空间线性可分,SVM在式(7)的限制下,求一个超平面使得2/||w||的值最大,并利用拉格朗日求极值:
即可得到L(w,w0,)的极小值满足:
通过上式即可求得最佳超平面的法向量和支持向量。SVM分类算法在实际问题中经常需要根据样本特征维度和分布情况的不同选取不同的核函数。本文经过反复试验发现高斯核函数具有准确率高且稳定性强的特征,因此,选择高斯核函数,其表达式为:
2.3.2 基于KNN的分类方法
K近邻算法(KNN)是最近邻算法的一个推广,该算法的原理是将一个测试数据点x分类为与它最接近的K 个近邻中出现最多的那个类别。KNN算法从测试样本点x开始生长,一直扩大到包含进K 个训练样本点,并且把测试样本点x归为这最近的K 个训练样本点中出现频率最大的类别。一般使用欧式距离测量测试样本与训练样本的相似度。
若K 值固定,并且允许训练样本个数无限增大,则全部的这K个近邻都将收敛于x。与最近邻规则相同,K个近邻的标记都是随机变量,概率P(wi|x),i=1,2…k彼此相互独立。如果P(wm|x)为较大的那个后验概率,则根据贝叶斯分类[18]规则,可以选取类别wm,而最近邻规则以概率P(wm|x)选取类别,根据K近邻规则,只有当K个最近邻中的大多数的标记为wm,则将类别判定为wm。做出这样断定的概率为:
通常类别概率和K值成正比。
2.3.3 基于XGBoost的分类方法
XGBoost是一种提升树模型,它是将许多树模型集成在一起,形成一个很强的分类器,而所用到的树模型则是CART回归树[19]模型。该算法思想就是一层一层的添加树,每次添加一个树,其本质是学习一个新的函数,用来拟合上次预测结果的残差。当得到k棵树时训练完成,下一步预测该样本的分数,根据其样本的特征,每棵树会落到相对应的一个叶子节点,得到一个相应的分数,再将每棵树对应的分数相加就是该样本的最终预测值。
XGBoost具体计算步骤如下:
(1) XGBoost目标函数具体为:
其中,Ω(fk)具体为:
(2) Xgboost使用梯度提升策略,保留已经有的模型,一次添加一个新的回归树到模型中,假设第i个样本在第t次迭代的预测结果为,ft(xi)为加入的新的回归树,可得如下推导过程:
将式(15)的结果代入式(14)中,可得:
(3) 将目标函数做二阶泰勒展开,并且引入正则项:
集成分类器[20]的原理是首先构造出n个基分类器,基分类器[21]可以是同质也可以是异质,每个分类器都可以输出一个结果,针对这些结果使用统计方法来做最终的决策,理论上基分类器的差异越大集成分类器的分类效果就越好。本文使用的三个异质分类器为:SVM 分类器,KNN 分类器,XGBoost 分类器。通过ABC 算法[22-23]为这三种分类器寻找最优的权重,使之成为一个新的集成分类器来有效提高手势识别率。该算法核心思路如下图2所示。
图2 核心思路图
各个分类器的权重由人工蜂群算法得出,人工蜂群算法是群智的一种,其基本思想是蜂群由雇佣蜂、跟随蜂和侦察蜂整个蜂群寻找最大的蜜源,即实际优化问题中的最优解。假设在D维空间中,随机生成SN个可行解,蜜源的位置公式为:
xi(i=1,2,…,SN)为D 维向量,即D 为优化参数的个数,j{1,2,…,D},xmax,j和xmin,j为迭代空间的最大值和最小值。
雇佣蜂在当前蜜源附近展开搜索,并记录自己到目前为止的最优值。则新蜜源的更新搜索公式为:
j{1,2,…,D},k{1,2,…,SN},且k≠i,φ为[-1,1]之间的随机数。
侦察蜂选择雇佣蜂的概率为:
fit(xi)为搜索个体的适应度值,为了防止ABC优化算法陷入局部最优,如果一个蜜源经过limit 次迭代仍未能寻到更优值,则抛弃该蜜源,然后该蜜源对应的雇佣蜂变为侦察蜂搜索新的蜜源。
经过该优化算法可得:权重个数为3,则初始化蜜源空间为3 维;种群大小为30;最大迭代次数为200,当迭代完成时输出最优权重参数。
为了进行实验对比,首先进行HOG-PCA的特征提取及降维处理,并分别与分类器SVM,KNN 以及XGBOOST 在数据集NUS Hand Posture dataset Ⅱ中Hand Postures 的下进行实验分析,并分别得到分类速度和手势识别率,然后通过人工蜂群算法对这三种分类器设置最优的权重得到一个集成分类器进行手势识别,并与以上三种分类器进行比较。
本文采用NUS Hand Posture dataset Ⅱ中的Hand Postures 数据集,其中共包含10 种手势姿势,拍摄于不同的背景之下。将其定义为手势a 到j,共2000 张,每类200 张。训练集数目为1500,验证集数目为500。实验之初已经对样本集进行了归一化(64*64)和灰度化等预处理。处理后的手势图像a到j如图3所示。
图3 手势图像a到j
HOG提取的手势特征具有许多冗余信息,通过PCA降维后,不仅可以具备描述手势信息的能力,若选取合适的特征维度,还可以在一定程度上提高手势识别率。选取不同维度的主成分并利用SVM进行识别,如下图4所示。
图4 HOG-PCA特征降维
通过上图可以特征得到维度在350维时,手势识别率最高为92.17%。选取特征维度350维的手势特征和原始HOG(1764维)特征进行比较,结果如下表1所示。
表1 HOG和HOG-PCA对比实验
通过上表可知经过PCA降维处理后手势识别率上升了0.37%,分类速度也缩短为不足原始数据的1/3。
所以,选取特征维度为350 维的手势特征分别与SVM支持向量机,KNN,XGBoost进行分类识别。在经过反复多次实验后,KNN 分类器最终选择K 值为32。XGBoost 分类器选择树的深度为10,学习率为0.03。单个分类器的分类效果如表2所示。
表2 不同分类器的单独表现
从上述实验中可以发现虽然HOG特征降维后的数据使用单独分类器可以基本完成手势分类,但效果还不够理想,没有达到预期要求。为了进一步提高手势识别率,现在将单个分类器改进为经过人工蜂群算法优化的集成分类器,ABC 算法将优化后的权重参数重新分配给各基分类器,从而提高集成分类器的分类性能,可进一步提升手势识别率。基分类器SVM,KNN,XGBoost 权重参数之比为:0.3656:0.3215:0.3129。则集成分类器的识别效果如表3所示。
表3 集成分类器的识别效果
通过实验可以看出本文设计的集成分类器的与单独的分类器相比可以有效的提高手势识别率2.57%。
本文通过HOG-PCA 选取最佳的特征维度,并利用人工蜂群算法将基分类器SVM,KNN,XGBoost 设置成一个更优的集成分类器来进一步提高手势识别率,并且达到了预期的效果。但是集成分类器相比于单个分类器分类速度较慢,下一步的改进方向是提高集成分类器的分类速度。