内容梗概:
传统的集中式人脸识别方法在时间效率和可扩展性等方面存在不足,已经不能满足大规模实时人脸识别的需求。针对这个技术瓶颈,本文提出了一种分布式人脸识别方法。该模型由多个代理和一个服务器组成,代理能够同时对多个视频中的行人进行检测、跟踪以及特征提取,服务器则对视频中的行人执行识别操作。针对代理处理的任务分布不均而导致处理视频时间过长、任务量过大引起的CPU利用率激增问题,设计了代理的负载均衡来进行性能优化。利用代理统计处理的视频总数及每个视频中的行人数,并将统计数据发送给服务器。服务器通过负载均衡将视频重新分配给每个代理进行人脸识别。实验结果证明:分布式人脸识别有效地提高了人脸识别方法的效率和可扩展性,对一些较为极端的实验例子经过性能优化后,代理中最大的CPU利用率降低近40%,有效地缓解了时间延迟问题。
人脸识别已从最初对背景单一的正面灰度图像的识别,发展到基于视频的人脸识别。基于视频的人脸识别包括4个部分:人脸检测、人脸跟踪、特征提取和匹配识别。在人脸检测方面Yan Wen Wu等人提出了一种结合肤色信息的Adaboost算法用来检测人脸,Rachid Belaroussi等人则使用肤色信息进行人脸检测,但是这种算法不是很稳定。人脸跟踪算法方面佘九华等人提出使用改进的Camshift算法对人脸进行跟踪,可以同时跟踪多人并且能够克服遮挡问题。另外 Veronica Vilaplana等人提出了基于区域的Meanshift人脸跟踪算法,提高了跟踪的准确性。在多人脸识别方面,Binu Muraleedharan Nair等人通过结合多姿态人脸数据库和模块加权主成分分析算法,有效地提高了识别率。类似的,模块PCA也被用来识别多张人脸。目前对于人脸识别系统的研究已经取得了很大的进步,可以快速精确地进行人脸识别。
然而,为了提高人脸识别效率,学者们已经不再拘泥于传统的人脸识别系统。有的学者提出一种分布式并行人脸识别系统,该系统通过分割人脸数据库并由多个从属服务器同时进行匹配识别,有效地提高了人脸识别效率,但该分布式人脸识别系统仅适用于超大规模人脸数据库的人脸识别 。另外,相关文献还提出了基于数据融合的分布式人脸识别模型。该模型根据人脸的五官将人脸图像分割成4部分,分别提取特征,然后对得到的特征数据进行融合。该方法在保证面部识别准确性的前提下提高了人脸识别的效率。然而这种针对五官分割面部图像的分布式人脸识别方法在分割图片时需要手工切割,不仅使人脸识别更为繁琐,而且降低了效率。另外,上述分布式人脸识别方法都是针对人脸图片进行人脸识别操作的,不能针对视频中的人脸进行识别操作。基于此,Rajeshwari J等人提出了针对视频流进行识别的分布式人脸识别系统。该系统的基本思想是将n帧视频分别发送给N个客户端,各个客户端分别对接收到的图像执行人脸识别操作。但这种分布式人脸识别系统实质上仍然是针对图像中的人脸进行识别,效率较低、还十分耗费计算机资源。
显然,上面提到的人脸识别系统都不能同时对多个视频执行人脸识别操作,而且随着科技的不断进步,需要进行人脸识别的视频也逐渐增加。为了增加人脸识别系统的可扩展性,本文提出了一种分布式人脸识别方法。这种方法是将传统的人脸识别分成两部分,其中人脸检测、人脸跟踪和特征提取等操作均由代理来处理,而人脸匹配识别则由服务器来执行。这种分布式人脸识别可以有多个代理,如果代理间的任务量相差很大,那么处理任务量较大的代理将会产生时间延迟,导致整体的人脸识别时间过长,并且代理端的CPU利用率也会激增至最大。为了解决这些问题,需要使用一种能够均衡分配各代理任务量的优化算法。任务均衡问题类似于任务调度问题,而遗传算法一直以来都是解决这类问题的常用算法。另外,遗传算法也适用于负载均衡问题,然而传统遗传算法还存在容易过早收敛及不稳定等缺点,因此,本文对传统遗传算法的交叉概率和变异概率进行了限制,并且增加了阈值函数来减少迭代次数。这种优化方法可有效提高基于代理的分布式人脸识别模型的时间效率和可扩展性。
分布式人脸识别
1.1 分布式人脸识别模型
本文提出的分布式人脸识别模型如图1所示。人脸识别模型被分割为两部分,服务器和代理。每个代理可以同时处理多个视频,每个视频中有一个或者多个行人,代理端和服务器端的信息通过SOAP进行相互传递。
代理和服务器之间的关系如图2所示,代理主要对视频中的行人执行如下操作:人脸检测、人脸跟踪和特征提取。代理提取人脸特征以后,将特征信息通过SOAP发送给服务器,服务器接收特征信息,并将收到的特征信息和人脸数据库中的特征信息进行匹配识别,最后把识别结果返回给代理,代理会显示出识别结果。
1.2 分布式模型中的多人脸识别
分布式人脸识别模型通过结合PCA和FisherFace,对视频中的多个行人执行人脸识别。首先,使PCA将K-L变换后的特征值从大到小排列,选出相对大的特征值所对应的特征向量,构成一个K-L变换特征空间的子空间,来进行特征提取。然后对特征数据进行降维。其次,将降维后的图像投影到N-c空间中,再结合线性鉴别分析方法求出最优投影矩阵。其中N表示训练样本的总数目,c表示的是人脸类别数,求解FisherFace最优投影矩阵的公式如下:
其中,ω对应了W中的列向量,Sb和Sw分别代表高纬度空间中的类间离散矩阵和类内离散度矩阵。LDA的准则函数则为类内离散度矩阵和类间离散度矩阵的行列式的比值。
文中使用的人脸数据库ORL数据库,并增加了4个测试视频中行人的人脸图像。由于使用的网络摄像头分辨率最低,所以增加的人脸图像也是低分辨率的。本文主要解决的是行人的正脸识别。图3是ORL数据库中增加的人脸图片,为了能够更精确的正面识别到行人,每个人取10张角度变化不大的正脸图片作为ORL数据库中的样本。
1.3 分布式人脸识别的性能优化
本文提出的分布式人脸识别模型中有多个代理,并且每个代理可以同时识别多个视频中的行人,为了避免代理处理任务量不均导致的时间延迟,对每个代理处理的任务量采用遗传算法进行负载均衡。
假设有k个代理要处理m个视频,每个视频中有多个行人,第i个代理处理的ID号为AIDi,处理的视频集合为:
其中i的范围是(0,k],ni 是第i个代理中的视频个数,(0<ni ≤m),Vi中第j个视频中的行人个数为Pij(0<j≤ni)
首先,对GA中的染色体进行初始化,以第i个代理为例,将AIDi,Vij,Pij,这3个参数作为一个节点,由于第i个代理中有ni个视频,所以就有ni个这样的节点,将这ni个节点作为第i个染色体的基因。第i个染色体由Chromi来表示,Chromi初始化结果如下所示:
本文采用的适应值函数如下:
其中c是小于1的随机数。
其次,使用轮盘赌方式进行选择操作,根据计算公式(8)获得选择结果。考虑个体优劣差距较大的情况,根据染色体的数量,选择不同质量的染色体进行遗传。
在遗传操作中,选择两点交叉方法进行交叉操作,根据染色体长度的不同,设定这两个交叉点的选择范围,令第一个交叉点的位置为第一个基因节点,假设这两条染色体中最短的染色体长度为Lmin,则第二个交叉点的选择范围即 [ Lmin/2,Lmin ] 。
为了避免过早收敛使算法进入局部最优,及保证种群的多样性,根据染色体的适应值对交叉概率Pc和变异概率Pm增加了一些随机性操作,Pc和Pm的计算公式如下所示:
其中:MaxF1是染色体中最大的适应值,MaxF2 是染色体中第二个大的适应值,MinF是染色体中最小的适应值,k1、 k2、k3 和k4是[0,1]的随机数。为了尽快缩小染色体之间的优劣差距,在传统的GA算法中加入了迁移操作,即通过将最差染色体中的最大基因迁移至最优的染色体中来完成该操作。最常用的停止准则是选择一个比较大的数作为迭代次数。但在本文中,为了不错过最优解设置了一个阈值函数。公式如下:
其中,参数ξ是一个阈值,这个阈值小于1。本文负载均衡操作的步骤如下:
步骤1:服务器接收代理发送的信息,并初始化为染色体;
步骤2:根据公式(7)计算每条染色体的适应值;
步骤3:根据公式(8)执行选择运算;
步骤4:计算公式(11)如果没有满足预定的阈值,则执行步骤5~步骤7;如果满足预定阈值,则停止;
步骤5:根据公式(9)计算交叉概率Pc判断是否执行交叉操作,并且重复步骤2和步骤3;
步骤6:根据公式(10)计算变异概率Pm。如果不能执行变异操作,则执行迁移操作,并且重复步骤2和步骤3;
步骤7:转到步骤4继续。
1.4 测量实验与结果
基于视频的集中式人脸识别系统不适合大规模人脸识别,在可扩展性方面具有局限性,而已有的分布式人脸识别系统则无法对视频进行处理。为了解决这些问题,本文提出了基于代理的分布式人脸识别模型,其不仅可以同时处理多个视频并且增加了可扩展性。
本节将针对本文提出的基于代理的分布式人脸识别系统的性能进行评估,分多种情况进行仿真实验。所有的视频都是通过分辨率为704X516的Axis 215 PZT网络摄像头采集,视频的帧率为5 frame/s。服务器和代理采用的处理器都为 Intel(R)Core(TM)i7-3770M CPU @ 3.40Ghz、操作系统为windows7 的计算机。改进的遗传算法中,停止准则的阈值ξ设置为0.87。
由于篇幅有限,本文仅给出其中一个视频的部分识别结果,图4(彩图见期刊电子版)表示代理显示的两个人脸的识别结果,分别给出了视频中第75帧、第87帧、第92帧、第105帧、第112帧和第127帧的识别结果。
为了分析处理时间与视频中人数的关系,先令代理单独处理一个视频,由于测试视频中行人总数最多是4人,所以做了4次实验。中间的81帧视频的处理时间如图5(彩图见期刊电子版)所示,每一帧视频的处理时间包括代理的检测时间、跟踪时间和特征提取时间,以及服务器的识别时间。
对于不同人数的视频,平均处理时间见表1。从图5和表1中可以看出,处理时间随着视频中人数的增加而增加。
接下来,模拟2个代理的情况,分别把,4、6、8、10、12、14个视频随机分配给2个代理,未进行任务均衡前,2个代理中所有视频中的行人总数分别是7、13、17、22、28、34。将本文使用的遗传算法(GA)与随机划分方法(Random)和文献[18]中提出的粒子群优化算法(PSO)分别进行任务均衡,以对比方法性能。
图6是采用不同方法时,服务器处理一帧视频的平均时间。由图6可知,服务器仅执行人脸识别操作时,处理时间的数量级很小,使用GA均衡后,服务器端的人脸识别时间明显比使用Random方法和PSO算法要低很多。
然后比较使用3种算法均衡任务后处理一帧视频的平均时间。比较结果如图7所示,随着任务量的增加,处理时间也随之增加,所以任务分配越均匀,处理一帧视频的平均时间就越小。平均来看,使用GA均衡后,一帧视频的平均处理时间比Random算法降低了18.92%左右,比PSO算法降低了大约8.7%。
最后,比较了使用3种算法进行负载均衡后2个代理中最大的CPU利用率,结果如图8所示,使用Random算法后,当视频中总人数达到28人时,代理中最大的CPU利用率几乎到100%;使用PSO算法进行负载均衡后,代理中最大的CPU利用率为74.73%,而使用GA优化后,代理中最大的CPU利用率则达到60.56%,明显比前两种方法要低很多。
结论
目前分布式人脸识别系统大部分是针对人脸图片设计的,即便有针对视频的分布式人脸识别模型也不具有可扩展性,因此提出了一种新型的可扩展的分布式人脸识别方法。该方法将人脸识别系统分为服务器端和代理端两部分,服务器执行人脸匹配识别操作,代理则执行人脸检测、跟踪和特征提取等操作。该方法可以同时识别多个视频中的行人,有效地提高了人脸识别效率,并增加了可扩展性。
在此基础上,针对多个代理由于处理任务量不均匀所导致的一系列问题,设计了代理的负载均衡方法对分布式人脸识别模型进行性能优化,并使用遗传算法对代理端的任务量进行了负载均衡。通过大量实验证明,在相对极端的情况下,相比随机划分方法和粒子群优化算法而言,使用遗传算法进行性能优化后,处理一帧视频的平均时间分别降低了约19.37%和9.43%,并且代理中最大的CPU利用率平均分别降低了28.52%和18.27%,有效的缓解了处理视频时间过长的问题,并且降低了CPU利用率。这种优化方法有效的提高了分布式人脸识别方法的性能和可扩展性。