一种高精度的人脸快速检测方法与流程

文档序号:16899567发布日期:2019-02-19 17:50阅读:163来源:国知局
一种高精度的人脸快速检测方法与流程

本发明涉及人脸识别技术领域,尤其是一种高精度的人脸快速检测方法。



背景技术:

随着人脸检测领域的不断发展,现代人脸检测方法大致可分为两类:一种是基于手工检测,另一种是基于cnn(convolutionalneuralnetwork,卷积神经网络)检测。

近年来,基于cnn的人脸探测器得到快速发展:farfade在cnn功能之上使用增强功能进行人脸检测;faceness训练了一系列cnn用于面部属性识别且能在部分遮挡的情况下实现检测;cascadecnn开发了一种基于cnn的级联架构,具有强大的判别能力和高性能;unitbox引入了一种新的交叉联合损失函数;cms-rcnn在面部检测中使用fasterrcnn和上下文信息;convnet将cnn与3d人脸模型成功集成在了一个端到端的多任务学习框架中。尽管人脸检测已经取得巨大进步,但在实际工程中仍存在巨大挑战,例如在cpu上实现实时速度并且保持高性能是较为困难的。



技术实现要素:

本发明人针对上述问题及技术需求,提出了一种高精度的人脸快速检测方法,本方法不仅可以加快检测速度,还可以提高小脸部的召回率,充分满了工程的需要。

本发明的技术方案如下:

一种高精度的人脸快速检测方法,该方法包括:

获取人脸图像训练样本;

构建人脸检测网络,人脸检测网络包括卷积神经网络和分类器,卷积神经网络包括快速消化卷积层以及多尺度卷积层,快速消化卷积层包括m个网络层,快速消化卷积层中的每个网络层的步幅均大于等于2;多尺度卷积层包括n个网络层,m和n均为整数;

将人脸图像训练样本输入卷积神经网络,通过卷积神经网络提取得到人脸图像训练样本的人脸特征映射图;

将人脸特征映射图输入分类器得到人脸图像训练样本的人脸检测结果,人脸检测结果包括人脸图像训练样本中的各个人脸候选框及对应的预测概率,预测概率是人脸候选框中的图像为人脸图像的概率;

根据预测概率和动态缩放交叉熵构建损失函数,动态缩放交叉熵包括基于预测概率的调制因子;

根据人脸检测结果计算损失函数的值,并根据损失函数的值训练人脸检测网络,并利用训练得到的人脸检测网络进行人脸检测。

其进一步的技术方案为,动态缩放交叉熵的计算方式为:fl(pt)=-αt(1-pt)γlog(pt),其中,pt是预测概率,(1-pt)γ是调制因子,γ为聚焦参数,αt是权重参数。

其进一步的技术方案为,快速消化卷积层包括第一卷积层和池化层,第一卷积层和池化层的步幅均为4,第一卷积层的内核尺寸为7*7,池化层的内核尺寸为5*5。

其进一步的技术方案为,快速消化卷积层还用于对输入的特征进行取反以提取输入的正负相位信息,实现相位先验。

其进一步的技术方案为,多尺度卷积层中包括n个尺度不同的网络层,n个网络层中包括k个目标网络层,1≤k<n,k个目标网络层具有不同的分辨率,通过卷积神经网络提取得到人脸图像训练样本的人脸特征映射图,包括:

通过快速消化卷积层缩小人脸图像训练样本的图像尺寸;

通过多尺度卷积层对尺寸处理后的人脸图像训练样本进行特征提取得到n层尺度不同的特征映射图,根据k个目标网络层对应的k层特征映射图得到人脸特征映射图。

其进一步的技术方案为,多尺度卷积层中包括7个网络层,7个网络层依次为第一resnet模块、第二resnet模块、第三resnet模块、第二卷积层、第三卷积层、第四卷积层和第五卷积层,每个resnet模块包括至少两个不同内核尺寸的卷积分支;7个网络层中包括3个目标网络层,3个目标网络层分别为第三resnet模块、第三卷积层和第五卷积层为目标网络层,每个目标网络层上分别设置锚点。

其进一步的技术方案为,每个目标网络层的滤波器的中心点周围均匀平铺设置n2个锚点,锚点的尺寸越小,对应的n的值越大,n为正整数。

其进一步的技术方案为,锚点的纵横比为1:1,第三resnet模块包括三个卷积分支,设置在第三resnet模块的三个卷积分支上的锚点的尺寸分别为8、16和32像素,设置在第三卷积层上的锚点的尺寸为64像素,设置在第五卷积层上的锚点的尺寸为256像素。

本发明的有益技术效果是:

本申请公开了一种高精度的人脸快速检测方法,首先设计快速消化卷积层,通过设置大步幅缩小输入空间的大小,通过选择合适的内核尺寸并采用softmax激活函数,同时通过加入相位先验来哦移除冗余滤波器,最终在cpu上提高实时速度。然后设计了多尺度卷积层,通过设置多尺度滤波器和多种离散锚点达到对面部检测的多尺度化处理操作,并结合了新的锚点密集化策略,从而提高面部检测的召回率。最后,通过调制因子结合标准的交叉熵损失重塑得到动态缩放交叉熵,从而构建得到全新的损失函数,处理极端前景背景类别失衡的问题,在保证检测速度的同时,提高面部识别准确度。最终不仅可以实现在单个cpu上以65fps的速度运行,而且显著提高了小脸部的召回率,提高检测准确度,充分满足了工程的需要。

附图说明

图1是本申请公开的高精度的人脸快速检测方法的流程示意图。

图2是resnet模块的示意图。

图3是人脸检测网络对人脸图像训练样本进行人脸检测时的信息流向示意图。

具体实施方式

下面结合附图对本发明的具体实施方式做进一步说明。

本申请公开了一种高精度的人脸快速检测方法,该方法包括如下步骤,请参考图1示出的流程示意图:

一、获取人脸图像训练样本,人脸图像训练样本可以是afw、pascal、fddb人脸检测基准数据集中的样本,获取到的人脸图像训练样本中通常有人脸标注框。

二、构建人脸检测网络。人脸检测网络包括卷积神经网络和分类器,卷积神经网络包括快速消化卷积层以及多尺度卷积层。

其中,快速消化卷积层包括m个网络层,m为整数,快速消化卷积层中的每个网络层的步幅均大于等于2,以快速缩小图像尺寸。在本申请中,m=2,快速消化卷积层包括第一卷积层(conv1)和池化层(pool1),第一卷积层和池化层的步幅均为4,因此快速消化卷积层的总步幅为16,可使输入空间大小快速减少16倍。由于一个网络中前几层的内核尺寸较小时可以加速,内核尺寸较大时可以减轻空间大小变化带来的信息损失,因此分别为第一卷积层和池化层选择7*7和5*5的内核尺寸。快速消化卷积层中的激活函数采用softmax激活函数。同时,本申请中的快速消化卷积层还用于对输入的特征进行额外的取反以提取输入的正负相位信息,从而实现在网络中加入相位先验的目的,从而使滤波器的数量减半,减少输出通道的数量,从而提高速度。

多尺度卷积层包括n个网络层,n为整数,在本申请中,n=7,这7个网络层依次为第一resnet模块(resnet1)、第二resnet模块(resnet2)、第三resnet模块(resnet3)、第二卷积层(conv2_1)、第三卷积层(conv2_2)、第四卷积层(conv3_1)和第五卷积层(conv3_2)。本申请中的多尺度卷积层沿网络深度所在维度和网络宽度所在维度都进行了多尺度设计:

(1)、沿网络宽度所在维度的多尺度设计,为学习不同尺度的面部视觉模式,锚相关层的输出特征应该对应于各种尺寸的滤波器,这里的锚相关层是指设置锚点的目标网络层。每个resnet模块包括至少两个不同内核尺寸的卷积分支,这些分支作为沿网络宽度所在维度的多尺度设计,能够丰富滤波器,resnet模块的一种示意图请参考图2,其包括3个卷积分支,图2中的conv表示卷积层、pool表示池化层,各个卷积分支的内核尺寸不同,本申请不对图2中各个卷积分支的内核尺寸进行举例。

(2)、沿网络深度所在维度的多尺度设计,多尺度卷积层包括的n个网络层尺度不同,通常是尺度依次减小。n个网络层中包括k个设置有锚点的目标网络层,1≤k<n,在本申请中,这7个网络层中包括3个目标网络层,3个目标网络层分别为第三resnet模块(resnet3)、第三卷积层(conv2_2)和第五卷积层(conv3_2)为目标网络层,每个目标网络层上分别设置锚点,这三个目标网络层作为沿网络深度所在维度的多尺度设计,具有不同分辨率,从而可以自然地处理各种尺度的面部特征。

进一步的,本申请中的锚点为方形锚点,其纵横比为1:1,本申请中的第三resnet模块(resnet3)包括三个卷积分支,则设置在第三resnet模块(resnet3)上的锚点的尺寸分别为8、16和32像素,设置在第三卷积层上的锚点的尺寸为64像素,设置在第五卷积层上的锚点的尺寸为256像素。为了避免不同尺寸的锚点之间存在密度不平衡的问题,在每个目标网络层的滤波器的中心点周围均匀平铺设置n2个锚点,采用的锚点的尺寸越小,对应的n的值越大,n为正整数。也即对于尺寸较小的锚点,锚点密集多次,比如将32像素(也即32*32)的锚点固定4次,将64像素的锚点固定2次,这保证锚点的尺寸在不同尺度的图像上具有相同的密度,因此各种尺度的面部特征可以匹配几乎相同数量的锚点,避免面部较小时召回率较低。

本申请中的分类器基于sigmoid函数,通过sigmoid操作进行二元分类。

三、利用构建得到的人脸检测网络对人脸图像训练样本进行人脸检测,信息流向图请参考图3。在将人脸图像训练样本输入人脸检测网络后,卷积神经网络会对人脸图像训练样本进行特征提取,具体的:利用大步幅的快速消化卷积层快速缩小人脸图像训练样本的图像尺寸,尺寸处理后的人脸图像训练样本由多尺度卷积层中的n个网络层依次进行特征提取生成n层尺度不同的特征映射图,提取其中由k个目标网络层生成的k层特征映射图,对这k层特征映射图进行加权得到人脸特征映射图。将经过卷积神经网络提取到的人脸特征映射图输入分类器进行sigmoid操作,得到人脸图像训练样本的人脸检测结果,人脸检测结果包括人脸图像训练样本中的各个人脸候选框及对应的预测概率,每个人脸检测结果可以表示为(x1,y1,x2,y2,pt),其中,(x1,y1)和(x2,y2)分别为人脸候选框的对角线的坐标值,pt为该人脸候选框对应的预测概率,该预测概率pt是人脸候选框中的图像为人脸图像的概率。

四、构建损失函数。本申请首先重塑了标准的交叉熵损失,通过在标准的交叉熵损失中加入调制因子得到本申请中的动态缩放交叉熵,利用调制因子处理极端前景背景类别失衡问题,现有的二元分类的标准的交叉熵损失可以表示为:ce(pt)=-αtlog(pt),αt是权重参数,αt的取值根据实际情况决定,pt是预测概率。本申请在此基础上加入基于预测概率pt的调制因子,从而得到了本申请中的动态缩放交叉熵,表示为:fl(pt)=(1-pt)γce(pt)=-αt(1-pt)γlog(pt),其中,(1-pt)γ即为调制因子,γ为聚焦参数,其可平滑调整示例的权重,当γ=0时,fl(pt)=ce(pt),随着γ增大,调制因子的作用增加,γ的实际取值根据需要选定。在得到动态缩放交叉熵后fl(pt),根据预测概率pt和动态缩放交叉熵fl(pt)构建损失函数,比如采用将两者直接相加的方式,或者采用将两者按照各自对应权重相加的方式等等,通过将预测概率pt和动态缩放交叉熵fl(pt)相结合,可以提高检测准确度。由本申请的损失函数的表达式可知,当分类错误且预测概率pt较小时,调制因子接近1,动态缩放交叉熵和损失函数基本不受影响;当分类正确且预测概率pt接近1时,该调制因子接近0,分类正确的例子的损失被降低。

五、利用损失函数训练人脸检测网络。在上述步骤中,已经构建得到了损失函数的表达式,也得到了人脸图像训练样本的人脸检测结果,将人脸检测结果代入损失函数的表达式中就能计算得到损失函数的值。以最小化损失函数为目标对人脸检测网络进行网络训练以训练得到人脸检测网络的网络参数,从而训练得到人脸检测网络。然后可以利用训练得到的人脸检测网络进行人脸检测。

在训练期间,算法需要输出大量的框(例如用于vga分辨率的图像需要525个框)。因此,具体处理时首先通过0.05的置信度阈值过滤掉大多数框,在应用nms之前确保只保留400个框。然后执行nms,其中iou重叠为0.3的框进行保留,确保保留前200个框。与最近基于cnn的人脸检测方法相比,本算法可以在cpu上以65fps运行,且具有目前较为先进的精度。

申请人采用本申请公开的方法在afw、pascal人脸和fddb人脸检测基准数据集上进行全面评估,实验结果表明本算法的速度对面部数量是不变的,且可实现在单个cpu上以65fps运行。

以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。

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