基于神经网络的轻量级的人脸识别方法与流程

文档序号:16882615发布日期:2019-02-15 22:19阅读:153来源:国知局
基于神经网络的轻量级的人脸识别方法与流程

本发明属于人脸识别技术领域,具体涉及一种基于神经网络的人脸识别轻量级实现方法。



背景技术:

人脸识别是基于生物特征的识别方式,利用人类自身拥有的,并且能够唯一标示其身份的生理特征或行为特征进行身份验证的技术。随着人机交互,智能城市概念的提出,人脸识别技术具有非常重要的意义。作为模式识别与机器学习领域的主要研究方法之一,已经有大量的人脸识别算法被提出。

近年来,深度神经网络在图像分类和识别领域取得了许多实质性进展,并且在手写数字识别,车牌识别,人脸检测领域展现了其优异的性能,取得了极好的识别效果。

然而,基于深度神经网络实现的人脸识别系统具有模型过于庞大,内部参数过多的缺点,这些权重参数会消耗大量的计算和存储资源,一些常用的用于人脸识别的深度神经网络,其模型往往都超过几百兆,这使得其很难部署到移动设备上。



技术实现要素:

本发明的发明目的在于:针对现有的基于深度学习的人脸识别系统中存在的模型过大,速度慢等技术问题,本发提供了一种基于神经网络的轻量级的人脸识别方法,可以在基本不损失系统精度的前提下,尽可能压缩模型大小,加快人脸识别速度。

本发明的基于神经网络的轻量级的人脸识别方法包括下列步骤:

构建人脸检测器步骤:

以深度神经卷积网络模型作为人脸检测网络模型,包括人脸特征提取网络、全连接层和非极大值抑制层;训练所述人脸检测网络模型时,对所述人脸特征提取网络模型进行第一轻量化处理;将训练好的人脸检测网络模型作为轻量化人脸检测器;其中,第一轻量化处理包括模型参数剪枝和模型参数量化;即对人脸特征提取网络进行模型参数量化,对全连接层进行模型参数剪枝;

构建面部特征提取器步骤:

以深度神经卷积网络模型作为面部特征提取网络模型,并对其进行深度学习训练,训练时,对所述面部特征提取网络模型进行第二轻量化处理;将训练好的面部特征提取网络模型作为轻量化面部特征提取器;其中,第二轻量化处理包括模型参数量化;

构建人脸识别数据库步骤:

将同一人不同角度的照片进行尺度归一化处理后,再输入轻量化面部特征提取器,得到对应的面部特征向量并存入人脸识别数据库;其中归一化后的尺寸与轻量化面部特征提取器的输入相匹配;

人脸区域检测步骤:

对待识别的图像进行尺寸归一化处理后,输入轻量化人脸检测器,从待识别的图像中检测出人脸的存在,并分离出人脸区域图像;其中归一化后的尺寸与轻量化人脸检测器的输入相匹配;

人脸识别处理步骤:

对人脸区域检测步骤得到的人脸区域图像进行归一化处理后,输入轻量化面部特征提取器,得到待识别的面部特征向量;其中归一化后的尺寸与轻量化面部特征提取器的输入相匹配;

再将待识别的面部特征向量与人脸识别数据库中的面部特征向量进行比较,取距离最近的比较结果作为人脸识别结果;

所述模型参数剪枝和模型参数量化,具体方式为:

(a)模型参数剪枝:

计算全连接层的各神经元ai与上一层的各神经元的权重bik之间的相关系数rik:其中i为全连接层的神经元的区分符,k为权重区分符,分别表示神经元ai、权重bik的均值,分别表示神经元ai、权重bik的方差;

基于相关系数构建表示剪枝的掩码矩阵:分别在正、负相关的相关系数中采样s×k+、s×k-个相关系数,再将所采样的关系数对应的权重索引的掩码参数设置为激活,而其他位置的掩码参数置为非激活,得到表示剪枝的掩码矩阵;

其中s表示预设的稀疏度,取值范围为0<s<1,k+表示正相关的相关系数数量,k-表示负相关的相关系数数量;

采样方式具体为:分别将将所有正、负相关的相关系数rik降序排列,然后均分为前后两部分,在前一部分中随机采样λ×s×k*个,在后一部分中随机采样出(1-λ)×s×k*个;其中λ表示预设权值,取值为0~1,k*表示正或负相关的相关系数数量;

(b)模型参数量化:

对m个输入神经元的权重进行聚类处理,并得到各类的聚类中心,其中类别数等于输出神经元数n;

并对m个权重进行梯度量化处理,得到梯度量化之后的权重wg,再由相同类的wg的累加值得到各类减少量δw;

分别将各类的聚类中心减去各类减少量δw,得到各类权重的量化值;并将同一类别的权重的权重取值均设置为该类权重的量化值。

综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明通过对人脸特征提取网络的优化,压缩了人脸识别处理中所涉及的深度神经网络模型的大小,在基本不损失系统精度的前提下,加快人脸识别处理速度。本发明的轻量级的识别方法可部署在小型移动终端比如树莓派,单片机等小型设备上,可应用于门禁管理系统,超市会员注册管理系统,考生身份验证管理系统中。

附图说明

图1是本发明的轻量化人脸识别处理过程示意图;

图2是人脸检测模型示意图;

图3本发明的权值轻量化处理过程示意图。

图4是现有的firemodule结构示意图;

图5是面部特征提取网络模型的训练示意图;

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。

本发明通过对人脸特征提取网络的优化,压缩了人脸识别处理中所涉及的深度神经网络模型的大小,在基本不损失系统精度的前提下,加快人脸识别处理速度。参见图1,其主要步骤包括:

s1:对原始图像(自然场景下的人脸图像)进行尺寸归一化(优选的尺寸为300*300)处理后送入人脸特征提取器,人脸特征提取器提取用于人脸区域检测的人脸特征,然后通过ssd(singleshotmultiboxdetector,单次多盒检测器)人脸检测器从原始图像中检测出人脸的存在,并分离出人脸区域;

s2:对分离出的人脸区域图像进行预处理,得到归一化的人脸图像;

s3:采用轻量化面部特征提取器对步骤(2)中得到的人脸图像进行面部特征提取;

s4:对面部特征进行knn(k最近邻算法)分类处理,实现人脸识别。

具体的,各步骤具体如下:

步骤s1具体实现方式为:

采用神经网络提取原始图像特征,再将其送入ssd人脸检测器中。

优选mobilenet神经网络提取原始图像特征(人脸特征),mobilenet网络是一款由谷歌发布的高效,小尺寸的视觉模型,其旨在充分利用移动设备和嵌入式应用的有效的资源,提取原始图像中有用的特征,将多个特征层送入ssd(singleshotmultiboxdetector,单次多盒检测器)模型中进行人脸检测。本发明通过采用mobilenet作为提取人脸检测框特征的基础网络,提高模型的处理速度。

ssd是采用单个深度神经网络模型实现目标检测和识别的方法,该模型综合了faster-rcnn(较快速的基于目标区域的卷积神经网络)的边界框思想和yolo(youonlylookonce)的单个神经网络检测的思路,因此既有faster-rcnn的准确率又有yolo的检测速度,本发明使用ssd人脸检测器对图像进行人脸检测,检测出人脸区域。参见图2,整个人脸检测的网络模型包括mobilenet、额外特征层(ssd_1~ssd_5)和全连接层,以及非极大值抑制层。

其中,mobilenet用于特征提取的基本网络,提取原始图像特征;

额外特征层用于辅助生成特征,通过使用大小不同的卷积(conv)核生成不同大小的特征层。本实施例中,mobilenet所提取的每个特征向量的维度为512,每个特征向量对应的图像区域为38×38;其中额外特征层ssd_1~ssd_4分别包括两个卷积层:深度可分解卷积(dsc层)和普通卷积层(conv层),具体为:ssd_1层,先通过dsc-3×3×1024,再通过conv-1×1×1024;ssd_2层,先通过conv-1×1×256,再通过dsc-3×3×512;ssd_3层,先通过conv-1×1×128,再通过dsc-3×3×256;ssd_4层,先通过conv-1×1×128,再通过dsc-3×3×256;而额外特征层包括两个普通卷积层,即先通过conv-1×1×128,再通过conv-1×1×256。其中,卷积层中的a×b×c表示卷积核的尺寸。ssd_1~ssd_5对应的图像区域依次为:19×19、10×10、5×5、3×3、1×1。

ssd人脸检测器的输出为一系列固定大小的边界框(人脸检测框),以及每一个边界框中包含人脸的可能性(检测置信度),非极大值抑制层则是基于各人脸检测框的置信度对所有人脸检测框进行非极大值抑制(non-maximumsuppression)处理,从而得到最终的人脸检测框,即人脸区域。

通过对上述网络模型进行深度学习训练,满足预设的检测精度时,则可得到用于人脸检测的ssd人脸检测器。在训练时,对采用的网络模型进行第一轻量化处理(模型参数剪枝和模型参数量化)。本具体实施方式中,在fddb人脸检测数据集上对其进行训练得到。

所述步骤s2具体包括:

s201:对人脸区域内的图像进行裁剪操作,得到人脸图像;

s202:对人脸图像进行旋转校正;

s203:对人脸图像进行归一化处理,优选的尺寸为112*112像素。

步骤s3具体包括:

首选选择面部特征提取网络模型,然后对其进行训练,将训练好的面部特征提取网络模型作为面部特征提取器。

在训练的过程中需要对所选择的面部特征提取网络模型进行第二轻量化处理(模型参数量化)。

本发明中的轻量化处理中的模型参数剪枝和模型参数量化,具体方式为:

(a)模型参数剪枝。

从网络的最后一层开始,根据一定的规则对该层进行剪枝,然后重新训练网络,并循环上述过程。剪枝的实现方法,就是为权重增加一掩码参数,掩码参数中只有激活的地方才是1,其余全是0。

剪枝准则:由于全连接层几乎占据了神经网络90%的参数量,因此本发明仅对人脸特征提取网络模型的全连接层进行剪枝。假设ai是当前层的一个神经元,上一层有k个神经元,故有k个权重参数:bi1,bi2…bik。于是本发明可以根据下式计算ai与每一个bik的相关系数:

其中u和δ分别是在验证集上得到的均值和方差,下标用于区分当前层的神经元ai,以及上一层的各神经元的权重bik。

基于相关系数构建表示剪枝的掩码矩阵:

首先将所有正相关的相关系数rik降序排列,然后均分为两部分,在前一部分随机采样(λ×s×k+)个,在后面一部分一部分随机采样出((1-λ)×s×k+)个;其中λ表示预设权重,取值为0~1,本具体实施方式中设定为0.75;s表示预设的稀疏度,取值范围为0<s<1;k+表示正相关的相关系数数量;

对负相关采取同样的采样方式,得到s×k-个采样结果,其中k-表示负相关的相关系数数量;

将采样得到的s×k+个正相关系数、s×k-个负相关系数对应的权重索引的掩码参数设置为激活(掩码参数设置为1),而其他位置的掩码参数置为非激活(掩码参数设置为0),从而得到表示剪枝的掩码矩阵。

上述剪枝的方式比普通的按照参数的幅值大小剪枝的方法准确度提高不少,说明权重的幅值并不能很好的指示权重的重要性。

(b)模型参数量化:

这一部分通过对权重进行量化来进一步压缩网络(量化可以降低表示数据所用的位数)。

参见图3,本发明对权重进行量化的具体过程为:

如果输入神经元有m个,输出神经元也是n个(m和n不一定相等),本示例中假设m和n都为4,则权重为4x4,同样梯度也是。

本具体实施方式中,量化权重为4阶,图3中用4种不同灰度颜色表示。从而就只需要存储4个码字以及16个2bit的索引。

首先,对m个权重进行聚类处理,并得到各类的聚类中心,其中类别数等于输出神经元数n,如图3中的第一行所示;

然后对m个权重进行梯度量化处理,得到梯度量化之后的权重,如图3中的第二行的左图所示;再由相同类的累加值得到各类减少量。

为了便于计算各类的类减少量,本具体实施方式中,先将相同类按行排列,然后输出各类的减少量,如图3的第二行所示;

最后,分别将各类的聚类中心减去各类减少量,得到各类权重的量化值,即同一类别的权重的权重取值均为该类权重的量化值。

在未达到期望检测精度之前,基于量化后的权重继续进行训练,对量化值进行更新。

即本发明中,每个批次(batch)训练完成得到迭代更新后的权重后,通过参数剪枝和/或模型参数量化对其进行轻量化处理;再通过下一个批次继续对当前轻量化后的权重参数进行迭代更新处理,如此迭代循环,直到满足检测精度。模型参数量化中的优选阶数为3阶。

本具体实施方式中,优选的面部特征提取网络模型为:将zeilier&fergus研究中使用的神经网络zfnet中的3*3的卷积层替换为firemodule结构,以减少了参数量。其中zeilier&fergus研究中使用的神经网络zfnet具体可参考文献《visualizingandunderstandingconvolutionalnetworks》,firemodule结构如图4所示,即将图4所示的网络结构中去除输入(input)和输出层(output)去除的网络层替换神经网络zfnet中的3*3的卷积层。通过本具体实施方式中所采用的面部特征提取网络模型,可得到128维的面部特征向量。

在训练时,对当前批次的人脸图像通过所选择的深度神经卷积网络提取面部特征信息,再对其进行l2正则化处理,得到128维的面部特征表示,并所采用判断是否达到检测精度的损失函数为三连子损失函数(tripletloss)。用于将一个个体的人脸图像和其他人脸图像分开,如图5所示。本具体实施方式中,训练时采用的数据集为lfw(labeledfacesinthewild)人脸数据集。

步骤s4具体包括:

构建人脸识别数据库:

将同一人不同角度的照片进行尺度归一化处理后,再输入轻量化的面部特征提取器,得到对应的面部特征向量并存入人脸识别数据库;

将当前待识别对象的面部特征向量与人脸识别数据库中的面部特征向量进行比较,取距离最近的比较结果作为人脸识别结果。

本具体实施方式中,采用l2距离计算面部特征向量之间的特征距离,特征距离最短的人脸识别数据库中的人脸即为当前待识别对象的识别结果。

以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1