人脸图像检测算法研究与实现结题报告Word格式文档下载.docx
《人脸图像检测算法研究与实现结题报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《人脸图像检测算法研究与实现结题报告Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
Wecombinetheskincolorsegmentationandwindowscantogether.WeexperimentontheCaltechpicturedatabaseandsomeotherpictures.Wefindsomeproblemsanddiscussprobableimprovement.
Keywords:
facedetection,skincolorsegmentation,convolutionalneuralnetwork
1.人脸检测概述
1.1人脸检测简介
人脸检测是指在被检测的图像中确定所有人脸的位置、大小的过程[1]。
人脸检测的研究起源于对人脸识别的研究。
人脸识别通过人眼睛,鼻子,嘴巴等特征识别不同的人。
而人脸检测便是人脸识别的第一步。
之后,人脸检测逐渐演变成一个独立的研究方向。
目前,人脸检测在视觉监控、身份认证等方面有着广泛的应用。
1.2常用人脸检测方法
1.2.1基于人脸模式特征提取的方法
人脸图像包含众多特征,其中最常见的有肤色特征,轮廓特征,五官特征等等。
基于特征提取的方法试图提取某种或多种特征以进行人脸检测。
我们之后将提到的基于YCrCb颜色空间的方法[2]就是利用了肤色特征。
1.2.2基于统计模型的方法
这种方法将检测人脸问题转化为检测人脸或非人脸的分类问题。
然后通过大量带标签的人脸与非人脸样本进行有监督学习,以构造分类器。
这种方法将问题简化为一个二分类问题,并利用模板特征进行分类。
在实际应用中,这种方法被广泛地应用。
常见的特征模板有Haar-like特征[3],LBP特征[4]等。
1.2.3基于人工神经网络的方法
人工神经网络将模式的统计特性隐含在网络的结构和参数中。
近年来,随着深度学习成为一个热门研究方向,基于人工神经网络的方法也被更多地研究和应用。
本文中,我们也将详细研究一种基于卷积神经网络的人脸检测算法。
1.3本文的研究概述
在本文中,我们主要研究并实现了两种算法。
其中基于YCrCb颜色空间的肤色分割用于预处理,基于卷积神经网络的算法则用于窗口检测。
我们将两种方法结合起来成为了一套人脸检测算法,如图所示。
图1
我们使用Matlab实现了算法并在人脸数据库和实际图像中进行了实验。
我们将检测结果与另一种方法(基于Adaboost算法的人脸检测算法)进行了比较和分析,提出了一些问题和改进的方法。
2.基于YCrCb颜色空间的肤色区域分割
肤色是人脸的一个明显特征,在人脸检测算法中,我们也可以利用肤色进行检测。
然而,由于环境复杂,照片质量层次不齐,光照情况不确定等因素影响,要准确地使用肤色来完成人脸检测相当困难。
因此,在我们的实践中,利用肤色完成一个肤色区域的选择和分割,为之后使用其他算法检测做预处理。
2.1YCrCb颜色空间
在肤色检测中,传统的RGB颜色空间由于上文中提到的种种原因,很难准确地将肤色区域与其他区域分割。
而YCrCb颜色空间在肤色分割上则有不错的效果。
YCrCb颜色空间中,Y表示亮度,Cr表示红色信号与信号亮度值的差异,Cb表示蓝色信号与信号亮度值的差异。
在这里,我们主要使用Cr和Cb作为区别肤色区域与其他颜色区域的工具。
2.2确定阈值
我们使用了50张各种肤色,亮度,质量的人脸肤色区域作为训练样本。
对所有样本区域计算平均值,得到了最终阈值:
2.3肤色区域分割
利用训练得到的阈值,我们可以对一张图片进行肤色区域分割。
以下图为例
图2原始图像
●将输入图片由RGB模式转化为YCrCb模式
●遍历整张图片,将在阈值范围内的点标记为白色,反之标记为黑色。
图3肤色分割后二值化图像
●框出白色区域,并记录这些区域作为之后检测的待检测区域。
图4肤色区域
3.基于卷积神经网络的人脸检测算法
在这一张章中,我们将介绍一种使用卷积神经网络的人脸检测算法。
在这种算法中,我们使用卷积神经网络提取人脸特征,利用BP算法进行训练,我们可以不断调整网络权重,优化训练结果。
3.1神经网络
3.1.1人工神经网络
人工神经网络[5](ArtificialNeuralNetwork,ANN)试图模拟人脑的神经网络结构。
简单来说,它是由神经元和神经元之间的连接构成的网络。
如图,是一个最简单的神经网络。
图5神经元
它包含3个输入x=(x1,x2,x3),一个神经元,一个输出hw,b(x)。
我们可以通过调整连接的权重w=(w1,w2,w3)和神经元的偏置b来获得我们希望得到的输出。
该神经网络的输出为
其中f(z)为激励函数。
在神经网络中,我们往往在神经元的输出加入激励函数以使输出改变线性的特性。
我们选用的是常用的激励函数Sigmoid函数,其表达式为
神经网络可能由多层,大量神经元复杂连接构成。
如图为一个三层神经网络,它由输入层,中间层和输出层构成。
我们可以对网络中的每一个连接训练权重,对每一个神经元训练偏置量以使网络满足我们的要求。
图6多层神经网络
3.1.2卷积神经网络
卷积神经网络(ConvolutionalNeuralNetwork,CNN)是多层神经网络的一种。
它利用卷积运算的卷积核作为神经网络的权重。
卷积神经网络的一个特点是它是局部连接的,也就是说每个神经元只和上一层的部分神经元连接。
卷积网络的另一个特点是权值共享,也就是说每个神经元与上一层的连接的权重是相同的。
这两个特点极大降低了连接的维度,同时确保了位置不变性。
为了提取更多特征,我们可以在每一层使用多个卷积核进行特征提取。
每一个卷积核对输入图像卷积可以得到一个特征图。
在卷积神经网络中,有两种层:
卷积层和下采样层。
它们分别起到特征提取和特征集合的作用。
在卷积层中,我们利用卷积运算提取特征。
卷积核便是我们要训练的权重,我们将卷积核放置于不同位置,便能得到不同的连接。
如图所示为一个简单的卷积层。
我们的卷积核为3*3,输入为5*5,输出为3*3。
图7卷积核与卷积
下采样层通过在特征图中采样达到集合特征的目的。
它的基本思想是整合多个输入节点得到一个输出。
常用的采样方法有最大采样(max-pooling)和平均采样(average-pooling)。
分别使用提取范围内最大值和计算范围平均值的方法进行采样。
在我们的实现中使用了平均采样。
3.2卷积神经网络结构
在这一节中,我们将介绍我们所使用的卷积神经网络的整体结构。
整个网络输入24*24大小的灰度图,输出为2*1的向量,当判断为人脸时输出(1,0),非人脸时输出(0,1)。
参考LeNet-5网络[6],我们的整个网络的结构如下图。
图8卷积神经网络结构
卷积层接下采样层接卷积层接下采样层接卷积层接全连接输出。
全连接层中将32个节点与输出层的2个节点全连接得到输出。
3.3训练卷积神经网络
卷积神经网络的训练即确定卷积核以及神经元偏置的过程。
我们使用反向传播(BP)算法进行训练。
3.3.1BP算法
BP算法是训练神经网络的一种常用算法。
其基本思想为误差的反向传播。
输入信号正向传播达到输出层。
从输出层计算出误差后,误差从输出层反向传播,每一层根据误差调节权重。
调节权重采用的是梯度降低方法。
下面我们依据[7],推导出调节权重的公式。
我们首先定义几个值。
第l层的输入,也就是第l-1层的输出为
其中f(z)为激励函数,w为权重,b为偏置。
对于第n个样本,输出层误差为
其中c为输出层节点个数,对于我们的人脸检测问题,c=2。
t表示目标值,y表示输出值。
我们定义反向传播的误差δ为
输出层的误差为
其他层的误差递推式为
这里的·
运算符为元素分别相乘运算符。
我们要使用误差δ求出每一次迭代中E对w与b的偏导然后乘上学习率α就能得到e与b的改变量,即
●卷积层
误差为
其中l为层数,j表示第j个特征图。
up(x)为上采样,它将x复制到对应的下采样区域内。
偏置的偏导为
卷积核的偏导为
其中表示在第l-1层中被卷积的元素。
●下采样层
系数的偏导为
其中,为下采样的值。
以上为通过BP算法调整权重的方法。
4.3.2训练步骤
我们选择了8500个人脸样本以及大量非人脸样本。
部分人脸样本如图。
图9部分人脸训练样本
训练分成6轮,每一轮使用8500个人脸样本。
非人脸样本则由两部分组成:
一半由上一轮的非人脸样本中随机选择;
另一半则是新加入的上一轮会误检的非人脸样本。
对于每一轮的训练,会将样本随机分成50个一组。
每次将一组放入网络正向计算输出,然后反向传播修正权重。
所有样本全部用完后,再次将样本分组反复进行训练。
共迭代50次。
第一轮训练前,所有权重被初始化为略大于0的随机数。
每一轮训练会在上一轮训练的网络权重基础上继续训练。
另外,我们采用的学习率α=1。
3.4检测人脸
有了以上算法作为模块,我们可以拼接出一个完整的人脸检测算法了。
算法的输入是一张任意大小包含任意人脸数量的彩色图片,输出是框出的人脸区域。
3.4.1图像预处理
读取图片后,我们首先对过大的图片缩小一定比例。
根据观察分析,人脸区域在图片中所占区域不会过小(最小约为30*30)。
同时,缩小图片对检测速度有很大的提升。
我们将得到的彩色图片输入到肤色分割以获得待检区域。
同时对图像进行灰度化,为之后的检测做准备。
3.4.2肤色分割
我们利用前面章节中提到的YCrCb颜色空间将肤色区域分割出来。
此