一种人脸检测方法及存储介质与流程

文档序号:15688900发布日期:2018-10-16 21:37阅读:226来源:国知局

本发明属于图像处理与模式识别技术领域,具体涉及到一种的人脸检测方法,可以应用到安全监控,人机交互等诸多领域。



背景技术:

人脸检测是一个重要的技术,它在许多计算机视觉应用中都有需求,例如人脸跟踪,人脸对齐,人脸识别等。近年来,由于卷积神经网络的发展,人脸检测的性能得到了明显的提高。然而,现有的人脸检测模型通常计算速度比较慢,因为它们需要比较大的神经网络来保持较好的人脸检测性能。尽管也有基于一步法的检测框架被提出用于加速检测的速度(例如ssd,yolo),但它们对于实际应用场景依然不够快,尤其是在基于cpu的环境。另一方面,如果通过减少卷积网络的参数来达到速度要求,检测器的性能则会明显下降。因此,要得到一个性能良好的轻量级人脸检测器是一个极具挑战的任务。

知识蒸馏(knowledgedistillation)是一种能让小网络模仿学习大网络,从而提升小网络性能的技术。知识蒸馏的有效性已经在分类和度量学习任务上得到了验证。对于检测任务,没有办法直接使用原有的知识蒸馏(knowledgedistillation)技术,因为检测器的输出存在类别不均衡问题(背景类要远多于其他类),如果只是像分类任务那样模仿学习所有的输出,则无法得到一个好的性能。大部分轻量级的检测器是基于一步法的,而不是二步法,因为前者具有速度优势。与二步法相比,一步法缺少了用于淘汰负样本的区域提名网络,因而类别不均衡的问题更加严重。



技术实现要素:

为此,需要提供一种新型的能够适用一步法来提升轻量级检测模型性能,快速调参的神经网络算法,解决轻量化神经网络进行人脸检测的问题。在本发明中,发明人提供了一种人脸检测方法,该方法包括以下步骤:

步骤102,对轻量网络和复杂网络分别输入一批同样的训练图像;

步骤104,针对轻量网络和复杂网络的分类图的输出结果,采用难样本挖掘法进行过滤;

步骤106,构造综合损失函数,所述综合损失函数包括知识蒸馏损失函数或基于标签的人脸检测损失函数,所述知识蒸馏损失函数根据轻量网络和复杂网络的分类图的输出结果获得;

步骤108,基于损失函数,更新轻量网络的参数,不更新复杂网络的参数;

步骤110,重复上述步骤,直至轻量网络训练至收敛。

优选地,所述难样本挖掘法进行过滤具体为:

设定一个阈值t,用于判断分类图中的某个概率是否具有足够的置信度;t是一个超参数,取值范围是0到1,遍历分类图中的每一个索引,当该索引在轻量网络中的概率大于t而在复杂网络的概率小于t时,将该索引加入集合sm;或者,当该索引在轻量网络中的概率小于t而在复杂网络的概率大于t时,也将该索引加入sm。

可选地,所述知识蒸馏损失函数为:

其中,p(i)为复杂网络的分类图中的第i个概率分数,q(i)则是轻量网络分类图的第i个概率分数。

进一步地,

所述基于标签的人脸检测损失函数,为:

lg=lcls+lreg

其中,lcls是用于分类的二类softmax损失函数,lreg是用于回归的鲁棒回归损失函数;

所述综合损失函数为知识蒸馏损失函数与基于标签的人脸检测损失函数加权:

l=lg+clkd

c是平衡系数。

具体地,还包括步骤,构建轻量网络、复杂网络;

构建基于卷积神经网络的人脸检测模型,作为复杂网络,训练其至收敛;

构建与复杂网络同框架的卷积神经网络的人脸检测模型,作为轻量网络,所述轻量网络的框架中每层滤波器的数量均小于复杂网络。

一种基于知识蒸馏的人脸检测存储介质,存储有计算机程序,所述计算机程序在被运行时执行以下步骤:

步骤102,对轻量网络和复杂网络分别输入一批同样的训练图像;

步骤104,针对轻量网络和复杂网络的分类图的输出结果,采用难样本挖掘法进行过滤;

步骤106,构造综合损失函数,所述综合损失函数包括知识蒸馏损失函数或基于标签的人脸检测损失函数,所述知识蒸馏损失函数根据轻量网络和复杂网络的分类图的输出结果获得;

步骤108,基于损失函数,更新轻量网络的参数,不更新复杂网络的参数;

步骤110,重复上述步骤,直至轻量网络训练至收敛。

具体地,所述难样本挖掘法进行过滤具体为:

设定一个阈值t,用于判断分类图中的某个概率是否具有足够的置信度;t是一个超参数,取值范围是0到1,遍历分类图中的每一个索引,当该索引在轻量网络中的概率大于t而在复杂网络的概率小于t时,将该索引加入集合sm;或者,当该索引在轻量网络中的概率小于t而在复杂网络的概率大于t时,也将该索引加入sm。

可选地,所述知识蒸馏损失函数为:

其中,p(i)为复杂网络的分类图中的第i个概率分数,q(i)则是轻量网络分类图的第i个概率分数。

进一步地,

所述基于标签的人脸检测损失函数,为:

lg=lcls+lreg

其中,lcls是用于分类的二类softmax损失函数,lreg是用于回归的鲁棒回归损失函数;

所述综合损失函数为知识蒸馏损失函数与基于标签的人脸检测损失函数加权:

l=lg+clkd

c是平衡系数。

具体地,计算机程序在被运行时还进行步骤,构建轻量网络、复杂网络;

构建基于卷积神经网络的人脸检测模型,作为复杂网络,训练其至收敛;

构建与复杂网络同框架的卷积神经网络的人脸检测模型,作为轻量网络,所述轻量网络的框架中每层滤波器的数量均小于复杂网络。

区别于现有技术,上述技术采用了标准化计算手段,在整个评价过程中,引入原先评价系统中没有的指标,并统一参数,使得量化标准相对统一,因此,本发明解决了网络舆情动态的实时分析问题。

附图说明

图1为具体实施方式所述的人脸检测方法流程图。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

在图1所示的实施例中,我们可以看到一种人脸检测方法,该方法包括以下步骤:

步骤100,构建基于卷积神经网络的人脸检测模型作为老师网络,训练该模型直至收敛。

老师网络的框架通常和学生网络一样,但是每层的滤波器的数量是学生网络的若干倍,因此性能会更好。我们为的是让常规的卷积神经网络的复杂度进行精简,因此在本文的内容中,老师网络可以与复杂网络相互替换,学生网络同样也能够与轻量网络替换,轻量网络的特点在于其是与复杂网络同框架的卷积神经网络的人脸检测模型,所述轻量网络的框架中每层滤波器的数量均小于复杂网络。老师网络的训练方法和常规的检测模型完全一样,以本发明为例,老师网络的损失函数为:lg=lcls+lreg。其中,lcls是用于分类的二类softmax损失函数,lreg是用于回归的鲁棒回归损失函数(smoothl1)。构建轻量网络、复杂网络;

学生网络就是最后要得到的检测模型,现在用xavier方法对学生网络的参数进行随机初始化。

而在其他一些具体的实施例中,本发明可以预先进行上述的准备步骤而直接开始于步骤102,对轻量网络和复杂网络分别输入一批同样的训练图像;

训练图像可以不做处理,也可以在这里进行数据增广技术,具体如下:

对于输入的每张训练图像,使用数据増广技术,从而增加模型的泛化性能。以本发明为例,数据增广包括以下步骤:

(1)颜色抖动操作:分别以0.5的概率,随机地调整训练图像的亮度、对比度、饱和度等参数。

(2)随机裁剪操作:在这张训练图像上,随机地裁剪出5张正方形子图像。其中1个是其最大的正方形子图像,另外4张正方形子图像的边长是训练图像短边的0.3~1.0倍。在这5张正方形子图像中,随机地选取1张作为最终的训练样本。

(3)水平翻转操作:对于这张选中的训练样本,以0.5的概率随机地进行水平翻转操作。

(4)尺度变换操作:把经过上述操作得到的训练样本,缩放到1024×1024大小,送入网络用于训练。

步骤104,针对轻量网络和复杂网络的分类图(classificationmap)的输出结果,采用难样本挖掘法进行过滤;从而解决类别不均衡问题和拟合效率低的问题。

知识蒸馏(knowledgedistillation)方法是希望学生网络通过模仿老师网络,从而尽可能地输出和老师网络一样的结果。神经网络中,越靠后的层的信息和最终的预测结果关联越紧密,能提供更好的监督信息用于模仿学习。因此,最后一层比较适合用来让学生网络学习模仿。在基于单步法的人脸检测框架中,最后一层有两个模块,分别是分类图(classificationmap)和回归图(regressionmap)。知识蒸馏之所以有效,是它提供了老师网络学习到的软标签信息给学生网络,这些软标签与原有的标注标签相比,信息更加准确和平滑,因而更利于网络学习。在人脸检测中,回归框的标注标签原本就是实数,已经比较准确了;而分类任务的标注标签只有0和1,并不是很准确。因此,分类图更适合用于知识蒸馏(knowledgedistillation)学习。

一个典型的基于单步法的分类图(classificationmap)的输出大小为2n×h×w,其中n为锚点框的个数,2表示每个锚点框都需要预测正类和负类的概率,h为分类图的高,w为它的宽。因为正类和负类的概率经过标准化,相加始终为1,在进行知识蒸馏时可以只关注正类的概率,因此分类图的输出可以被简化为n×h×w。在训练过程中,老师网络和学生网络分别会输出一个分类图的结果,针对这两个结果,需要决定分类图(classificationmap)的哪些索引是应该被过滤的,哪些是可以用于知识蒸馏(knowledgedistillation)的。

随后还进行步骤106,构造综合损失函数,所述综合损失函数包括知识蒸馏损失函数或基于标签的人脸检测损失函数,所述知识蒸馏损失函数根据轻量网络和复杂网络的分类图的输出结果获得。可选的一些实施例中,通过构造知识蒸馏(knowledgedistillation)损失函数,使得当前的学生网络的分类图(classificationmap)结果尽量向老师网络的分类图靠拢,作为一个具体的实施例,所述知识蒸馏损失函数为:

其中,p(i)为复杂网络的分类图中的第i个概率分数,q(i)则是轻量网络分类图的第i个概率分数。

进一步地,在训练过程中,除了知识蒸馏(knowledgedistillation)损失函数,还有常规的基于标签的人脸检测损失函数,该损失函数和经典检测框架fasterrcnn中的区域提名网络一致:

所述基于标签的人脸检测损失函数,为:

lg=lcls+lreg

其中,lcls是用于分类的二类softmax损失函数,lreg是用于回归的鲁棒回归损失函数;训练时,基于知识蒸馏(knowledgedistillation)的损失函数和基于标签的损失函数相加,形成最终的综合损失函数。

所述综合损失函数为知识蒸馏损失函数与:

l=lg+clkd

c是用来平衡两个损失函数的系数,在本发明中固定为50,其最优值应由具体场景决定。

如图1所示,随后还进行步骤108,基于损失函数,更新轻量网络的参数,不更新老师网络的参数。在这一步骤中,根据已经得到的综合损失函数,使用反向传播算法,对学生网络的参数进行更新,从而完成一次训练。老师网络的参数不需要更新,因此在训练时需要将其冻结。

步骤110,重复上述步骤102-108,直至轻量网络训练至收敛。

本发明通过应用上述步骤的设计,能够有效提升轻量级人脸检测器的精度,使得人脸检测在计算资源受限的设备上也能取得令人满意的检测效果。由于检测模型和分类以及度量学习模型存在网络结构上的不同,所以无法直接将知识蒸馏(knowledgedistillation)方法直接用于检测任务。本发明的发明人发现基于单步法的人脸检测模型中的回归图并不具有足够的有效信息用于学习,而分类图(classificationmap)则能够提供有效的软标签信息,因此将分类图(classificationmap)作为学生网络和老师网络迁移知识的媒介。此外,分类图(classificationmap)的输出结果存在大量的负类样本,导致类别不均衡问题。本发明提出一种难样本挖掘方法用于过滤简单的负样本,使得类别达到均衡,同时也过滤了简单的正样本,使得知识蒸馏(knowledgedistillation)的效率更高。训练时,基于知识蒸馏(knowledgedistillation)的损失函数和基于标签的损失函数以适当的比例相加,构成完整的损失函数。在具体的实施中,本发明方法还进行如下步骤,把测试图像输入训练好的学生网络模型,输出检测结果框。由于输出的检测框的数量非常多,需要对它们进行筛选跟合并。在本实施例中,首先通过置信度阈值t=0.05,筛掉大部分的检测框,接着根据置信度选出前na=400个检测框。然后使用非极大值抑制去除重复的检测框,并根据置信度选出前nb=200个检测框,即得到最终的检测结果。

最终,本发明提出的基于知识蒸馏(knowledgedistillation)的训练方法能有效地提高轻量级人脸检测模型的检测能力。

一种基于知识蒸馏的人脸检测存储介质,存储有计算机程序,所述计算机程序在被运行时执行以下步骤:

步骤102,对轻量网络和复杂网络分别输入一批同样的训练图像;

步骤104,针对轻量网络和复杂网络的分类图的输出结果,采用难样本挖掘法进行过滤;

步骤106,构造综合损失函数,所述综合损失函数包括知识蒸馏损失函数或基于标签的人脸检测损失函数,所述知识蒸馏损失函数根据轻量网络和复杂网络的分类图的输出结果获得;

步骤108,基于损失函数,更新轻量网络的参数,不更新复杂网络的参数;

步骤110,重复上述步骤,直至轻量网络训练至收敛。

具体地,所述难样本挖掘法进行过滤具体为:

设定一个阈值t,用于判断分类图中的某个概率是否具有足够的置信度;t是一个超参数,取值范围是0到1,遍历分类图中的每一个索引,当该索引在轻量网络中的概率大于t而在复杂网络的概率小于t时,将该索引加入集合sm;或者,当该索引在轻量网络中的概率小于t而在复杂网络的概率大于t时,也将该索引加入sm。

可选地,所述知识蒸馏损失函数为:

其中,p(i)为复杂网络的分类图中的第i个概率分数,q(i)则是轻量网络分类图的第i个概率分数。

进一步地,

所述基于标签的人脸检测损失函数,为:

lg=lcls+lreg

其中,lcls是用于分类的二类softmax损失函数,lreg是用于回归的鲁棒回归损失函数;

所述综合损失函数为知识蒸馏损失函数与:

l=lg+clkd

c是平衡系数。

具体地,计算机程序在被运行时还进行步骤,构建轻量网络、复杂网络;

构建基于卷积神经网络的人脸检测模型,作为复杂网络,训练其至收敛;

构建与复杂神经网络同框架的卷积神经网络的人脸检测模型,作为轻量网络,所述轻量网络的框架中每层滤波器的数量均小于复杂网络。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。

本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:ram、rom、磁碟、磁带、光盘、闪存、u盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

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