本发明涉及计算机视觉技术、机器学习与模式识别技术、深度学习、人工神经网络,具体地说,涉及一种基于卷积神经网络的人脸检测方法及系统。
背景技术:
人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来。
目前的人脸检测方法普遍基于知识和基于统计。基于知识的方法主要利用先验知识将人脸看作器官特征的组合,根据眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之间的几何位置关系来检测人脸。基于统计的方法则将人脸看作一个整体的模式——二维像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。随着深度学的兴起,人脸检测领域也开始采用卷积神经网络。
现存方法的人脸检测算法大都存在以下问题:
(1)采用滑窗的思路,对每个窗口进行分类,计算量大;
(2)每个步骤相对独立,使用起来步骤繁琐。
技术实现要素:
针对现有技术中上述的不足,发明提供一种基于卷积神经网络的人脸检测方法及系统,采用全卷积网络实现端到端的训练和检测。
为了达到上述目的,发明采用的解决方案是:一种基于卷积神经网络的人脸检测方法及系统,包括以下模块:
数据预处理模块,用于处理训练数据;
人脸检测模型设计模块,用于设计人脸检测的模型结构;
人脸检测模型训练模块,用于训练人脸检测的离线模型;
人脸实时检测模块,用于输出人脸的位置。
进一步地,数据预处理模块包括以下步骤,
s1:输入待检测图像,将待检测图像划分为s*s的子区域;
s2:根据真实人脸的位置信息,计算真实人脸框的中心位置a(x,y);
s3;根据真实人脸框的中心位置a,求出中心位置所在的子区域的位置;
s4:将真实人脸框的中心位置a(x,y)分别除以待检测图像的宽和高;
s5:将真实人脸框的宽和高(w,h)分别除以待检测图像的宽和高;
s6:对所有待检测图像做镜像,采用s1-s5的步骤处理镜像后的样本。
进一步地,人脸检测模型训练模块中,使用dropout技术。
进一步地,人脸检测模型训练模块中,在第一层全连接层后增加dropoutlayer,并指定随机置零的概率为0.5。
进一步地,人脸检测模型训练模块中,采用如下目标函数进行优化,
其中,α为常数,是位置预测的惩罚因子;b表示每个子区域预测的人脸框的个数;s表示划分子区域的横向和纵向的个数;
进一步地,人脸检测模型训练模块中,用一个人脸框预测器来负责预测人脸位置;预测器预测的人脸位置与真实iou最大,即该预测器负责预测该人脸。
进一步地,人脸检测模型中,最后一层使用线性激活函数,其余层采用非线性函数leaky-relu。
进一步地,人脸实时检测模块中,每张图像回输出s2个框以及每个框对应的人脸置信度,去掉一部分置信度低的人脸框,再采用非极大抑制算法去除一些重复预测的人脸框,得到最终的人脸框位置信息。
发明的有益效果是,
1、不包含物体的子区域的梯度更新,将会以压倒性的优势,覆盖掉包含物体的子区域进行的梯度更新;此问题会使得模型不稳定,甚至造成网络的发散;因此在目标函数中对人脸定位误差和人脸确认误差不同的惩罚因子,从而解决了这问题;
2、本人脸检测方法得到最终的人脸框位置信息为人脸框的宽和高的平方根,而并非直接输出人脸框的宽和高,从而解决了以下问题:相比较于大的人脸框与真实位置的偏离,小的人脸框的偏离一点,结果差别就很大,而大的人脸框偏离大一点,对结果的影响较小;
3、一个人脸框预测器来负责预测人脸位置,从而使得每个预测器有专门负责的人脸位置;随着人脸检测模型训练的进行,每一个预测器对特定的人脸尺寸的人脸预测的结果会越来越好。
附图说明
图1是本发明的人脸检测模型结构图。
图2是本发明的人脸检测模型训练流程图。
图3是本发明的人脸实时检测流程图。
具体实施方式
为使发明的目的、技术方案和优点更加清楚,下面对发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是发明一部分实施例,而不是全部的实施例。基于发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于发明保护的范围。
以下结合附图对发明作进一步描述:
如附图1-附图3所示,本发明提供一种基于卷积神经网络的人脸检测方法及系统,包括以下模块:
数据预处理模块,用于处理训练数据;
人脸检测模型设计模块,用于设计人脸检测的模型结构;
人脸检测模型训练模块,用于训练人脸检测的离线模型;
人脸实时检测模块,用于输出人脸的位置。
本实施例中,数据预处理模块包括以下步骤,
s1:输入待检测图像,将待检测图像划分为s*s的子区域;
s2:根据真实人脸的位置信息,计算真实人脸框的中心位置a(x,y);
s3;根据真实人脸框的中心位置a,求出中心位置所在的子区域的位置;
s4:将真实人脸框的中心位置a(x,y)分别除以待检测图像的宽和高;
s5:将真实人脸框的宽和高(w,h)分别除以待检测图像的宽和高;
s6:对所有待检测图像做镜像,采用s1-s5的步骤处理镜像后的样本。
本实施例中,人脸检测模型训练模块中,使用dropout技术。
本实施例中,人脸检测模型训练模块中,在第一层全连接层后增加dropoutlayer,并指定随机置零的概率为0.5。
本实施例中,人脸检测模型训练模块中,采用如下目标函数进行优化,
其中,α为常数,是位置预测的惩罚因子;b表示每个子区域预测的人脸框的个数;s表示划分子区域的横向和纵向的个数;
本实施例中,人脸检测模型训练模块中,用一个人脸框预测器来负责预测人脸位置;预测器预测的人脸位置与真实iou最大,即该预测器负责预测该人脸。
本实施例中,人脸检测模型中,最后一层使用线性激活函数,其余层采用非线性函数leaky-relu。
本实施例中,人脸实时检测模块中,每张图像回输出s2个框以及每个框对应的人脸置信度,去掉一部分置信度低的人脸框,再采用非极大抑制算法去除一些重复预测的人脸框,得到最终的人脸框位置信息。
根据系统的需要建立人脸检测方法及系统的所有模块,下面根据系统的工作模式来阐述此系统的工作流程。
一、训练模式
训练模式流程如图2所示。
(1)人脸数据采集
收集人脸数据,并标定人脸的位置信息。
(2)图像预处理
s1:输入待检测图像,将待检测图像划分为s*s的子区域;
s2:根据真实人脸的位置信息,计算真实人脸框的中心位置a(x,y);
s3;根据真实人脸框的中心位置a,求出中心位置所在的子区域的位置;
s4:将真实人脸框的中心位置a(x,y)分别除以待检测图像的宽和高;
s5:将真实人脸框的宽和高(w,h)分别除以待检测图像的宽和高;
s6:对所有待检测图像做镜像,采用s1-s5的步骤处理镜像后的样本。
(3)模型训练
采用附图1的网络结构并按照附图2的流程训练人脸检测模型。
人脸检测模型的训练过程:
(1)收集人脸图像并标定人脸位置;
(2)采用图像预处理步骤处理图像,其中原始图像划分为9x9的子区域;
(3)设定每个子区域预测2个人脸框;
(4)将所有训练数据,并将所有的样本随机分为4:1,分别作为训练集和验证集;
(5)学习率的设置;
(51)在第1轮训练中,学习率逐渐从0.001增加到0.01。如果训练时从一个较大的学习率开始,通常因为不稳定的梯度,而使得模型发散;
(52)保持学习率为0.001直到完成50轮训练;
(53)再接下的50轮训练中,学习率为0.001;
(54)最后50轮训练,学习率为0.0001;
(6)设定目标函数的常数α=5.5,β=0.5;
(7)训练网络,得到离线模型。
二、识别模式
(1)输入图像
(2)提取特征
采用训练得到的离线模型提取特征。
(3)去除置信度低的人脸
设定阈值a,去除小于a的人脸框。
(4)采用非极大抑制去除重复预测的人脸
设定一个阈值b,采用非极大抑制的算法去除重复预测的人脸。
三、人脸实时检测
(1)摄像头采集人脸图像;
(2)采用离线模型提取特征;
(3)设置阈值a=0.5,去除置信度小于0.5的人脸框;
(4)设定阈值=0.3,采用非极大抑制算法去除重复预测的人脸。
综上所述,本发明通过数据预处理模块、人脸检测模型设计模块、人脸检测模型训练模块、和人脸实时检测模块实现了一种基于卷积神经网络的人脸检测方法及系统。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程是可以通各种算法程序实现的,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,可包括如上各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
最后应说明的是:以上实施例仅用以说明发明的技术方案,而非对其限制;尽管参照前述实施例对发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离发明各实施例技术方案的精神和范围。