一种卷积神经网络模型的训练方法及其设备
技术领域
本发明涉及图像处理领域,尤其涉及一种卷积神经网络模型的训练方法及其设备。
背景技术
卷积神经网络(英文:Convolutional Neural Network;缩写:CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它包括卷积层(英文:alternating convolutional layer)、最大池化层(英文:pooling layer)和全连层。
CNN网络模型主要用来识别位移、缩放及其他形式扭曲不变性的二维图形,CNN的特征检测层通过训练数据进行学习。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
然而,若仅通过预先设计的CNN网络模型对图像进行训练,没有对自身的参数进行更新或修正的机制,因此无法通过自动更新其参数的权重得到性能更优异的CNN网络模型。
发明内容
本发明实施例提供了一种卷积神经网络模型的训练方法及其设备,用于通过对预置的卷积神经网络模型的训练得到更新的卷积神经网络模型。
本发明第一方面提供了一种卷积神经网络模型的训练方法,包括:
获取人脸图像;使用预置的卷积神经网络模型对该人脸图像进行图像训练,得到属性判断结果,该属性判断结果包括多个属性以及该多个属性中的每一个属性所对应的概率;通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果;根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积神经网络模型。
结合本发明第一方面,本发明第一方面的第一种实施方式,包括:
对该人脸图像进行人脸对齐,得到对齐后的人脸图像;使用该卷积神经网络模型对该对齐后的人脸图像进行训练。
结合本发明第一方面,本发明第一方面的第二种实施方式,包括:
对该人脸图像进行图像张量化,得到图像张量化后的人脸图像;使用预置的卷积神经网络模型对该图像张量化后的人脸图像进行图像训练。
可选的,该卷积神经网络模型的卷积层的卷积核的大小为3×3的滤波器,卷积步长为1,且该卷积神经网络模型中的最大池化层的步长为2,采样滑动窗口为2×2。
可选的,该卷积神经网络模型包括5层卷积层、5层最大池化层和2层全连层。
可选的,该卷积神经网络模型中的该5层卷积层、该5层最大池化层和该2层全连层依次为:第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第五卷积层、第五最大池化层、第一全连层、第二全连层。
结合本发明第一方面,本发明第一方面的第三种实施方式,包括:
使用该卷积神经网络模型对该人脸图像进行图像训练,得到预置个数的矩阵;使用分类算法预估该预置个数的矩阵中的各个矩阵所对应的该多个属性中的各个属性的概率分布;根据该多个属性中的各个属性的概率分布估计该人脸图像的属性。
本发明第二方面提供了一种卷积神经网络模型的训练设备,包括:
获取模块,用于获取人脸图像;训练模块,用于使用预置的卷积神经网络模型对该人脸图像进行图像训练,得到属性判断结果,该属性判断结果包括多个属性以及该多个属性中的每一个属性所对应的概率;评价模块,用于通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果;更新模块,用于根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积神经网络模型。
结合本发明第二方面,本发明第二方面的第一种实施方式,包括:
对齐子模块,用于对该人脸图像进行人脸对齐,得到对齐后的人脸图像;第一训练子模块,用于使用该卷积神经网络模型对该对齐后的人脸图像进行训练。
结合本发明第二方面,本发明第二方面的第二种实施方式,包括:
张量子模块,用于对该人脸图像进行图像张量化,得到图像张量化后的人脸图像;第二训练子模块,用于使用预置的卷积神经网络模型对该图像张量化后的人脸图像进行图像训练。
结合本发明第二方面,本发明第二方面的第三种实施方式,包括:
第三训练子模块,用于使用该卷积神经网络模型对该人脸图像进行图像训练,得到预置个数的矩阵;预估子模块,用于使用分类算法预估该预置个数的矩阵中的各个矩阵所对应的该多个属性中的各个属性的概率分布;估计子模块,用于根据该多个属性中的各个属性的概率分布估计该人脸图像的属性。
从以上技术方案可以看出,本发明实施例具有以下优点:
由于通过获取人脸图像,使用预置的卷积神经网络模型对该人脸图像进行图像训练,得到属性判断结果,该属性判断结果包括多个属性以及该多个属性中的每一个属性所对应的概率,通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果,根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积网络模型,因此即使预先设计的卷积神经网络的性能不够优异,也可以通过进行自我修正得到性能更优异的卷积网络模型。
附图说明
图1为本发明实施例中一种卷积神经网络模型的训练方法的一个实施例示意图;
图1-1为本发明实施例中预置的卷积神经网络模型的示意图;
图2为本发明实施例中一种卷积神经网络模型的训练法的另一个实施例示意图;
图3为本发明实施例中一种卷积神经网络模型的训练设备的一个实施例示意图;
图4为本发明实施例中一种卷积神经网络模型的训练设备的另一个实施例示意图;
图5为本发明实施例中一种卷积神经网络模型的训练设备的另一个实施例示意图;
图6为本发明实施例中一种卷积神经网络模型的训练设备的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种卷积神经网络模型的训练方法及其设备,用于通过对预置的卷积神经网络模型的训练得到更新的卷积神经网络模型。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
卷积神经网络(英文:Convolutional Neural Network;缩写:CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它包括卷积层(英文:alternating convolutional layer)、最大池化层(英文:pooling layer)和全连层。
CNN网络模型主要用来识别位移、缩放及其他形式扭曲不变性的二维图形,CNN的特征检测层通过训练数据进行学习。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
然而,若仅通过预先设计的CNN网络模型对图像进行训练,没有对自身的参数进行更新或修正的机制,因此无法通过自动更新其参数的权重得到性能更优异的CNN网络模型。
因此,本发明的核心思想是通过获取人脸图像,使用预置的卷积神经网络模型对该人脸图像进行图像训练,得到属性判断结果,该属性判断结果包括多个属性以及该多个属性中的每一个属性所对应的概率,通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果,根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积网络模型,因此即使预先设计的卷积神经网络的性能不够优异,也可以通过进行自我修正得到性能更优异的卷积网络模型。
为便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中一种卷积神经网络模型的训练方法一个实施例包括:
101、获取人脸图像。
在一些可行的实施例中,工作的主体可以为服务器,或者是智能终端,只要有足够强大可以用于计算的处理器以及用于存储的存储器即可,此处不做限定。以服务器为例进行说明,该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)(例如,一个或一个以上处理器)和存储器,一个或一个以上存储应用程序或数据的存储介质(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器可以设置为与存储介质通信,在服务器上执行存储介质中的一系列指令操作。服务器还可以包括一个或一个以上电源,一个或一个以上有线或无线网络接口,一个或一个以上输入输出接口,和/或,一个或一个以上操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在一些可行的实施例中,可以通过人脸数据库中获取图像,如adience或者morph或者两者的混合,还可以通过其他途径得到人脸数据库,此处不作限定。
在一些可行的实施例中,可以通过对图像的计算软件进行处理,如矩阵实验室(英文:matrix&laboratory;缩写:MATLAB)软件。MATLAB用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用传统非交互式程序设计语言完成相同的事情简捷得多,并且MATLAB也吸收了像工程计算软件(英文:Maple)等软件的优点,使MATLAB成为一个强大的数学软件。
102、使用预置的卷积神经网络模型对该人脸图像进行图像训练,得到属性判断结果,该属性判断结果包括多个属性以及该多个属性中的每一个属性所对应的概率。
在一些可行的实施例中,该预置的卷积神经网络模型可以包括5层卷积层、5层最大池化层和2层全连层。可选的,该卷积神经网络模型中的该5层卷积层、该5层最大池化层和该2层全连层依次为:第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第五卷积层、第五最大池化层、第一全连层、第二全连层。
在一些可行的实施例中,该卷积神经网络模型的卷积层的卷积核的大小为3×3的滤波器,卷积步长为1个象素,且用0填充宽和高1个象素的边界,该卷积神经网络模型中的最大池化层的步长为2,采样滑动窗口为2×2。
请参考图1-1,为本发明实施例中预置的卷积神经网络模型中5层卷积层、5层最大池化层和2层全连层的示意图,其中,conv代表卷积层,D是颜色通道数量,如D=1表示灰度图,D=3表示彩色图,N是通道数,代表卷积层的宽度。Maxpool表示最大池化层,其采样滑动窗口为2×2,步长为2。FC代表全连接层,L->M表示L个神经元映射到M个神经元,C是最后输出的神经元数量,也表示分类数量。
在上面的网络结构中,每个卷积层之后和两个全连层之间都用到了激活函数(英文:Rectified Linear Unit;缩写:ReLU),其计算方法具体可以为非饱和非线性的函数,比常用的激活函数在训练中更容易收敛。
在一些可行的实施例中,在训练过程中,也使用了Dropout正则化,它使输入层和中间层的神经元随机置零,这些神经元不参与前向与反向传播,权重只保留不更新。这种作法模拟了噪音对输入数据的各种干扰,使一些神经元对一些视觉模式产生漏检的情况。Dropout正则化可以使训练过程收敛得更慢,但得到的网络模型更加鲁棒。
此外,在一些可行的实施例中,为了提高训练效果与避免过拟合,需要做数据扩充。在一些具体的实施例中,其方法是可以进行多重裁剪,具体的,可以为图像按四角与中心方向裁剪,大小为原图像的90%左右,并对应做镜像,这样可以得到10倍增大的数据。
以下结合一个实验进行说明,对于人脸属性分析,现以年龄分类为例,介绍CNN的训练与年龄估计过程。
假定N=64,M=200,C=12,对于3通道72×72的图像,经过裁剪后规格化到64×64,具体步骤如下:
首先可以对图像进行张量化,即把3通道64×64的图像的灰度值减去图像灰度均值,形成3×64×64的3维张量,以作为CNN网络输入,且把它对应的年龄区间作为类标签,如标签(25,32)表示25到32岁年龄区间。
需要说明的是,张量化是把图像矩阵转成一种行或列向量的过程,3维张量是指图像的3通道子图像,也就是3个矩阵。
对每一个张量,使用如图1-1中的CNN结构,经过宽度是N=64个通道的第1个卷积层处理后,映射成新的张量,其维数是64×64×64,再经过最大池化后,此张量维数降低到64×32×32,依次类推,经过宽度为N=512个通道的第5个卷积层处理后,形成了维数是512×4×4新张量,再使用最大池化后,此张量维数降低到512×2×2,即L=512×2×2=2048。最后经过两个全连层之后,CNN将输出12维张量。
在一些可行的实施例中,使用分类算法预估该预置个数的矩阵中的各个矩阵所对应的该多个属性中的各个属性的概率分布。具体的,即对于一组12维张量与其对应的类标签,使用SoftMax分类算法,计算出12维张量属于12个年龄区间的概率分布,再计算它的数学期望,即年龄估计值。在另一些可行的实施例中,在训练过程中,还可以引入了混淆矩阵,以评价训练效果,此处不作限定。
在一些可行的实施例中,使用该卷积神经网络模型对该人脸图像进行图像训练,得到预置个数的矩阵,上述例子为12维张量。需要说明的是,数字图像数据可以用矩阵来表示,因此可以采用矩阵理论和矩阵算法对数字图像进行分析和处理。最典型的例子是灰度图像,灰度图像的像素数据就是一个矩阵,矩阵的行对应图像的高(单位为像素),矩阵的列对应图像的宽(单位为像素),矩阵的元素对应图像的像素,矩阵元素的值就是像素的灰度值。
由于数字图像可以表示为矩阵的形式,所以在计算机数字图像处理程序中,通常用二维数组来存放图像数据。二维数组的行对应图像的高,二维数组的列对应图像的宽,二维数组的元素对应图像的像素,二维数组元素的值就是像素的灰度值。采用二维数组来存储数字图像,符合二维图像的行列特性,同时也便于程序的寻址操作,使得计算机图像编程十分方便。
一个二维数组(矩阵)中的每一个元素对应了图像的一个像素,当保存一幅图像时,不但要保存图像的位图数据矩阵,还要将每个像素的颜色保存下来,颜色的记录是利用颜色表来完成的。
颜色表,也叫颜色查找表,是图像像素数据的颜色索引表。以一个4色位图为例,则其颜色表有4个表项,表中每一行记录一种颜色的R、G、B值,这样,当表示一个像素的颜色时,只需要指出该颜色在第几行,即该颜色在表中的索引值即可。假设该4色位图的颜色表如表1-1所示,并假设该4色位图大小为8行8列。
自然界中的所有颜色都可以由红、绿、蓝(R、G、B)三种颜色合成,数字图像也是如此。针对红(绿/蓝)分量的多少,人为地划分为0~255共256个等级,0表示不含红色(绿/蓝)成分,255表示含有100%红色(绿/蓝)成分。根据红、绿、蓝各种不同的组合就能表示256×256×256种颜色,例如一个像素,当它的红、绿、蓝成分分别为255、0、255时显示为紫色。而对于灰度图像的像素,该像素的红、绿、蓝成分是相等的,只不过随着这三个分量数值的增大,像素颜色从黑色变成白色。从上面介绍可知,彩色数字图像可以由RGB彩色空间表示。彩色空间是用来表示彩色的数学模型,又被称为彩色模型。RGB彩色空间是最常用的一种彩色空间,但在计算机系统中表达颜色信息的空间不止这一种,此处介绍3种最常用的彩色空间。
103、通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果。
在本发明实施例中,当得到属性判断结果时,可以使用该人脸图像的真实属性和属性判断结果进行比对,然后通过交叉熵函数进行评价,得到评价结果,再通过反向传播,以更新网络中每个权重。
需要说明的是,在一些可行的实施例中,交叉熵函数是用来衡量人工神经网络的预测值与实际值的一种方式。与二次代价函数相比,它能更有效地促进训练。
在一些可行的实施例中,可以重复执行步骤102和103,使训练误差最小化,以便CNN网络模型输出值更接近目标值。
在本发明实施例中,CNN网络模型的人脸属性分析方法主要是利用CNN对输入图像进行特征提取与分类,从而对人脸属性进行分析,以实现对性别、年龄、表情等人脸属性的识别。在一些可行的实施例中,还可以使用到其他生物的脸部识别,或者其他图形识别,此处不作限定。
104、根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积神经网络模型。
在本发明实施例中,可以使用该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积神经网络模型。
请参阅图2,本发明实施例中一种卷积神经网络模型的训练方法的另一个实施例包括:
201、获取人脸图像。
202、对该人脸图像进行人脸对齐,得到对齐后的人脸图像。
在一些可行的实施例中,获取的人脸图像,可以首先进行人脸对齐,大小规格化到W×H,其次批量把大小为W×H的图像输入到如步骤101-104的CNN中训练,最后使用训练得到的网络模型,对人脸对齐和规格化的测试数据,进行结果预测,即人脸属性分析,如人的性别、年龄、表情等人脸属性。如在MA(Adience和MORPH库混合)数据库上,图像经过裁剪后规格化到64×64,训练集有6.6万幅图像,而测试集有约1.29万幅图像,以此为例,使用图2中的CNN结构,通过在164轮的训练。
203、使用该卷积神经网络模型对该对齐后的人脸图像进行训练。
204、通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果。
205、根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积神经网络模型。
本实施例中步骤201、203、204、205依次与上述实施例的步骤101、102、103、104相同,此处不赘述。
请参阅图3,本发明实施例中一种卷积神经网络模型的训练设备500的一个实施例包括:
获取模块301,用于获取人脸图像。
训练模块302,用于使用预置的卷积神经网络模型对该人脸图像进行图像训练,得到属性判断结果,该属性判断结果包括多个属性以及该多个属性中的每一个属性所对应的概率。
评价模块303,用于通过交叉熵函数和该人脸图像的真实属性对该属性判断结果进行评价,得到评价结果。
更新模块304,用于根据该评价结果更新该卷积神经网络模型中各个参数的权重,得到更新后的卷积神经网络模型。
请参阅图4,该训练模块302包括:
对齐子模块3021,用于对该人脸图像进行人脸对齐,得到对齐后的人脸图像。
第一训练子模块3022,用于使用该卷积神经网络模型对该对齐后的人脸图像进行训练。
请参阅图5,该训练模块302包括:
张量子模块3023,用于对该人脸图像进行图像张量化,得到图像张量化后的人脸图像。
第二训练子模块3024,用于使用预置的卷积神经网络模型对该图像张量化后的人脸图像进行图像训练。
请参阅图6,该训练模块302包括:
第三训练子模块3025,用于使用该卷积神经网络模型对该人脸图像进行图像训练,得到预置个数的矩阵。
预估子模块3026,用于使用分类算法预估该预置个数的矩阵中的各个矩阵所对应的该多个属性中的各个属性的概率分布。
估计子模块3027,用于根据该多个属性中的各个属性的概率分布估计该人脸图像的属性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。