Python的开源人脸识别库:离线识别率高达99.38%

日期:2023-02-28 14:12:37 / 人气:300

5. Neural Network for Recognition of Handwritten Digits6. DeepFace博文:http://blog.csdn.net/Hao_Zhang_Vision/article/details/52831399?locationNum=2&fps=1DeepFace是FaceBook提出来的,后续有DeepID和FaceNet呈现。而且在DeepID和FaceNet中都能表现DeepFace的身影,所以DeepFace可以谓之CNN在人脸辨认的奠基之作,目前深度学习在人脸辨认中也获得了十分好的效果。所以这里我们先从DeepFace开端学习。在DeepFace的学习进程中,不只将DeepFace所用的办法停止引见,也会引见目前该步骤的其它次要算法,对现有的图像人脸辨认技术做一个复杂、片面的叙说。1.DeepFace的根本框架1.1 人脸辨认的根本流程face detection -> face alignment -> face verification -> face identification1.2 人脸检测(face detection)1.2.1 现有技术:haar分类器:人脸检测(detection)在opencv中早就有间接能拿来用的haar分类器,基于Viola-Jones算法。Adaboost算法(级联分类器):1.参考论文: Robust Real-Time face detection 。2. 参考中文博客:http://blog.csdn.net/cyh_24/article/details/397556613. 博客:http://blog.sina.com.cn/s/blog_7769660f01019ep0.html1.2.2 文章中所用办法本文中采用了基于检测点的人脸检测办法(fiducial Point Detector)。先选择6个基准点,2只眼睛中心、 1个鼻子点、3个嘴上的点。经过LBP特征用SVR来学习失掉基准点。效果如下:1.3 人脸校准(face alignment)2D alignment:对Detection后的图片停止二维裁剪, scale, rotate and translate the image into six anchor locations。 将人脸局部裁剪出来。3D alignment:找到一个3D 模型,用这个3D模型把二维人脸crop成3D人脸。67个基点,然后Delaunay三角化,在轮廓处添加三角形来防止不延续。将三角化后的人脸转换成3D外形三角化后的人脸变爲有深度的3D三角网将三角网做偏转,使人脸的正面朝前最初放正的人脸效果如下:下面的2D alignment对应(b)图,3D alignment顺次对应(c) ~ (h)。1.4 人脸表示(face verification)1.4.1 现有技术LBP && joint Beyesian:经过高维LBP跟Joint Bayesian这两个办法结合。论文: Bayesian Face Revisited: A Joint FormulationDeepID系列:将七个结合贝叶斯模型运用SVM停止交融,精度到达99.15%论文: Deep Learning Face Representation by JointIdentification-Verification1.4.2 文章中的办法论文中经过一个多类人脸辨认义务来训练深度神经网络(DNN)。网络构造如上图所示。构造参数:经过3D对齐当前,构成的图像都是152×152的图像,输出到上述网络构造中,该构造的参数如下:Conv:32个11×11×3的卷积核max-pooling: 3×3, stride=2Conv: 16个9×9的卷积核Local-Conv: 16个9×9的卷积核,Local的意思是卷积核的参数不共享Local-Conv: 16个7×7的卷积核,参数不共享Local-Conv: 16个5×5的卷积核,参数不共享Fully-connected: 4096维Softmax: 4030维提取低程度特征:进程如下所示:预处置阶段:输出3通道的人脸,并停止3D校正,再归一化到152*152像素大小——152*152*3.经过卷积层C1:C1包括32个11*11*3的滤波器(即卷积核),失掉32张特征图——32*142*142*3。经过max-polling层M2:M2的滑窗大小爲3*3,滑动步长爲2,3个通道上辨别独立polling。经过另一个卷积层C3:C3包括16个9*9*16的3维卷积核。上述3层网络是爲了提取到低程度的特征,如复杂的边缘特征和纹理特征。Max-polling层使得卷积网络对部分的变换愈加鲁棒。假如输出是校正后的人脸,就能使网络对小的标志误差愈加鲁棒。但是这样的polling层会使网络在面部的细节构造和巨大纹理的精准地位上丧失一些信息。因而,文中只在第一个卷积层前面接了Max-polling层。这些后面的层称之爲前端自顺应的预处置层级。但是关于许多计算来讲,这是很必要的,这些层的参数其实很少。它们仅仅是把输出图像扩大成一个复杂的部分特征集。后续层:L4,L5,L6都是部分衔接层,就像卷积层运用滤波器一样,在特征图像的每一个地位都训练学习一组不同的滤波器。由于校正后不同区域的有不同的统计特性,卷积网络在空间上的波动性的假定不能成立。比方说,相比于鼻子和嘴巴之间的区域,眼睛和眉毛之间的区域展示出十分不同的表观并且有很高的区分度。换句话说,经过应用输出的校正后的图像,定制了DNN的构造。运用部分衔接层并没有影响特征提取时的运算担负,但是影响了训练的参数数量。仅仅是由于有如此大的标志人脸库,我们可以接受三个大型的部分衔接层。部分衔接层的输入单元遭到一个大型的输出图块的影响,可以据此调整部分衔接层的运用(参数)(不共享权重)比方说,L6层的输入遭到一个74*74*3的输出图块的影响,在校正后的人脸中,这种大的图块之间很难有任何统计上的参数共享。顶层:最初,网络顶端的两层(F7,F8)是全衔接的:每一个输入单元都衔接到一切的输出。这两层可以捕获到人脸图像中间隔较远的区域的特征之间的关联性。比方,眼睛的地位和外形,与嘴巴的地位和外形之间的关联性(这局部也含有信息)可以由这两层失掉。第一个全衔接层F7的输入就是我们原始的人脸特征表达向量。在特征表达方面,这个特征向量与传统的基于LBP的特征描绘有很大区别。传统办法通常运用部分的特征描绘(计算直方图)并用作分类器的输出。最初一个全衔接层F8的输入进入了一个K-way的softmax(K是类别个数),即可发生类别标号的概率散布。用Ok表示一个输出图像经过网络后的第k个输入,即可用下式表达输入类标号k的概率:训练的目的是最大化正确输入类别(face 的id)的概率。经过最小化每个训练样本的叉熵损失完成这一点。用k表示给定输出的正确类别的标号,则叉熵损失是:经过计算叉熵损失L对参数的梯度以及运用随机梯度递加的办法来最小化叉熵损失。梯度是经过误差的规范反向传达来计算的。十分风趣的是,本网络发生的特征十分稀疏。超越75%的顶层特征元素是0。这次要是由于运用了ReLU激活函数招致的。这种软阈值非线性函数在一切的卷积层,部分衔接层和全衔接层(除了最初一层F8)都运用了,从而招致全体级联之后发生高度非线性和稀疏的特征。稀疏性也与运用运用dropout正则化有关,即在训练中将随机的特征元素设置爲0。我们只在F7全衔接层运用了dropout.由于训练集合很大,在训练进程中我们没有发现严重的过拟合。给出图像I,则其特征表达G(I)经过前馈网络计算出来,每一个L层的前馈网络,可以看作是一系列函数:归一化:在最初一级,我们把特征的元素归一化成0到1,以此降低特征对光照变化的敏感度。特征向量中的每一个元素都被训

作者:天辰注册登录平台




现在致电 5243865 OR 查看更多联系方式 →

天辰注册登录平台 版权所有