APP下载

基于Sobel算子改进卷积神经网络的人脸识别

2018-11-22贺兴时

渭南师范学院学报 2018年20期
关键词:池化层识别率人脸

黄 剑,贺兴时

(西安工程大学 理学院,西安710048)

人脸识别作为一种模式识别和机器视觉的生物识别方法,是近年来十分火热的一个研究课题。[1-3]因为人脸识别不需要人的被动配合,能够在不接触人的情况下远距离采集人脸图像,充分表现了它的非接触性和友好性,人脸识别技术是一项鲁棒性好、使用方便、安全性高的生物识别技术。[4]由于人脸识别的这些优势,这项技术被应用于诸多领域,如公司单位档案管理、日常考勤、门禁安全系统验证、各种人机交互、公安部门追踪嫌疑人员、日常治安管理、战场敌我识别、对敌高效打击等。故对于人脸识别技术的研究不仅是学术的需要,更是社会发展的需求。

表1 生物特征识别技术性能比较

人脸识别技术与其他生物特征识别技术的性能比较,具有一定的优势[5](如表1所示):直观、准确、稳定性好,具有很高的可采集性,不但可以在任何一个场所用于多种用途,而且不需要人为操作,是一种非接触的友好的生物识别技术,可接受性非常高。

几何特征法是一种较早的人脸识别方法[6],通过提取人眼睛、嘴巴、鼻子等重要特征的位置和几何形状作为分类特征,虽然该方法比较符合人脸识别的原理,而且容易理解,存储空间也小,不会过多地占据资源,对光照敏感度也低。但几何特征法的难点在于怎样建立一个好的模型来精准地提取人脸的几何特征,而且稳定性不高,识别效果也不理想。

特征脸方法(PCA)是20世纪90年代初期Turk和Pentland两个人提出的[7],也是比较流行的一种方法,其主要思想是从统计的角度出发,找出人脸图像分布的基本元素,即用人脸图像样本的协方差矩阵的特征向量来近似地表示人脸图像。但是特征脸方法在引入光线差别、角度不同以及人脸的尺寸大小不一的情况下识别效果会大大下降。

还有更多的人脸识别方法如表2所述。

表2 人脸识别方法对比

综合起来神经网络是更好的选择,特别是卷积神经网络。卷积神经网络是神经网络中应用广泛且网络性能较好的一种结构,是一种自适应的非线性动态网络系统,卷积神经网络具有局部连接、权值共享及采样池化的操作等特点,可以非常有效地使网络的复杂度降低。通过减少训练参数数目,使得网络模型对扭曲、平移、缩放等操作拥有了一定程度的不变性,而且还拥有强鲁棒性和一定的容错能力,相比于其他结构也更加容易训练和优化,基于这些优点,在人脸识别研究领域,卷积神经网络具有很大的研究意义和应用价值,并且在应用领域也有十足的发展。本文提出了一种改进的卷积神经网络结构,再加上用Sobel算子[14-15]进行预处理,使得网络速度更快,该方法相比于传统的卷积神经网络在识别率和识别时间上都有了一定的提升。

1 神经网络

卷积神经网络是一种深度神经网络,网络结构多层,比较复杂,而且每一层都含有多个神经元,通过模拟视觉皮层各个层次的细胞处理视觉信息的过程对图像进行从粗略到细致的特征提取。普通的人脸识别方法在图片存在光照、表情、姿态等问题的时候,识别的准确率和速度会急剧下降,但是卷积神经网络却可以解决这些问题,因为卷积神经网络是一种自学习的识别系统,一般分为有监督学习和无监督学习两种形式,随着卷积网络层数的增多,无监督式学习用的人越来越多,但是有监督学习的准确度和速率也不输于无监督学习,而且在纯粹的分类问题上更具优势。[16]卷积神经网络的主要结构为输入层、卷积层、下采样层(池化层)、全连层和输出层。[17]基本的卷积神经网络如图1所示,一般的卷积神经网络卷积层通过接受上一层的经过训练的特征来用卷积核进行卷积并求和,然后将所得结果通过激活函数形成当前层的特征,再作为下一层的输入。

图1 神经网络结构图

1.1 卷积层

卷积层的计算公式为:

图2 最大池化说明图

1.2 池化层

接下来的一层为降采样层,即池化层,将前一层的像素矩阵平均分为多个n×n的像素矩阵块,一般取用每个矩阵块里的最大值作为该矩阵的新值,也就是常说的最大池化,如图2所示,这样就会使原矩阵维度减小,可以大幅度地减少计算量,并且能够有效避免由于特征过多而引起的过拟合现象。其公式表达为:

1.3 全连层

全连层是将上一层所产生的每一个与特征图相对应的二维数组转化为一维数组,然后再将转化所得的所有一维数组拼接成一个特征长向量作为全连层的输入,其公式一般为:

1.4 分类器

支持向量机SVM(Support Vector Machines)[17]能够很好地避免过学习、欠学习、维数灾难以及陷入局部最小值的问题,很多学者已经将其很好地应用于分类和模式识别方面。在解决人脸识别问题的时候,即处理多分类问题的时候,我们也可以用SVM来进行。在本文中,我们选用的是一个层次结构的多类别支持向量机。基本思想就是将所有样本先进行一个二分类,即分成两个子类,然后再将每一个分出来的子类再分成下一级的两个子类,如此循环,最后得到每一个单独的类,即在本文中将每一个人的人脸图分为一类,使得网络最后的分类能够有更高的准确率。

2 人脸识别网络模型

2.1 传统CNN网络

卷积神经网络是一种非全连的多层神经网络结构,一般由卷积层、池化层、全连层组成,输入的图像最先通过卷积层进行卷积,得到一定数量的特征图,然后再经过池化层对特征进行一定的模糊处理,最后再通过全连层输出一组特征向量,来作为分类器的输入进行分类识别,传统的卷积神经网络结构如图3所示。

图3 传统卷积网络结构图

图4 Sobel算子预处理效果图

卷积神经网络中间的卷积层和池化层相互交替组合成为神经网络的隐层,如图3所示,人脸图像作为输入层,通过卷积层1得到若干个特征图,然后由池化层1进行池化,池化的尺度可以自由设定,池化后的特征图再经过卷积层2进行卷积,将所得的特征图再经过池化层2进行池化,池化后作为全连层的输入,进行人脸图像特征的识别,最后通过分类器输出得到识别结果。

2.2 改进的CNN网络

图片经过Sobel算子处理和细化后所得的图片效果如图4所示,处理以后对于整个识别过程会更加简单,因为经过预处理的图片的特征纹理会更加明显,虽然会损失部分比较细微的特征,但是对于绝大多数纹理特征会起到放大作用,能够加快整个网络的识别速度和精确度。

本文采用的卷积神经网络的结构如图5所示,由图可以看出,在该神经网络中,输入图片大小为80×80,且经过归一化和Sobel算子预处理,第一个卷积层和第二个卷积层所用的卷积核都为3×3,步长为1。该结构与传统神经网络结构有所区别,为两次连续卷积后再与池化层相连接,两次连续卷积后能够更好地保留特征,使得整个学习过程更加的高效,提高网络的学习效率。然后重复两次,即卷积层1、卷积层2和池化层1后有卷积层3、卷积层4和池化层2,池化层选用的是最大池化,步长为2,将图片大小变成了40×40,然后再进行一次卷积,经过两个全连层,第一个全连层为512维,第二个全连层则得到200维的特征矩阵,再通过SVM分类器进行多项分类,得到结果。

图5 改进CNN结构图

在这里不需要对图片的背景、光线等做预处理,因为使用的卷积神经网络结构在非线性降维的过程中,可以自动地排除这些因素的影响。而且在本文的网络训练开始之前,使用了Sobel算子对图像进行了预处理。Sobel算子是一种梯度幅值检测算子,采用了3×3的卷积模板对监测图像进行加权平均或邻域平均,然后通过一阶微分计算检测出图像边缘点。设为函数图像,则它在点处的梯度是一个矢量,定义如下:

其中:$f (x,y)用来表示梯度的模,它的值可以由下式计算得出:

在激活函数选择上,一般的ReLU是当输入小于0时,输出全都是0;而当输入大于0时,输出就是输入。该函数的收敛速度相比于其他激活函数更快,而且当x<0时,ReLU为硬饱和;当x>0时,则不存在饱和问题,即梯度不会饱和,即ReLU能够在x>0时保持梯度不衰减,这样能够在很大程度上缓解梯度消失的情况。但是会存在很多神经元坏死的情况,导致一定的信息损失。而本文所用的改进的激活函数为RReLU(Randomized leaky Rectified Linear Unit),函数图如图6所示,图中a是一个高斯分布中随机选择出来的,然后在测试的过程中加以修正,其公式如下:

虽然其数学形式与PReLU一样,但是RReLU是一种非确定性的激活函数,它的参数是不固定的,随机产生。这种随机性就像是一个噪声,能够在很大程度上起到正则作用。所以用在人脸识别上,能够使网络在训练和测试的过程中花费更少的时间,取得更加稳定且突出的效果。

图6 激活函数示例图

3 实验

3.1 数据库

本文中训练和测试所用到的人脸数据为FERET人脸数据库,该库包含有200个不同人物的人脸图片,每个人有7张人脸图片,这7张包含了同一个人脸在不同的光线条件下不同的面部表情和姿态等特征,且经过了归一化处理,每一张图都是灰度图,分辨率均为80×80,如图7所示。

图7 FERET人脸库部分图片示例

ORL人脸库包含有40个不同年龄、不同性别和不同种族的对象。每个人10幅图像共由400幅灰度图像组成,图片大小为92×112,在预处理之前将其处理成灰度图,大小为80×80,并且图中有表情、姿态的变化以及是否戴眼镜的区别,增加了样本的多样性,图片背景为黑色,如图8所示。

图8 ORL人脸库部分图片示例

3.2 实验步骤

(1)用Sobel算子对人脸图片进行预处理,首先计算出图片的Sobel水平梯度和Sobel垂直梯度,然后进一步计算出图像的Sobel梯度;

(2)设计网络结构,将经过预处理的图片作为网络的输入;

(3)对网络进行训练,并加以调整,使网络稳定;

(4)提取网络参数,并进行测试;

(5)经过测试以后,确认网络的稳定和效果良好,能够很好地完成人脸识别。

3.3 实验结果分析

本文所使用的CNN网络是在CAFFE环境下运行的,对基础的网络进行改进,并用CUDA进行加速处理,然后与3种人脸识别方法做对比实验,实验结果如表3所示。

表3 实验结果对比

由表3可以看出,在FERET人脸库中,PCA的识别率为83.6%,识别时间达3.81 s;BP神经网络的识别率为81.2%,识别时间为5.05 s;改进的神经网络方法在识别率上提高了15%,在识别时间上更是缩短了4.6 s;改进的卷积神经网络和传统卷积神经网络相比较,虽然在识别时间上差别并不明显,仅仅缩短了0.06 s,但在识别率却提高了3.5%。在ORL人脸库中,PCA的识别率为83.2%,识别时间为3.9 s;BP神经网络识别率是81.1%,识别时间为5.15 s,改进的神经网络在识别率上提高了15.5%,在识别时间上缩短了4.65 s;与传统的神经网络相比较,识别时间缩短了0.08 s,识别率提高了3.5%。改进网络不仅在识别率上有显著的提升,而且在识别时间上也有了明显的缩短。所以,本文改进的识别方法具有一定的可行性。

4 结语

通过对比可以看出,本文提出的新的卷积神经网络由于增加了预处理以及结构上的重新设计,相对于之前的一些方法在识别速度与准确率上都有很大的提高。通过人脸库样本的训练以后,取得的效果比较好,在实际应用中,由于结构简单,对设备要求更加普通化、简单化,能够更好地应用于生活和工作。而且如果能够对更多的人脸库进行训练和测试,相信本文提出的网络能够有更好的效果。接下来的工作就是对更多的人脸库进行训练和测试,并在实时的人脸识别上做更多工作,做出能够更加稳定快速的进行识别的网络模型。

猜你喜欢

池化层识别率人脸
有特点的人脸
卷积神经网络模型研究分析*
一起学画人脸
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
基于类图像处理与向量化的大数据脚本攻击智能检测
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
三国漫——人脸解锁
基于全卷积神经网络的SAR图像目标分类*
提升高速公路MTC二次抓拍车牌识别率方案研究