基于聚类的在线式多人脸图像处理的方法

文档序号:10553305阅读:391来源:国知局
基于聚类的在线式多人脸图像处理的方法
【专利摘要】本发明公开了一种基于聚类的在线式多人脸图像处理的方法,通过设置距离阈值来调整权值进行聚类,首先构造了一个不断循环的过程,针对外界传进来的每一个人脸,根据其到各聚类中心的距离对其进行归类,然后进行类内调整。并在人脸总数到达阈值时把聚类结果进行输出,且其中聚类中心就是我们选择出来的人脸。本发明的方法可以很好地满足在线式多人脸图像处理的需求,并且通过实验证实,在实时性和正确性等方面达到了要求。
【专利说明】
基于聚类的在线式多人脸图像处理的方法
技术领域
[0001] 本发明涉及多人脸图像处理的方法,尤其涉及一种基于聚类的在线式多人脸图像 处理的方法。
【背景技术】
[0002] 随着信息化程度的加深和社会公共安全意识的提高,传统的人脸识别系统(下简 称传统系统)也在不断地扩大其部署的规模;而具备高并发识别、大人脸库匹配能力的云端 人脸识别系统(下简称云端系统)就是其中的一种发展方向。
[0003] 与传统系统不同,云端环境下系统对网络的负载力、匹配的实时性提出了更高的 要求,特别是在一些门禁场景、公众场景中。在这些场景中,客户端摄像头捕捉到的每一帧 内都可能包含多个人脸,并且在很长的一段时间内都会维持非常高的人脸产生率。假如一 个摄像头一秒截取10帧,每帧包含5个人脸,而其中一个人脸的数据大小是4KB。那么该摄像 头一秒内就会产生大小为200KB的人脸数据。如果这些人脸我们都要通过网络上传到云端 系统进行匹配,不仅会对网络造成巨大的负担,同时也会大大地消耗云端系统的计算资源。
[0004] 当前的各类云端系统的研究中,都主要把目光投注到数据库匹配效率的提高上。
[0005] 根据时下流行的分布式处理概念,张俨等人提出了一种云计算环境下的人脸识别 系统。他们把基于PCA的传统人脸识别算法与Hadoop框架相结合,满足了用户对海量人脸图 像识别的计算速率需求;同时还改进了经典的KNN分类算法,提高了识别的精度和稳定性 (张俨.一种云计算环境下人脸识别系统的设计与实现[D].西安电子科技大学,2013)。
[0006] 同时,盛会鹏等人也在研究该如何提升人脸数据库的匹配效率。他们对K-均值算 法进行了修改,并在此基础上设计了一个基于聚类的大规模人脸库快速检索系统。他们借 鉴和提高了前人使用聚类来构建人脸层次特征索引结构的方法,在降低一次检索所用时间 的同时,还保证了正确性(盛会鹏.大规模人像数据库快速检索算法的研究[D].吉林大学, 2006) 〇
[0007] 不过,哪怕数据库匹配效率已经得到很好的提高,但这也只是治标不治本,我们仍 然需要解决客户端上传人脸过多的问题。
[0008] 其实客户端产生的人脸是带有很大冗余的,在一段时间内产生的人脸其实都来自 同一群被采集对象。为了降低一段时间内的上传人脸数,我们可以从产生的所有人脸中只 选择出一部分来作为上传人脸,然后抛弃掉其他的部分。比如一开始那个假设的例子,我们 如果可以收集人脸,然后一秒钟,甚至三秒种来进行一次选择上传,并令选择的人脸个数为 5个,那么我们就可以降低一段时间内的人脸上传量,从而缓解网络负担进而减轻云端的计 算压力。
[0009] 所以,解决客户端上传人脸过多的问题其实就是该怎样去选择人脸的问题。
[0010] 传统的方法主要有:
[0011] 1、选择质量高的人脸(清晰,姿势标准)
[0012] 2、摄像头延时截取
[0013] 第一种方法可以快速地选择出匹配效果好的人脸,但是无法应对采集对象突然做 表情的问题;同时这种方法也无法区分出不同人的人脸,选择人脸的时候可能会出现漏选 人的现象。而第二种方法则比较硬性,但是同样很容易出现漏人,延时小时达不到降低人脸 上传量的目的,延时大时还会影响到匹配实时性。
[0014] 更一般地,我们为选择人脸的策略设立了如下几个准则:
[0015] 1.选取出来的子集与全集的覆盖人数一样。其中覆盖人数指的是,若某个人脸集 合中,人脸总共来自n个被采集对象,那么该人脸集合的覆盖人数为n;
[0016] 2.选取出来的人脸具有最大的代表性。在这里我们对代表性的定义是,在一个人 脸集合中,若某个人脸到其他人脸的距离(〇~1,相似度越小则距离越大)之和最小,那么认 为该人脸在该集合上具有最大的代表性;
[0017] 3.特殊的人脸会被专门选择出来。所谓的特殊人脸,指的是采集不清晰、侧脸、做 大表情等的非标准人脸;
[0018] 4.选择是在线式的。亦即人脸的选择并不需要预先给定一个人脸的集合,等待运 算完成之后才能取得结果,而是人脸是不断输入的,而算法会在恰当的时候把结果输出。 [0019] 1967年J.B,Mac Queen提出了K-Means聚类算法,这个经典且使用广泛的基于距离 的聚类算法,使用了数据样本间的距离作为相似性度量,能够把比较相近的样本组成一类, 并最终得到紧凑而且独立的类集合(J.MACQUEEN.SOME METHODS FOR CLASSIFICATION AND ANALYSIS OF MULTIVARIATE 0BSERVATI0NS[C].5-th Berkeley Symposium on Mathematical Statistics and Probability?1967:281~297)〇
[0020] 我们把覆盖人数为P的人脸集合当做数据样本集合交给K-Means聚类算法,根据其 计算方式,如果在算法参数恰好合适的情况下,我们可以得到这样的聚类结果:
[0021] 如果不存在特殊的人脸,且P = K,那么整个人脸集合会被分成K类,每个类中的大 多数的人脸样本都来自于同一个人,并且同一个人的大多数人脸样本都属于同一个类。
[0022] 每一个类中的大多人脸都彼此相似,且每一个类中都存在一个人脸最能代表该 类。
[0023] 在参数值允许时(K = P+e,e等于特殊人脸的个数),那么原人脸集合中的特殊人脸 将会各自被单独分成一类。
[0024] 假如我们把聚类结果中,各个类中的最有代表性的人脸选择出来进行上传,那么 可以推知:结果1保证了准则1的成立;结果2保证了准则2的成立;结果3保证了准则3的成 立。
[0025] 当然,这里还有两个准则存在讨论,首先就是准则2中我们怎么选择最有代表性的 人脸(K-Means的聚类中心并不是距离和最小的样本)。其次,就是准则4并不能得到保证。
[0026] 事实上,K-Means聚类在人脸集合上实际使用时,我们往往会遇到以下几个困难:
[0027] 1.K-Means只能且必须分成K个类,无法自适应地根据数据样本集中应有类的个数 进行动态调整;
[0028] 2.K-Means的聚类极易受到初始点选取的影响;
[0029] 3.K-Means聚类也特别容易受到离散点的影响;
[0030] 4.K-Means算法的计算是离线式的,也就是说其聚类的执行要预先一次性给清整 个数据样本集合;
[0031] 5.K-Means的计算量随着数据点规模的增大而急速增大。

【发明内容】

[0032] 本发明所要解决的技术问题是针对【背景技术】中所涉及到的缺陷,提供一种基于聚 类的在线式多人脸图像处理的方法。
[0033]本发明为解决上述技术问题采用以下技术方案:
[0034]基于聚类的在线式多人脸图像处理的方法,人脸聚类的具体步骤如下:
[0035]步骤1),设定初始块大小B,距离阈值y和类集合S;
[0036] 步骤2),等待一个新来人脸数据样本的传入;
[0037] 步骤3),分别计算类集合S中各个类的聚类中心与新来人脸数据样本之间的距离, 找出与新来人脸数据样本之间距离最小的类S I;
[0038]步骤4),将类S:与新来人脸数据样本之间距离与设定的距离阈值y进行比较,如果 类31与新来人脸数据样本之间距离小于等于距离阈值y,将新来人脸数据样本加入到SI;如 果类3:与新来人脸数据样本之间距离大于距离阈值y,建立一个新的类,将新来人脸数据样 本加入这个新的类,并将该新的类加入到类集合S中;
[0039]步骤5),更新新来人脸数据样本所在类的聚类中心;
[0040]步骤6),计算当前类集合S中的人脸数,如果类集合S中的人脸数小于B,执行步骤 2);如果类集合S中的人脸数大于或等于B,将当前的聚类结果输出后,清空类集合S,执行步 骤2)。
[0041] 作为本发明基于聚类的在线式多人脸图像处理的方法进一步的优化方案,步骤5) 的详细步骤如下:
[0042] 步骤5.1),对于新来人脸数据样本所在类中的每个人脸数据样本,计算其和其他 人脸数据样本之间的距离和;
[0043]步骤5.2),将距离和最小的人脸数据样本作为新来人脸数据样本所在类的聚类中 心。
[0044] 本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0045] 1.在满足准则1、2、3成立的前提下,还特别保证了准则4的成立,因为算法是一个 不断循环并接受新来人脸的过程;
[0046] 2.不对分类数进行限制,不需要考虑初始点的选择;
[0047] 3.在阈值合理的情况下,离散点不会干扰到最后的结果;
[0048] 4.每一次输出中,聚类中心一定是具有最大代表性的人脸。
【附图说明】
[0049] 图1是本发明基于聚类的在线式多人脸图像处理方法的流程图;
[0050] 图2是用于进行实例说明的简单人脸数据样本集展示图;
[0051] 图3是简单人脸数据样本集经过本方法计算后,获取到的输出人脸集合展示图; [0052]图4是本发明引入云端人脸识别系统的组件图。
【具体实施方式】
[0053]下面结合附图对本发明的技术方案做进一步的详细说明:
[0054]如图1所示,本发明公开了一种基于聚类的在线式多人脸图像处理的方法,包含以 下步骤:
[0055] 步骤1),进行参数设置和初始化。
[0056] 设初始块大小为B,距离阈值为y,初始化类集合S为空,S中元素的个数为n,当前已 有的人脸数为m,初始状态时n = 0、m = 0,对外提供一个添加人脸的接口,并有:
[0057] A.用Dist(a,b)表示人脸a和人脸b之间的距离(距离越大,相似度越低);
[0058] B.任取一个类s且s G S,那么令s. center表示类s的聚类中心,s. size表示类s中的 人脸个数;并用Si表示类集合S中的第i个类;
[0059] C.任意的一个算法中的已有人脸都属于且只属于一个类,用Sl表示类s中的第i个 人脸,且同时存在Wi表示Si在类s中的权值;
[0060] 步骤2),等待一个新来人脸数据样本的传入。
[0061] 步骤3),分别计算类集合S中各个类的聚类中心与新来人脸数据样本之间的距离, 找出与新来人脸数据样本之间距离最小的类
[0062]步骤4),将类S:与新来人脸数据样本之间距离与设定的距离阈值y进行比较,如果 类31与新来人脸数据样本之间距离小于等于距离阈值y,将新来人脸数据样本加入到SI;如 果类3:与新来人脸数据样本之间距离大于距离阈值y,建立一个新的类,将新来人脸数据样 本加入这个新的类,并将该新的类加入到类集合S中。
[0063] 步骤3)和步骤4)用公式表示具体如下:
[0064] 对任意的一个新来的人脸X,计算并找出一个下标I,使其满足Dist(x, (Si) ? center) =min{Dist(x, (Si) ? center), i = 1, A ,n},且Dist(x, (Si) ? centerXii。
[0065] 根据结果可以判断是否寻到到满足条件的类,若成功找到这样的一个I,那么就把 x归到类St*,然后依次令m+= 1、(Sd . size+= 1;若找不到这样的一个I,比如类集合为空, 各个类的聚类中心到x的距离最小也大于y等,那么就新建一个类,把这个类加入到类集合S 中,再把义归到这个新的类中,然后依次令1=11+1、11+=1、111+=1、(51).8126+=1。
[0066] 步骤5),对类s = Si进行内部调整,对于新来人脸数据样本所在类中的每个人脸数 据样本,计算其和其他人脸数据样本之间的距离和,将距离和最小的人脸数据样本作为新 来人脸数据样本所在类的聚类中心。
[0067] 先计算f = 1,L,uize-1,然后按以下方式更新权值:
[0068] = Wj + dx s , / = l.L ,smzc ~1 ; s,size-\
[0_ 况.-:=z 心, M
[0070]此时,类s中的各个数据样本,包括新加入的数据样本都有一个权值与之对应,权 值体现为该数据样本到其他各个数据样本的距离之和。根据新的权值,我们更新类的聚类 中心:
[0071 ]找到下标J,使其满足wj=min{wi, i = l,L,s. size},那么令s.center = sj;
[0072]步骤6),判断当前算法中已有的样本数:
[0073] m〈B时,等待新的数据样本的到来,跳转到步骤2)执行。
[0074] m>B时,把当前S作为结果输出,然后清空S,并令n = 0,m = 0,等待新的数据样本的 到来,跳转到步骤2)执行。
[0075] 下面通过一个实验来说明本发明工作的过程。
[0076] 如图2所示,我们首先给定一个包含冗余人脸、特殊人脸的简单人脸数据样本集。 在这个集合中,人脸来自于两个人(同一行则来自同一个人),前三个样本表示效果比较好 的,后两张则表示特殊的情况,如侧脸,仰视等。
[0077]通过人脸识别算法,我们可以得到如下的距离表格:
[0079]表头中的000表示人脸sample_000. jpg,其余则以此类推;表中的数据表示其横纵 表头对应的两个数据样本间的距离。
[0080] 从表中可以看出,两两人脸之间的距离都处在0.1以下。所以我们以0.1作为阈值 y,10(全体数据样本数)作为块大小B来初始化算法,然后把整个集合依次传入该算法中。那 么计算的过程为(用{a}表示一个包含a的集合,那么聚类情况可以用一个二维的集合表 示)。
[0081] 传入000,其自成一类。算法模块中的聚类情况为{{000}},聚类中心对应为{000}。 [0082] 传入001,其与000的距离为0.018,小于0.1,那么它被分配到000对应的类中,在类 内调整中,因为〇〇〇和001对应的权重是一样的,那么根据算法保持聚类中心不变。算法模块 中的聚类情况为{{000,001} },聚类中心对应为{000}。
[0083]传入002,根据算法其被分配到000对应的类中,在类内调整中,各样本对应的权值 分别为〇〇〇: 0.037,001:0.032,002:0.033,那么经过调整,聚类中心变为001。算法模块中的 聚类情况为{{〇〇〇,001,002}},聚类中心对应为{001}。
[0084]传入003,因为003到001的距离为0.200,大于0.1,所以其自成一类。此时算法模块 中的聚类情况为{{000,001,〇〇2},{003}},聚类中心对应为{001,003}。
[0085] 继续处理后我们最终可以得到如下结果:
[0086]
[0087] 把聚类中心对应的人脸选择出来形成输出人脸集合,那么算法的最终输出如图3 所示。我们可以轻松地看出,原本的〇〇〇、〇〇2和006、007已经被精简掉,并且分别被001和005 代表。也就是说冗余的人脸已经被剔除,而且从距离权值上看,002和005也拥有着各自类中 最大的代表性。其次,原本的特殊人脸003、004、008、009都被很好地保留了下来,作为特殊 的人脸进行了输出,这也反映了算法具备不漏特殊的性质。
[0088] 为了更一般地去对算法进行评估,我们提出了以下几个指标:
[0090] 为了让实验更具一般性,我们使用了某免费云人脸识别API。因为要联网上传图片 识别的缘故,所以这里的平均一次计算消耗时间比较大。如果使用本地的人脸识别算法,那 么将可以把时间缩减为原来的十分之一至二十分之一。
[0091] 上表中各个指标的意义为:
[0092] 输入人脸数\输出人脸数:输入人脸数表示输入人脸集合的人脸数;输出人脸数表 示输出人脸集合的人脸数。
[0093] 输入覆盖人数\输出覆盖人数:一个人脸集合的覆盖人数表示当该集合中的人脸 总共来自n个人时,那么其覆盖人数就是n。输入覆盖人数表示输入人脸集合的覆盖人数;输 出覆盖人数则表示输出人脸集合的覆盖人数。
[0094] 计算次数上限\计算次数:计算次数上限是一个只与块大小B和人脸集合人脸数c 有关的值,它表示本发明所提出的算法在最坏的情况下(所有的人脸都被分成一类),在块 大小B的条件下,对人脸数为c的人脸集合进行聚类的计算次数:
[0095] 计算次数上限:
[0096] 左边中括号内的第一个B-1表示计算新来人脸与聚类中心之间距离的次数,之后 的部分表示类内调整计算新来人脸与类内其他已有人脸之间距离的次数
表示程序总共 会进行多少次分块计算。
[0097] 计算次数则表示程序统计的求取两个人脸数据样本距离的次数。
[0098] 平均一次计算消耗时间:平均一次计算消耗时间等于总计算时长除以计算次数, 其中总计算时长为程序统计的,从第一个人脸被接收开始,直到最后一个人脸被接收且算 法输出结果为止的程序总耗时,计算次数的含义同上一个指标。该指标用于评估平均每一 次计算的时间消耗。
[0099] 输入特殊人脸数\输出特殊人脸数:所谓的特殊人脸,体现在其是某一个人的人 脸,但是其与该人的一般状态的人脸不相似。它可以是一个人的证件照人脸集合中突然出 现的做表情、侧脸或者带遮挡等的人脸,也可以是一个人的侧脸照人脸集合中突然出现的 证件照人脸。由于这个并没有一个非常明确的指标,所以需要进行手工标定。标定的方法为 当人工认为输入人脸集合中有两个以上的人脸相似时,那么这些相似的人脸都不是特殊人 脸,除此之外的就是输入特殊人脸;而在程序输出中,一个类中只有一个数据样本时,那么 这个数据样本就是一个输出特殊人脸。输入特殊人脸数表示输入人脸集合中,包含的特殊 人脸的个数;输出特殊人脸数则表示输出人脸集合中,包含的特殊人脸的个数。
[0100] 特殊人脸命中率:人工认为的特殊人脸和程序认为的特殊人脸在定义上是不同 的,那么就会产生一个问题,假设Sa表示程序输出的特殊人脸集合,S m表示人工选择的特殊 人脸集合,但Sa_Sm不一定为空集。所谓的特殊人脸命中率,就是S a中的元素来自概率。 令Count(S)表示集合S中元素的个数。那么特殊人脸命中率的计算公式为:
[0102] 错误分类数:正确的分类为人脸与其所在聚类的聚类中心对应的人脸来自同一个 人,如果不是,那么这个人脸的分类就是一次错误分类。错误分类数表示在算法输出的聚类 结果中,错误分类的次数。
[0103] 类似上述实验方法,我们还在0RL人脸数据库上进行了测试:
[0105] 0RL人脸数据库上的特殊人脸标定时我们硬性地规定每个人选出两张人脸作为特 殊人脸,但实际上很多人的人脸集合确实不包含特殊人脸。
[0106] 结果表明,本方法在减少冗余、保证结果正确性、不漏特殊人脸以及维持计算规模 方面都有非常显著的表现,并且满足了前文提出的4个人脸选择的准则。
[0107] 我们接下来把该方法用作聚类模块引入到人脸识别云端系统中。
[0108] 如图4所示,这是一个结合了本发明方法的简单客户端组件图,其数据流程为:控 制模块调用网络摄像头抓取到包含访问者的一帧图片,然后使用算法提供模块提供的人脸 提取算法,从图片中截取一个或者多个人脸图片。之后,再依次调用聚类模块提供的添加一 张人脸的接口把截取到的人脸图片添加到聚类模块中。在聚类模块中,本发明所提出的算 法使用了算法提供模块提供的求两张人脸之间的距离的方法,对添加进来的人脸图片进行 聚类。最后,当一次分块计算完成后,聚类模块再通过网络传输模块的上传一张人脸的接 口,把聚类结果中,聚类中心对应的人脸通过网络传给主服务器。为了达到实时性、鲁棒性 的要求,我们在实现中都采用了类似于消息队列的伺服机制,各个模块分别自我维护一个 任务队列,接口的调用都是通过类似于任务投递的方式来实现的,然后各个模块的内部都 会有一个线程来专门负责从任务队列中抽取任务来执行。同时要注意到的是,聚类模块在 实现时,要比之前所表述的算法流程更复杂一些。首先为了防止人脸长期滞留内存,我们会 建立一个监控线程来专门计算两次人脸传入的时间间隔,当该间隔达到一定大小时,监控 线程就会强制聚类模块把当前的聚类结果输出。同时算法各个参数的设置上也不是一次设 置然后就锁死的,它也能够根据硬件的计算压力进行动态地调整,以确保实时性和正确性 的统一。
[0109]我们还可以把该方法用到包含人脸的视频(文件)的预处理工作中。通过对视频文 件进行逐帧人脸检测和提取,我们可以获得一个包含多个人脸的人脸集合。本发明所提出 的方法能够对这个人脸集合进行过滤。根据本发明所满足的4个人脸选择的准则,过滤的结 果能够比较好地代表该视频文件中的人脸情况,同时还降低了人脸的数量。
[0110]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步 详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限制本发 明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明 的保护范围之内。
【主权项】
1. 基于聚类的在线式多人脸图像处理的方法,其特征在于,人脸聚类的具体步骤如下: 步骤1 ),设定初始块大小B,距离阈值μ和类集合S; 步骤2 ),等待一个新来人脸数据样本的传入; 步骤3),分别计算类集合S中各个类的聚类中心与新来人脸数据样本之间的距离,找出 与新来人脸数据样本之间距离最小的类S1; 步骤4),将类S1与新来人脸数据样本之间距离与设定的距离阈值μ进行比较,如果类5: 与新来人脸数据样本之间距离小于等于距离阈值μ,将新来人脸数据样本加入到S1;如果类 3:与新来人脸数据样本之间距离大于距离阈值μ,建立一个新的类,将新来人脸数据样本加 入这个新的类,并将该新的类加入到类集合S中; 步骤5),更新新来人脸数据样本所在类的聚类中心; 步骤6),计算当前类集合S中的人脸数,如果类集合S中的人脸数小于Β,执行步骤2);如 果类集合S中的人脸数大于或等于Β,将当前的聚类结果输出后,清空类集合S,执行步骤2)。2. 根据权利要求1所述的基于聚类的在线式多人脸图像处理的方法,其特征在于,步骤 5)的详细步骤如下: 步骤5.1 ),对于新来人脸数据样本所在类中的每个人脸数据样本,计算其和其他人脸 数据样本之间的距离和; 步骤5.2),将距离和最小的人脸数据样本作为新来人脸数据样本所在类的聚类中心。
【文档编号】G06K9/62GK105913001SQ201610210173
【公开日】2016年8月31日
【申请日】2016年4月6日
【发明人】李千目, 陆妍蕾, 李德强, 李涛, 徐佳, 徐小龙
【申请人】南京邮电大学盐城大数据研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1