一种基于迁移层次网络的人脸识别方法与流程

文档序号:15559326发布日期:2018-09-29 01:52阅读:108来源:国知局
本发明属于计算机视觉领域,尤其涉及一种基于迁移层次网络的人脸识别方法。
背景技术
:近年来,深度学习在计算机视觉领域取得了广泛的应用。深度学习方法在使用比传统方法更多的训练集,采用更深的网络结构后,在人脸识别方面也取得了比较明显的进步。然而在某些场景下,由于资源、人手等成本的限制,不能获得足够多的有标签训练样本来训练,导致无法得到更优秀的模型。技术实现要素:发明目的:本发明提出了当人脸数据较少时可采用的基于迁移层次网络的人脸识别方案。采用已经训练好的具有普遍意义的模型,以此模型的权值作为新模型的预值。同时不断调整模型的学习率,这对资源有限时,使用深度学习方法进行人脸识别提供了非常有价值的借鉴意义。本发明具体包括如下步骤:步骤1,选取预训练模型;步骤2,搭建层次网络;步骤3,对人脸训练数据集进行预处理;步骤4,确定微调的网络层次结构;步骤5,在人脸训练数据集上进行重训练操作,如果在人脸训练数据集上的准确率不理想,则转步骤4,否则得到训练好的模型,执行步骤6;步骤6,对于给定的图片,采用与步骤3中相同的方式进行相应的预处理,使用步骤5得到的已训练好的模型进行人脸识别,给出识别结果。步骤1所选取的预训练模型为vgg-face模型。本发明采用的预训练网络是vgg-net,使用此预训练网络主要是因为该网络的卷积核大小均相等,且网络结构可以逐步递进深入,之前训练的浅层网络的权值可以赋予深度网络,且该网络的权值具有一定的通用性,而且有开放专门使用此网络训练人脸图像的模型;步骤2中,搭建的层次网络为vgg-net卷积神经网络,卷积层步长和补齐均设置为1,卷积层共分成五组,每一组之后接池化层,初始输入大小为224×224,初始卷积核数目为64,卷积核大小全部为3×3,两个卷积层作为第一组,第二组同样是两个卷积层,池化后卷积核数目加倍为128个,第三,四,五组均为三个卷积层,卷积核数目依次为256,512,512;池化层采用最大池化方式,池化层步长大小为2,每次池化后特征图的尺寸减半,为了保证网络的表达能力,将卷积核的数目增加一倍;全连接层将之前提取的特征再次进行非线性变换,全连接参数为4096-4096-1000,并接softmax进行分类(参考文献:《数字图像处理》冈萨雷斯/伍兹电子工业出版社),使用步骤1的预训练模型对搭建的层次网络初始化。卷积神经网络一般分为三种网络层:卷积层,池化层和全连接层。卷积层通过使用不同的卷积核从多个角度获得图像特征。池化层主要是将之前的特征进行平滑,筛选,减少参数量。全连接层能够继续进行非线性变换,并起到分类器的作用。vgg-net采用小的同样尺寸的卷积核替代原先不同大小的卷积核。卷积核的大小全部设置成3×3,步长和补齐均设置为1,这样构建能够使得卷积以后的特征图和卷积前大小相等。与原先5×5和7×7大小的卷积核相比,两个3×3大小的卷积层能够拥有5×5大小的感受野,3个卷积层就能够拥有7×7大小的感受野,这样就可以模拟更大的感受野,并保持较小的卷积核。这样就能够有效的降低参数个数。例如2个3×3的卷积核参数个数为18,而5×5的卷积核参数个数为25,单这一层就降低了7个参数。本发明采用的是vgg-16模型,卷积层共分成五组,每一组之后接池化层,初始输入大小为224×224,初始卷积核数目为64,卷积核大小全部为3×3,两个卷积层作为第一组,第二组同样是两个卷积层,池化后卷积核数目加倍为128个,第三,四,五组均为三个卷积层,卷积核数目依次为256,512,512。池化层采用最大池化方式,步长大小为2,每次池化后特征图的尺寸减半,为了保证网络的表达能力,将卷积核的数目增加一倍。全连接层将之前提取的特征再次进行非线性变换,全连接参数为4096-4096-1000,并接softmax进行分类;步骤3包括:使用以下一种或两种以上组合数据增强变换来增加输入数据的量:旋转、反射变换:随机旋转图像一定角度(随机逆时针或者顺时针旋转图像0~90度),或者改变图像内容的朝向(逆时针旋转图片90度或者180度,或者270度);翻转变换:沿着水平或者垂直方向翻转图像;缩放变换:将图像放大或者缩小到搭建的层次网络指定的输入大小,即224×224;平移变换:在图像平面上对图像以一定方式进行平移,具体包括:将图像随机向左或者向右,向上或者向下平移,向左或者向右平移的距离随机在0~1/2图像的长,向上或者向下平移的距离在0~1/2图像的宽;尺度变换:对图像参照sift(scaleinvariantfeaturetransform,尺度不变特征变换)特征提取思想,利用指定的尺度因子对图像滤波构造尺度空间,改变图像内容的大小或模糊程度;对比度变换:在图像的hsv(hue,saturation,value,色调(h),饱和度(s),明度(v))颜色空间,改变饱和度s和v亮度分量,保持色调h不变,对每个像素的s和v分量进行指数运算(参考文献:《数字图像处理》冈萨雷斯/伍兹电子工业出版社),指数因子在0.25到4之间,增加光照变化;噪声扰动:对图像的每个像素rgb进行随机扰动;颜色变换:在人脸训练数据集像素值的rgb颜色空间进行pca主成分分析(principalcomponentanalysis,主成分分析),得到rgb空间的3个主方向向量,3个特征值,p1,p2,p3,λ1,λ2,λ3,p1,p2,p3代表人脸训练数据集像素值的rgb颜色空间进行pca主成分分析后得到rgb空间的3个主方向向量,λ1,λ2,λ3代表人脸训练数据集像素值的rgb颜色空间进行pca主成分分析后得到rgb空间的3个特征值,对每幅图像的每个像素ixy=[irxy,igxy,ibxy]t进行如下的变化:[p1,p2,p3][α1λ1,α2λ2,α3λ3]t其中,irxy指的rgb空间r空间(x,y)坐标位置的像素值,igxy指的rgb空间g空间(x,y)坐标位置的像素值,ibxy指的rgb空间b空间(x,y)坐标位置的像素值,t表示矩阵形式的转置,α1、α2、α3是满足均值为0、方差为0.1的随机变量,用[p1,p2,p3][α1λ1,α2λ2,α3λ3]t这个公式计算得到的值来代替[irxy,igxy,ibxy]t这个本来的值,达到颜色变换的作用。步骤4中,对步骤1选取预训练模型的网络结构需要根据人脸识别的难度进行裁剪和调整,选取相应的网络层进行微调(参考文献:《deepfacerecognition》parkhi,omkarmandvedaldi,andreaandzisserman,andrewandothers),得到新的网络模型。步骤5包括:步骤5-1,在步骤4得到的新的网络模型基础上,采用caffe的快速卷积方法(参考文献:《caffe:convolutionalarchitectureforfastfeatureembedding》yangqingjia,evanshelhamer,jeffdonahue,sergeykarayev),使用现有的人脸训练数据集的数据,根据人脸训练数据集上分类的损失函数值的变化调整网络模型的学习率,并重新训练,单个输入的分类损失函数l(xs,ys)的计算公式为:其中,k为分类种类的个数,xs表示输入的单个样本,ys表示该样本的类别,取值范围为1到k,表示ys类别为k时,取值为1,否则取值为0;c(xs)表示样本xs输入到网络后的输出结果;最后的目的是最小化所有样本的分类的损失函数和,以此来训练新的网络模型,公式如下:其中,(xs,ys)~(xs,ys)表示(xs,ys)是从数据集(xs,ys)采样得到的一个样本,xs表示样本的集合,ys表示样本对应的类别标签的集合,|xs|表示总样本的个数;步骤5-2,最终的目的是最小化损失函数和,所以当损失函数不再下降的时候,需要降低网络模型的学习率,以便让损失函数继续下降;训练网络模型直到人脸训练数据集上的结果变化不大为止,即前后两次的结果相差不超过1%,则得到训练好的模型,执行步骤6;如果准确率不理想,即前后两次的结果相差超过1%,则转步骤4。步骤2中,深度学习中,网络结构的设计对最后的识别结果起着至关重要的作用。从早期用于手写数字识别的lenet-5到应用于imagenet大批量图片数据识别时使用的alexnet,包括近期获得cvpr2016bestpaper的resnet等工作都是基于网络结构展开的,本发明采用的预训练网络是vgg-net,使用此预训练网络主要是因为该网络的卷积核大小均相等,且网络结构可以逐步递进深入,之前训练的浅层网络的权值可以赋予深度网络,且该网络的权值具有一定的通用性,而且有开放专门使用此网络训练人脸图像的模型,有利于实验和讨论的展开。步骤3中,深度学习对数据量的要求比其他模型要大很多,实际上在某个大型的数据集上训练一个普适的模型,再将此模型作为初始权值。通过微调来获得较快的收敛速度和较高的精度。影响迁移学习效果的一个很重要的因素是原数据集与新数据集的相似度。一般来说,原数据集较大,且在内容上与新数据集更相似的,效果更好。迁移学习可以通过微调来实现,微调时主要需要考虑原始模型所用的数据集与新数据集所用的数据集在规模和相似度上的差别,一般来说,规模和相似度越高,迁移学习的效果越好。微调vgg-face:本发明所选的模型为vgg-face模型。vgg-face采用的是vgg网络结构,在大规模的人脸数据集上训练而得,其训练集从2622人拍照采集而得,一共有260万张图像,主要是通过网络收集,通过谷歌必应搜索,每个人获得2000幅图像并经过后续的筛选处理完成。本发明使用的是yale和ar数据集。使用vgg-face模型作为初始权值。迁移学习网络结构的限制:使用原有的模型进行微调时,使用已有参数时,网络结构必须相同。包括两种情况:(1)使用原先网络的所有层,并可以增加新的网络层。但使用已有的网络层,每层的结点数必须保证相同。(2)使用部分网络层次的权值,每层结点数同样必须保证相同。微调时,学习率的改变:由于采用了预训练的模型,默认初始值是比较优的,所以学习率的设置均较小,一般从0.01逐步衰减至0.000001。这样梯度变化不至于太快。微调时,一般都是微调所有层,当数据量特别少的时候,为了防止过拟合,也可以只微调高层。一般认为低层提取到的特征更一般化,比如边缘,彩色半点等。高层特征越来越接近新数据集中所包含的分类的细节。针对现有技术的问题,本发明研究了在样本不足时可采用的基于迁移学习和微调构建的层次网络,并在人脸识别的具体视觉任务上做实验验证。在深度学习中,迁移学习主要指的是权重迁移,将预训练好的网络权重作为新网络的初始权重,然后微调此通用网络权重以满足新的识别任务。在mnist,yale,ar等数据集上的实验证明,该方法不仅可以取得比较好的预测效果,相比于从头训练,还可以缩短训练时间。深度学习通过把原始数据通过一些简单但是非线性的模型转变成为更高层次的,更加抽象的表达。通过足够多的转换和组合,几乎可以拟合任意函数。深度学习能够从原始的训练数据中学习到隐藏的语义,并实现更有利于分类的特征表达,通过该种构造与转换,可以完成多种语义识别与分析的任务。对包括语音识别,视觉对象识别,甚至于自然语言等方面都带来了显著的改善。深度学习能够发现大数据中的复杂结构。它是利用bp反向传播来进行训练的。其核心是特征的提取与分类是通过通用的学习过程从数据中学到的而不是手工工程的设计。且深度学习框架能够为很多问题提供通用的解决方案。本方法重点讨论在样本量相对较少时,采用深度学习模型时需要做的解决方案,通过选取开源的训练好的通用模型,在构建符合新数据集的网络结构,将原先的权值作为初始值,进行迁移学习,并微调使得在新的数据集上效果更好。在人脸识别方面取得了令人满意的实验结果。有益效果:本发明解决了现有技术中的问题:1)由于资源,人手等成本的限制,并不能获得足够多的有标签的人脸训练样本。针对这种场景,本发明提出了在样本不足时可采用的基于迁移学习和微调构建的层次网络,并针对人脸识别问题做了有益的验证。2)快速卷积核学习率的设置:在迁移学习具体的细节处理上,给出了较快速的卷积操作的实现,这样可以在cpu模式下节约时间,同时还研究了学习率的改变对最终效果的影响,并且在标准数据集上做对比实验,给出了该方法的有效性验证,这对资源有限时,深度学习方法的选择和改良提供了帮助。附图说明下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。图1为im2col实现示意图。图2为caffe卷积实现示意图。图3为网络模型图。图4是本发明流程图。具体实施方式下面结合附图及实施例对本发明做进一步说明。本发明适用于当训练数据集较小,实际可用的资源不足时,可采用的一种基于迁移层次网络的人脸识别方法。本发明提出了新的人脸识别的方法。1)在搭建网络时,利用大小相等的卷积核替代原先较大的卷积核,以构造层次网络2)在进行迁移学习时,通过原模型与现有数据集之间的相似关系,确定网络的微调层次结构,并不断的调整学习率。3)在执行卷积运算时,使用caffe工具提供的im2col方法将卷积转为矩阵相乘。整个过程如图4所示,本发明包括如下步骤:步骤1:预训练模型选取。选取vgg-face网络的权值作为网络的初始权值;步骤2:层次网络搭建:本发明采用的是vgg-16模型,卷积层共分成五组,每一组之后接池化层,初始输入大小为224×224,初始卷积核数目为64,卷积核大小全部为3×3,两个卷积层作为第一组,第二组同样是两个卷积层,池化后卷积核数目加倍为128个,第三,四,五组均为三个卷积层,卷积核数目依次为256,512,512。池化层采用最大池化方式,步长大小为2,每次池化后特征图的尺寸减半,为了保证网络的表达能力,将卷积核的数目增加一倍;步骤3:人脸数据预处理:对已有的人脸数据,做适当的旋转,偏移,颜色加深,施加随机椒盐噪声等,以增加训练集的数量;步骤4:确定微调的网络层次。一般来讲,网络的前面层次,涉及的更多是低层特征的提取,后面层次提取的特征更有表达能力,全连接层则更更多的涉及分类的信息;步骤5:深度学习模型训练,使用微调的方法完成模型的迁移学习;不断的调整模型的学习率,若在训练集上的准确率不够理想,则转步骤4;步骤6:使用已训练好的模型进行人脸识别。步骤4中,迁移学习可以通过微调来实现,微调时主要需要考虑原始模型所用的数据集与新数据集所用的数据集在规模和相似度上的差别,一般来说,规模和相似度越高,迁移学习的效果越好。微调vgg-face:本发明所选的模型为vgg-face模型vgg-face采用的是vgg网络结构,在大规模的人脸数据集上训练而得,其训练集从2622人拍照采集而得,一共有260万张图像,主要是通过网络收集,通过谷歌必应搜索,每个人获得2000幅图像并经过后续的筛选处理完成。本发明所使用的是yale和ar数据集。使用vgg-face模型作为初始权值。迁移学习网络结构的限制:使用原有的模型进行微调时,使用已有参数时,网络结构必须相同。包括两种情况:(1)使用原先网络的所有层,并可以增加新的网络层。但使用已有的网络层,每层的结点数必须保证相同。(2)使用部分网络层次的权值,每层结点数同样必须保证相同。微调时,学习率的改变:由于采用了预训练的模型,默认初始值是比较优的,所以学习率的设置均较小,一般从0.01逐步衰减至0.000001。这样梯度变化不至于太快。微调时,一般都是微调所有层,当数据量特别少的时候,为了防止过拟合,也可以只微调高层。一般认为低层提取到的特征更一般化,比如边缘,彩色半点等。高层特征越来越接近新数据集中所包含的分类的细节。步骤5中,层次网络的训练最重要的是卷积操作的实现。caffe中卷积的实现思想是img2col,假设一副图像尺寸大小为m×m,卷积核大小为m×m。如图2(图2中caffe为一种深度学习工具,参考文献:《caffe:convolutionalarchitectureforfastfeatureembedding》jia,yangqingandshelhamer,evananddonahue,jeffandkarayev,sergeyandlong,jonathanandgirshick,rossandguadarrama,sergioanddarrell,trevor),那么在计算时,卷积核与图像中每个m×m大小的图像块均要做像素点级别的相乘操作,这就相当于把该m×m图像块提取出来,然后表示成一个长度为m2的列向量,只要计算共有多少个这种图像块即可。考虑简单的情况,不计算补齐值(padding)和步长(stride)的情况下,一共有(m-m+1)^2个,把这么多的图像块均表示为m^2的列向量,然后将其组合为一个大矩阵(m^2x(m-m+1)^2)。这就是img2col对卷积的具体实现方式,见图1(图1中英文的含义:im2col:将图片转换为矩阵形式image:图片c:channel通道数h:height高度w:width宽度featurematrix:由图片转化得到的特征矩阵k:卷积核的大小filter:卷积核cout:卷积核的个数),matlab中就有这种函数。最后把卷积核也表示为m2向量,并按列均复制为同尺寸矩阵(m^2x(m-m+1)^2)。将俩矩阵按列做点积即可得结果。如图3所示,x1:网络模型的第一个输入,x2:网络模型的第二个输入,w(1):网络第一层神经元的参数,w(2):网络第二层神经元的参数,b(1):网络第一层神经元的偏置,b(2):网络第二层神经元的偏置,网络第一个输入的第一层、第二层神经元的输出,网络第二个输入的第一层、第二层神经元的输出,将事先已知是否为同一人脸的一对照片,分别输入到网络模型中。如同图3所示,左边图片x1输入到网络中得到右边图片x2输入网络模型中得到并通过模型的迁移学习的部分,在已知两幅图为同一个人脸还是不同人脸的条件下,去更新网络模型的参数,从而达到训练网络模型的目的。实施例:本发明采用上述方案,在标准的人脸数据集yale,ar上取得了令人满意的效果。yale数据集是由耶鲁大学的计算视觉与控制中心搜集创建而成,数据集中有15位人员的各个角度的图片共165张,包含各种视觉因素的影响,诸如光照,表情和姿态的变化。ar:包括120人,4000多幅图像,分别对应于不同表情和光照条件下的人脸。是公认度比较高的一种数据库。具体实现如下:步骤1:可选用的具有一般意义的初始模型主要是imagenet分类模型和vgg模型,本发明要做的是人脸识别,所以选用vgg-face模型。步骤2:搭建用于人脸分类的层次网络,将卷积层分成5个组,每一组均有3层,卷积核的大小均为3×3。第一组有64张特征图;初始输入大小为224×224,初始卷积核数目为64,卷积核大小全部为3×3,两个卷积层作为第一组,第二组同样是两个卷积层,池化后卷积核数目加倍为128个,第三,四,五组均为三个卷积层,卷积核数目依次为256,512,512。具体参数见表1:表1vgg-16参数group1conv3-64group2conv3-128group3conv3-256group4conv3-512group5conv3-512fully-connect4096-4096-1000步骤3:在yale数据集上,微调网络的所有层,并重命名最后一层,以进行分类。步骤4,采用每个人2张作为训练集,9张作为测试集,并做旋转,偏移,颜色增强等操作。步骤5,将已有的广义vgg模型的权值作为新模型的权值,在此模型上,使用caffe深度学习库在现有的训练数据上进行重训练操作,包括卷积,池化,全连接特征提取;卷积时采用caffe实现的快速卷积方案,首先使用im2col方法将特征图转化为矩阵。见图1。转化为矩阵形式后,采用gemm算法做实际计算,使用filtermatrix乘以featurematrix的转置,得到输出矩阵coutx(hxw),即三维blob的值(coutxhxw)。步骤6,对于给定的图片,进行相应的预处理,然后使用已训练好的模型进行分类识别操作,具体操作参数为test–-model–vgg_finetune,在yale数据集上的结果如表2:表2方法准确率pca82.90%lda78.50%lda+gabor92.60%hog94.80%sift84.40%vgg+finetuning96.70%在ar数据集上实验结果见表3:表3methodaccuracysrc56.00%esrc81.25%svdl85.92%vgg_face+finetuning87.00%pcrc90.84%本发明提供了一种基于迁移层次网络的人脸识别方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1