一种人脸识别方法、系统、终端以及存储介质
文献发布时间:2023-06-19 09:40:06
技术领域
本申请属于人脸识别技术领域,特别涉及一种人脸识别方法、系统、终端以及存储介质。
背景技术
早在上世纪60年代,经历了半个世纪之久的发展,到如今,人脸识别已进入国内外的高速发展期。人脸识别能够快速发展主要在于其能够快速的带动相关学科的进步,由于人脸识别是一个非常复杂且涉及多方面技术的结合体,通常会涉及到最经典的图像模式处理、计算机视觉、计算机图形学、科学方面的认识、生理学、心理学、AI、数学逻辑计算等多种学科的结合交叉,搭成一个全新的领域,应用于实际生活中,结合AI,可以引领社会进入更高层次的生活条件中。同时,人脸识别技术具有相当大的应用潜力,目前,人脸识别的应用领域非常广泛,例如手机人脸解锁、门锁人脸识别、公安运用人脸识别破案以及吃饭“刷脸”等,给人们的生活也带来了极大的便利。因此,人脸识别的研究具有非常实用的意义。
现有技术中,主要的人脸识别方法包括几何特征的人脸识别方法、判别分析法(Fisher)、模板匹配法、特征脸法(Eige naface)、独立主元分析法(LCA)、隐马尔可夫方法(HMM)、支持向量机法(SVM)、奇异值分解法(SVD)、弹性图匹配方法及神经网络方法等,但由于人脸识别过程中会受到人的表情扭曲、喜怒哀乐变化等因素的影响,上述方法都存在较多的限制性条件,不能很好的进行人脸识别。
发明内容
本申请提供了一种人脸识别方法、系统、终端以及存储介质,旨在至少在一定程度上解决现有技术中的上述技术问题之一。
为了解决上述问题,本申请提供了如下技术方案:
一种人脸识别方法,包括:
对动态视频进行人脸捕捉并截图,获取静态人脸图片;
对所述静态人脸图片进行特征值提取,生成特征矩阵;
将所述特征矩阵输入训练好的BP神经网络,通过所述BP神经网络输出人脸识别结果;所述BP神经网络包括输入层、隐含层以及输出层,输入数据从所述输入层的所有的神经元进入,在所述隐含层中进行计算,将计算结果输入所述输出层的每个神经元进行计算,得到人脸识别结果。
本申请实施例采取的技术方案还包括:所述对动态视频进行人脸捕捉并截图,获取静态人脸图片还包括:
采用灰度化及中值滤波对所述静态人脸图片进行预处理。
本申请实施例采取的技术方案还包括:所述采用灰度化及中值滤波对所述静态人脸图片进行预处理包括:
对所述静态人脸图片进行灰度处理,将所述静态人脸图片转换成灰度矩阵;
将所述灰度矩阵切割为预定数量的小矩阵;
对所述切割后的小矩阵进行降纬处理。
本申请实施例采取的技术方案还包括:所述BP神经网络采用tansig函数作为所述输入层与隐含层的传递函数,采用purelin线性函数作为所述隐含层与输出层的传递函数,采用Sigmoid函数作为所述输入层到隐含层的激活函数,采用Purelin线性函数作为所述隐含层到输出层的激活函数。
本申请实施例采取的技术方案还包括:所述输出层节点数为人脸的类别数,所述隐含层节点数为:
上式中,n代表输入神经元的大小,m代表输出神经元的大小,a代表10以内的常数。
本申请实施例采取的技术方案还包括:所述BP神经网路中每一层的向量分别为:
设置输入层为x,隐含层为Y,输出层为O,以及一个预期向量值设为d,对于输出层,有:
上式中,O
对于隐含层,有:
上式中,x
本申请实施例采取的技术方案还包括:所述将所述特征矩阵输入训练好的BP神经网络还包括:
在训练所述BP神经网络时,设置一个误差范围,当所述BP神经网络的误差没有达到所述误差范围时,所述BP神经网络通过逆向传播算法将所述输出结果在输出层当中逆向返回给所述隐含层和输入层进行循环计算,并在循环计算过程中修正各层的权值,使得网络误差逐渐下降,直到所述BP神经网络的误差达到所述误差范围。
本申请实施例采取的另一技术方案为:一种人脸识别方法,包括:
人脸图片获取模块:用于对动态视频进行人脸捕捉并截图,获取静态人脸图片;
人脸特征提取模块:用于对所述静态人脸图片进行特征值提取,生成特征矩阵;
人脸识别模块:用于将所述特征矩阵输入训练好的BP神经网络,通过所述BP神经网络输出人脸识别结果;所述BP神经网络包括输入层、隐含层以及输出层,输入数据从所述输入层的所有的神经元进入,在所述隐含层中进行计算,将计算结果输入所述输出层的每个神经元进行计算,得到人脸识别结果。
本申请实施例采取的又一技术方案为:一种终端,所述终端包括处理器、与所述处理器耦接的存储器,其中,
所述存储器存储有用于实现所述人脸识别方法的程序指令;
所述处理器用于执行所述存储器存储的所述程序指令以控制人脸识别。
本申请实施例采取的又一技术方案为:一种存储介质,存储有处理器可运行的程序指令,所述程序指令用于执行所述人脸识别方法。
相对于现有技术,本申请实施例产生的有益效果在于:本申请实施例的人脸识别方法通过对人脸图像进行灰度以及降纬处理后,对人脸图片进行人脸特征提取,生成特征矩阵,并利用BP神经网络采用逆向传播算法进行人脸识别,能极大的提高人脸识别效率以及识别精度。
附图说明
图1是本申请实施例的人脸识别方法的流程图;
图2为本申请实施例对人脸图片进行灰度转换后的灰度矩阵示意图;
图3为本申请实施例对灰度矩阵进行切割后的小矩阵示意图;
图4为本申请实施例的BP神经网络搭建代码示意图;
图5为本申请实施例的BP神经网络变量示意图;
图6为本申请实施例的BP神经网络结构示意图;
图7为本申请实施例在特征维数为8时BP神经网络的识别率示意图;
图8为本申请实施例在特征维数为16时BP神经网络的识别率示意图;
图9为本申请实施例在特征维数为24时BP神经网络的识别率示意图;
图10为本申请实施例在特征维数为32时BP神经网络的识别率示意图;
图11为本申请实施例在特征维数为48时BP神经网络的识别率示意图;
图12是本申请实施例的人脸识别系统的结构示意图;
图13为本申请实施例的终端结构示意图;
图14为本申请实施例的存储介质的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,是本申请实施例的人脸识别方法的流程图。本申请实施例的人脸识别方法包括以下步骤:
S10:对动态视频中的人脸进行捕捉并截图,得到一定数量的不同表情、神色的静态人脸图片;
S20:采用灰度化、中值滤波等方法对所有静态人脸图片进行预处理;
本步骤中,预处理的目的是为了降低静态人脸图片的干扰和噪声,增强人脸目标以及图像背景的对比度。预处理过程具体包括:
S21:首先对静态人脸图片进行灰度处理,将静态人脸图片转换成灰度矩阵;
其中,本发明实施例采用灰度化技术对静态人脸图片进行预处理,将静态人脸图片转换成灰度矩阵,利用imread函数直接将输入的静态人脸图片转换成灰度矩阵,灰度矩阵是一个将图片转换成抽象的过程,其处理原理是将图片转化成一个数字信息,并用矩阵的数值表示各个像素的特征值,转换后的灰度矩阵如图2所示。
S22:将灰度矩阵进行切割,生成一定数量(具体数量可根据实际场景进行设定)的小矩阵;
其中,切割后的小矩阵如图3所示。
S23:对分割后的小矩阵进行降纬处理;
其中,降纬处理即为纬度高的图片进行纬度降低,将低纬度的一些独特特征进行处理及提取,作为图片的特征标记,以用表示图片。降纬的目的是为了减少数据的复杂程度,有利于更加明显的表示图片信息。
S30:对预处理的静态人脸图片进行特征值(包括特殊或特别点)提取,生成由一定数量的特征值图片组成的特征矩阵;
本步骤中,本方案采用svd(Singular Value Decompositionm,奇异值分解)算法进行特征值提取,公式如下:
A=U∑V
表示为:设A为一个X*Y的阵,U为N*N的方阵,A和U都是正交向量,U左侧为左奇异向量;∑为X*Y的矩阵,对角线上的元数都为0,其名字称为奇异值;V
AA
A
所以得:U的列向量(左奇异向量)是AA
基于上述,本申请实施例通过对静态人脸图片进行特征值提取可以减少数据流的值,给后续的各项工作带来了便利,并提高处理速度。
S40:将特征矩阵划分为训练集和测试集,并对训练集和测试集进行归一化处理;
本步骤中,特征矩阵划分方式为:运行程序时,在matlab命令窗口,输入“[pn,pnewn,t,num_train,num_test]=train_test(feature,num_train);”,其中num_train和num_test分别是每个人用于训练和测试的图片数(num_train必须是1-10),可以在运行程序时进行设定;运行程序后,可以在Matlab的变量空间中看到一个名为pn的变量,该变量是经过归一化处理后的训练集,pnewn是归一化后的测试集。
S50:将训练集输入BP神经网络(Back Propagation,前向传播神经网络)进行分类器训练,并输出人脸识别结果;
本步骤中,当BP神经网络构建完成后,输入相应的神经元个数以及迭代训练次数,然后将各层的传递函数连接好即可进行分类器的训练。BP神经网络的搭建代码如图4所示,在运行该代码之后,需要手动输入神经元个数、层之间的两个传递函数、训练函数、训练目标、训练迭代次数和学习速率等变量,构建好之后可以在变量窗口看到net变量,具体如图5所示。
本申请实施例的BP神经网络结构如图6所示,其包括一层输入层、一到N层的隐含层以及一层输出层。BP神经网路算法为逆向传播算法,其计算过程具体为:采用tansig函数作为输入层与隐含层的传递函数,采用purelin线性函数作为隐含层与输出层的传递函数,采用Sigmoid函数作为输入层到隐含层的激活函数,采用Purelin线性函数作为隐含层到输出层的激活函数;首先对各层的神经元进行初始化,输入样本先从输入层的所有的神经元进入,然后在隐含层当中进行一层一层的处理,最后数据被运送到输出层的每个神经元进行计算,当神经元计算完之后输出学习结果。其中输出层的节点数为人脸的类别数,隐含层节点数为:
公式(3)中,n代表输入神经元的大小,m代表输出神经元的大小,a代表10以内的常数。
BP神经网路中每一层的向量都不一样,本申请实施例中每一层的向量设置分别为:输入层为x,隐含层为Y,输出层为O,以及一个预期向量值设为d,对于输出层,有:
公式(4)中,输出层为O,O
对于隐含层,有:
公式(5)中,输入层为x,x
本申请实施例中,在训练BP神经网络时,还设置有一个误差范围,当BP算法的输出结果没有达到该误差范围时,BP神经网络通过一个逆向传播过程将输出结果在输出层当中逆向返回给隐含层和输入层进行循环计算,并在循环计算过程中修正各层的权值,使得网络误差逐渐下降,直到输出结果达到预设的误差范围。具体的,网络误差用E表达:
公式(6)中,E是输出层O与实际值d的差值的平方,
S50:将测试集输入训练好的BP神经网络进行模型性能评估;
进一步地,本申请实施例通过统计BP神经网络在训练集和测试集下的识别率以及总识别率,并分别在特征维数为8、16、32、48的条件下对BP神经网络的总识别率进行统计,以对BP神经网络在不同特征维数下的人脸识别精度进行验证,具体如下:
(1)特征维数为8
如图7所示,为特征维数为8时BP神经网络的识别率示意图。在特征维数为8的条件下,以倍数的形式增加神经元,逐步增加训练次数对总识别率进行测试,测试结果表明在特征维数比较低的条件下,人脸识别的识别率基本在80%以下,总体识别率偏低,因此不采用较低的特征维数。
(2)特征维数为16
如图8所示,为特征维数为16时BP神经网络的识别率示意图。在特征维数为16的条件下,当神经元低于120个时可以发现总识别率可以超过80%,但是当神经元过多时,总体识别率反而会降低,表明人脸识别中神经元的个数并不是越多越好,神经元个数太多会导致识别率降低,且训练神经网络的时间也会过长。
(3)特征维数24
如图9所示,为特征维数为24时BP神经网络的识别率示意图。在特征维数为24时,识别率随着神经元的增加而降低,在120个神经元当中训练次数为4000次时识别率可高达91.5%。
(4)特征维数32
如图10所示,为特征维数为32时BP神经网络的识别率示意图。在特征维数为32的条件下,当神经元个数为120个时,网络总体识别率超过90%以上,其中当训练次数为6000次时最高识别率可达93.5%。
(5)特征维数48
如图11所示,为特征维数为48时BP神经网络的识别率示意图。在特征维数为48的条件下,识别率可达80%以上,比特征维数为32时的识别率有所降低,而且由于特征维数较大,在后期的训练识别过程中,会损耗很多时间,因此不采用太高的特征维数。
基于上述精度验证分析表明,在特征维数逐步增加的过程中,人脸识别的准确率呈现开口向下的抛物线形态,另外,神经元的个数也会影响人脸识别的准确率,太多的神经元会降低识别率,且导致训练时间过长;因此本申请实施例优选采用特征维数为32、神经元个数为120,并且训练次数为6000次时识别率最高(达93.5%)。
基于上述,本申请实施例的人脸识别方法通过对人脸图像进行灰度以及降纬处理后,对人脸图片进行人脸特征提取,生成特征矩阵,并利用BP神经网络采用逆向传播算法进行人脸识别,能极大的提高人脸识别效率以及识别精度。
请参阅图12,是本申请实施例的人脸识别系统的结构示意图。本申请实施例的人脸识别系统40包括:
人脸图片获取模块41:用于对动态视频进行人脸捕捉并截图,获取静态人脸图片;
人脸特征提取模块42:用于对所述静态人脸图片进行特征值提取,生成特征矩阵;
人脸识别模块43:用于将所述特征矩阵输入训练好的BP神经网络,通过所述BP神经网络输出人脸识别结果;其中,所述BP神经网络包括输入层、隐含层以及输出层,输入数据从所述输入层的所有的神经元进入,在所述隐含层中进行计算,将计算结果输入所述输出层的每个神经元进行计算,得到人脸识别结果。
请参阅图13,为本申请实施例的终端结构示意图。该终端50包括处理器51、与处理器51耦接的存储器52。
存储器52存储有用于实现上述人脸识别方法的程序指令。
处理器51用于执行存储器52存储的程序指令以控制人脸识别。
其中,处理器51还可以称为CPU(Central Processing Unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
请参阅图14,为本申请实施例的存储介质的结构示意图。本申请实施例的存储介质存储有能够实现上述所有方法的程序文件61,其中,该程序文件61可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本申请中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本申请所示的这些实施例,而是要符合与本申请所公开的原理和新颖特点相一致的最宽的范围。
- 一种基于人脸预采集的闸机人脸识别方法、系统、终端及存储介质
- 一种人脸识别方法、装置、存储介质及人脸识别终端