基于神经网络的人脸检测方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于神经网络的人脸检测方法

摘要:自动人脸检测应用十分广泛,如安全访问控制,基于模型的视频编码或基于内容的视频索引,所以它正在成为一个非常重要的研究课题。在本文中,我们在假设不考虑内容,场景的照明条件,大小,方向和外观的前提下,提出了一种检测复杂图像和精确本地半正面人脸的方法。这就是卷积神经网络结构,这种方法不像其他系统,其他系统需要一个手工检测的阶段或特征分类阶段。卷积神经网络结构是从一个大的训练集中自动合成自己的一套特征提取方法,所以它可以直接从未预处理的照片中提取变化的人脸模型,而且可以在神经元模型中利用感受区域,共享权数和空间采样对人脸进行一定程度的旋转,缩放和变形。我们将会对我们的结构,研究策略和检测过程进行详细的描述。最后我们将证明在环境和人脸变化的情况下这种方法相当稳健,具有精确检测的能力。

1简介

因为其广泛的应用范围,人脸检测正在成为一个非常重要的的研究课题。比如在安全访问控制,基于模型的视频编码,基于内容的视频索引等方面。相对于人脸检测,脸部识别和表情分析算法已经得到学术方面的足够关注。近年来,在光线,面部表情和姿势微小变化的情况下,对人脸的识别已经取得相当大的进展。在[1]中你会发现一个现象。就是大多数的人脸识别和表情分析算法是在特定条件下得到的,要么是在同一背景下要么是出现过的图像要么直接是“人脸照片”,在这种情况下,人脸识别相对比较容易。然而,多数情况人脸检测是在复杂的场景下,这并不简单。由于面部表情,表现力和方位的改变面部模型也会呈现巨大的变化。

最近一些检测非人脸照片的技术已经得到了提高。这些方法可大致分为三大类:本地的面部特征检测,模板匹配和图像不变性。第一种方法,低层次的计算机视觉算法[3,7,13]用于检测的面部特征,如眼睛,嘴巴,鼻子,下巴和其他特征部位。第二种方法,几个相关模板用来进一步检测本地特征。这些人脸特征将被作为硬性模板(基于eigenspaces [8])或(模板 [12, 5])。这些方法有很大的缺点,就是即使是很小的约束全局条件被改变也会对人脸模型和提取特征造成强烈的影响,比如噪声,表情的变化和焦点的改变等。最后一种方法,即使在不同的成像条件下图像不变方案也假定图像存在一定空间关系,比如亮度分布,相似点,人脸模型[10]的唯一性。在场景不受限制的情况下,这些算法都不是很健壮。

肤色信息的使用是制约搜索空间的一个重要线索。在[4]中,Garcia and Tziritas提出一个快速检测到人脸的方法,即皮肤颜色过滤和概率分布方法,而所用到的统计数据是从小波包中分解提取得到的。在[5]中,Garcia 将可变的脸部模板进行扩展,从而使这种方法可以精确的定位面部特征。

对于一般灰度图像,不需要遵守人为设定的规则,事实证明,类似于[11,9]中提到的基于神经网络的方法,效果最好。在本文中,我们提出一种新的检测方法,这种方法是基于神经网络的检测方法,这种方法可以对复杂的照片即使是半正面的人脸进行准确的检测。不需要考虑场景的照明条件,人脸大小,方向和人的外貌特征等因素。

这种方法和其他系统不一样,其他系统需要一个人工检测处理特征的阶段,然后是特征分类阶段。我们提出了一个卷积神经网络架构,这种方法不需要预处理就可以直接对可变的人脸进行检测,他可以从大量的训练集中自动合成一套对人脸特征进行萃取的方案。通过对一个神经元模型的底色接收,加权和空间采样,即使人脸进行了旋转,缩放和变形,也不会影响该方法对人脸的检测。

首先介绍一下优化设计的架构和我们的研究策略。然后,我们描述一下目前使用这种架构的检测过程。最后我们提供一些实验结果跟在[5]中提到的方法进行比较,我们将证明在环境不受控制和人脸变化的情况下该算法的精确性。

2所提出的方法

2.1神经网络结构

因为人脸会进行不同程度的扭曲,所以要找到人脸模型是非常困难的,我们必须要把这纳入我们的考虑范围之内。这些困难包括不同表情,环境条件和视觉角度等。我们对所有可能的情况进行了列举,得出这种情况是无尽的。所以我们需要研究一个机器算法,比如基于神经网络系统的方法。这个标准的,非结构化的,完全连接的拓扑结构的缺点是需要大量的训练数据,因为它不能对所有变化的模型进行编码。不过,网络结构可以对已经获得的模型进行直接编码。在旋转不变性,方向,扭曲等方面,这种编码技术与本地图像有关的。卷积神经网络[6]是神经网络其中的一种,它能对这些图像进行编码。

我们使用的卷积神经网络如图1所示。该网络有6层,其中前四个充当所谓的特征映射[6]。层C1对输入的图像执行一个相匹配的卷积加权,再添加一些偏差情况。记录那些有重叠色彩区域的神经元作为一个纯粹的的卷积过程。相同特征图共享这些加权,所以实际上只有4个神经元在这一层。这些神经元提取相同的特征,把它们的确切位置进行独立记录。我们使用的是5*5的面具,所以在第一层一共有104个加权。假设输入维度是32x36,这一层的特征图的大小是28列× 32行。

层s2是对上一层未采样的图片进行执行并输出。更确切地说,每一个样本的输出是通过综合计算得到的。用这种方法,我们减少了特征图的维数。最后,线性输出的过程是通过一个sigmoid函数(在我们的例子中,是双曲正切函数)。经过二次取样,记得到了每个特征确切的位置和具体情况,这证明了我们算法的健壮性。这些特征图的大小是14x16,而这一层的权重为8。

层S1和C2部分连接,如表1所示。通过这种方法,结合不同种类的特征,相当于把新组成的一个样本集添加到网络中。层C2和S2的过程与层C1和S1相同,不同的是在c2层用的是3x3的面具。在S2层中有14个特征图168个加权,每个图的维是6X7。

表1。C2层中每一列和每一行对应映射到一个S1层的特征图。连接都标有一个X。

在N1和N2层,实际的分类执行是在提取和降维完成之后。N1层中,我们有14个神经

元,每个相应连接到S2层中的特征图。输出层N2中的单个神经元是完全连接到层N1中所有神经元的。最后这层共包含617权重。

图1。我们使用的网络结构。实际上已经检测到一个真实的例子。

然而,它使用了127093个连接,全球的拓扑结果也只有897个样本参数。这种拓扑结构可以一次解决俩个问题:稳健性问题和良好的泛化问题。

2.2训练方法

为了得到训练集,我们在互联网上使用各种渠道获得的大量的图像集合。这些集合保存在一个大的数据库中,这些不是普通的数据库。由于需要输入维数,在文献[11,9]中大多数基于神经网络的算法使用20*20的窗口进行输入,这是从人脸模型获得的最少的维数。通常情况下,这个窗口是面对人脸的中心部位,不包括边界和任何背景信息。在我们的方法中,我们会把边界和背景的部分信息添加到输入窗口。这是神经网络的运作方式:因为他们需要在输入平台输入关键的信息。另一方面,通过增加边界和一些背景,我们给网络提供一些额外的信息,这可以使我们对人脸模型进行有效的分类。边界和背景会有一个很大的变化,我们需要特别注意,否则会使算法有所偏差(例如,背景绝不能总是黑色)。是为了保持图像的原有宽高比例,最后的选择输入的大小是32x36。

在提取的面孔时候,我们没有进行任何的标准化,比如在文献[11,9]中提到了直方图均衡化或亮度校正。而且我们也不需要人脸保持在同一个位置,比如眼睛,嘴巴和其他器官都在时刻变化。从技术上讲,在失去原始比例的情况下,这是不可能的,这就需要引入一个偏差(所有的例子都要在这个方法下进行标准化)。此外,我们提到不管外界怎样变化,这个网络拓扑结构是相当稳健的,所以我们给出了一些标准化的例子来提高系统的稳健型。

图2介绍了一些我们所使用的例子。图2是一些从2146张图片中摘取的例子,在第二行,也有一些经过旋转和降低对比度的例子。

在现实中人脸的旋转和灰度变化都应当被考虑,我们通过应用旋转(±20度),然后降低对比度(包括经过旋转处理的图片)。为了使质量不高的照片得到好检测的结果,这样做是非常重要的。因为大部分的训练集都是从质量非常好的图片中得到的。另外一个解决方案是采用直方图均衡化对灰度进行标准化。这是不安全的,因为它可能会影响表面纹理。在图2中我们展示了一些经过转换的。最后,应用转换后,训练集的规模达到了12,876。

像文献[6]中描述的,为了得到训练集,我们把修改后的BP算法应用到卷积网络算法中。设置-1代表非面孔,1代表面孔。随机出现的不包含人脸的图片会被当作错误的(非人脸的)例子。总之,我们认为这种方法不是最佳的,因为人脸的边界区域与非人脸的图片是非常接近的。作为一种替代的解决方案,我们训练一些非人脸的模型,就是为了得出这些错误的警报。下一步,随机选取的错误例子将会被实际训练中产生的错误警报替代。此外,为了避免任何偏差的出现,我们将新的一组错误的例子应用到我们上面所说的转换问题上。因此,产生了约6000个非人脸模型的例子。

相关文档
最新文档