掌桥专利:专业的专利平台
掌桥专利
首页

对象识别模型的训练方法及装置

文献发布时间:2023-06-19 10:57:17


对象识别模型的训练方法及装置

技术领域

本公开涉及对象识别,特别涉及用于对象识别的神经网络模型。

背景技术

近年来,静态图像或一系列运动图像(诸如视频)中的对象检测/识别/比对/跟踪被普遍地和重要地应用于图像处理、计算机视觉和图案识别领域,并且在其中起到重要作用。对象可以是人的身体部位,诸如脸部、手部、身体等,其它生物或者植物,或者任何其它希望检测的物体。人脸/对象识别是最重要的计算机视觉任务之一,其目标是根据输入的照片/视频来识别或验证特定的人/对象。

近年来,用于人脸识别的神经网络模型、特别是深度卷积神经网络(CNNs)模型在显著提高性能方面取得了突破性进展。给定一个训练数据集,CNN训练过程利用通用的CNN架构作为特征提取器以从训练图像中提取特征,然后通过使用各种设计的损失函数来计算损失数据以用于监督训练CNN模型。所以当CNN架构选定后,人脸识别模型的性能由损失函数和训练数据集驱动。目前,Softmax损失函数及其变体(基于边界的Softmax损失函数)是人脸/对象识别中常用的监督函数。

但是应指出,训练数据集往往并不是理想的数据集,一方面是因为它们并不能充分地描述现实世界,另一方面是现有的训练数据集即使经过清洗仍然存在噪声样本。而对于这样的训练数据集,现有的Softmax损失函数及其变体无法取得理想的效果,无法有效地提高训练模型的性能。

因此,需要改进的技术来改善对象识别模型的训练。

除非另有说明,否则不应假定本节中描述的任何方法仅仅因为包含在本节中而成为现有技术。同样,除非另有说明,否则关于一种或多种方法所认识出的问题不应在本节的基础上假定在任何现有技术中都认识到。

发明内容

本公开的一个目的是改进用于对象识别的识别模型的训练优化。本公开的另一个目的是改进图像/视频的对象识别。

本公开提出了改进的用于对象识别的卷积神经网络模型的训练,其中在训练过程中动态控制用于卷积神经网络模型的优化/更新幅度,也被称为收敛梯度下降速度,使之能够自适应地匹配训练过程的进展,从而即使对于含有噪声的训练数据集,仍可获得高性能的训练模型。

本公开还提出了利用通过上述训练得到的模型来进行对象识别,从而进一步获得改进的对象识别结果。

在一个方面,提供了一种用于对象识别的神经网络模型的优化装置,包括:损失确定单元,被配置为对于利用所述神经网络模型从训练图像集中提取的特征和带有权重函数的损失函数确定损失数据,以及更新单元,被配置为基于所述损失数据和更新函数来执行神经网络模型的参数的更新操作,其中,所述更新函数是基于所述神经网络模型的带有权重函数的损失函数推导而得到的,所述权重函数与所述损失函数在特定取值区间中同向地单调变化。

在另一方面,提供了一种用于对象识别的神经网络模型的训练方法,包括:损失确定步骤,用于对于利用所述神经网络模型从训练图像集中提取的特征和带有权重函数的损失函数确定损失数据,以及更新步骤,用于基于所述损失数据和更新函数来执行神经网络模型的参数的更新操作,其中,所述更新函数是基于所述神经网络模型的带有权重函数的损失函数推导而得到的,所述权重函数与所述损失函数在特定取值区间中同向地单调变化。

在还另一方面,提供了一种包括至少一个处理器和至少一个存储设备,所述至少一个存储设备其上存储有指令,该指令在由所述至少一个处理器执行时可使得所述至少一个处理器执行如本文所述的方法。

在仍另一方面,提供了一种存储有指令的存储介质,该指令在由处理器执行时可以使得执行如本文所述的方法。

从参照附图的示例性实施例的以下描述,本发明的其它特征将变得清晰。

附图说明

并入说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与描述一起用于解释本发明的原理。在附图中,相似的附图标记指示相似的项目。

图1示出了现有技术的利用卷积神经网络模型进行人脸识别/认证的概略示意图。

图2A示出了根据现有技术的卷积神经网络模型训练流程图。

图2B示出了根据现有技术的卷积神经网络模型训练结果的示意图。

图3A示出了图像特征向量在超球面流形的映射。

图3B示出了图像特征向量在通过卷积神经网络模型进行训练时的训练结果的示意图。

图3C示出了根据本公开的卷积神经网络模型训练结果的示意图。

图4A示出了根据本公开的卷积神经网络模型训练装置的框图。

图4B示出了根据本公开的卷积神经网络模型训练方法的流程图。

图5A示出了类内权重函数和类间权重函数的曲线图。

图5B示出了类内梯度和类间梯度的最终调整曲线。

图5C指示优化的梯度沿着切线方向。

图5D示出了与参数有关的类内梯度重调整函数和类间梯度重调整函数的曲线图。

图5E示出了与参数有关的类内梯度和类间梯度的最终调整曲线。

图5F示出了现有技术的类内梯度和类间梯度的调整曲线。

图6示出了根据本公开的卷积神经网络模型训练的基本概念流程图。

图7示出了根据本公开的第一实施例的卷积神经网络模型训练的流程图。

图8示出了根据本公开的第二实施例的卷积神经网络模型训练的流程图。

图9示出了根据本公开的第三实施例的卷积申请网络模型中的权重函数参数的调整流程图。

图10示出了根据本公开的第四实施例的卷积申请网络模型中的权重函数参数的调整流程图。

图11示出了根据本公开的第五实施例的卷积神经网络模型的在线训练的流程图。

图12示出了输入图像可作为训练数据集中某个对象的合适训练样本的示意图

图13示出了输入图像可作为训练数据集中新对象的合适训练样本的示意图。

图14示出了能够实现本发明的实施例的计算机系统的示例性硬件配置的框图。

具体实施方式

这里描述了与用于对象识别的模型训练优化相关的示例性可能实施例。在下面的描述中,为了说明的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践本发明。在其他情况下,不详细描述公知的结构和装置,以避免不必要地堵塞、遮盖或模糊本发明。

在本公开的上下文中,图像可指的是多种图像中的任一种,诸如彩色图像、灰度图像等。应指出,在本说明书的上下文中,图像的类型未被具体限制,只要这样的图像可经受处理以便可检测该图像是否含有对象即可。此外,图像可以是原始图像或者该图像的经处理的版本,诸如在对图像执行本申请的操作之前已经经受了初步的过滤或者预处理的图像的版本。

在本说明书的上下文中,图像含有对象指的是图像含有该对象的对象图像。该对象图像有时也可被称为图像中的对象区域。对象识别也即指的是在图像中的对象区域中的图像进行识别。

在本文中,对象可以是人的身体部位,诸如脸部、手部、身体等,其它生物或者植物,或者任何其它希望检测的物体。作为示例,可以以向量形式来表示对象的特征,尤其是代表性特征,这可被称为是对象的“特征向量”。例如在检测脸部的情况下,将选取人脸的代表性部分的像素纹理信息、位置坐标等作为特征来构成图像的特征向量。由此,基于所获得的特征向量,可以进行对象识别/检测/跟踪。应指出,特征向量可根据对象识别中所使用的模型而有所不同,而且并不特别被限制。

以下将参照附图来详细描述本发明的实施例。应注意,在附图中相似的附图标记和字母指示相似的项目,并且因此一旦一个项目在一个附图中被定义,则对于随后的附图无需再对其进行论述。

在本公开中,术语“第一”、“第二”等仅仅用于区分元件或者步骤,而不是要指示时间顺序、优先选择或者重要性。

图1示出了现有技术的利用深度人脸模型的人脸识别/认证的基本操作概念图,其中主要包括深度人脸模型的训练阶段以及应用阶段,而深度人脸模型可以例如为深度卷积神经网络模型。

在训练阶段中,首先将人脸图像训练集合输入深度人脸模型以获得人脸图像的特征向量,并且利用现有的损失函数,例如Softmax损失函数及其变体,来从特征向量获得分类概率P

在测试阶段,待识别的人脸图像或者待认证的人脸图像可被输入训练得到的深度人脸模型中以提取特征来进行识别或认证。具体而言,在实际的应用系统中,可以有具体两种应用:人脸/物体识别和人脸/物体验证。人脸/物体识别的输入一般为单张人脸/物体图像,通过训练好的卷积神经网络来识别当前图像中的人脸/物体是否为识别的对象;人脸/物体验证的输入一般为人脸/物体图像对,通过训练好的卷积神经网络来提取出输入图像对的特征对,最后根据特征对的相似度来判断输入的图像对是否为同一对象。

图1中示出了示例性的人脸认证操作。在操作中,将两个待认证的人脸图像输入训练得到的深度人脸模型中以认证这两个人脸图像是否是同一个人的人脸图像。具体而言,深度人脸模型可对于这两个人脸图像分别获得特征向量以构成特征向量对,然后确定这两个特征向量之间的相似性,例如相似性可通过余弦函数来确定。当相似性不小于特定阈值时可认为这两个人脸图像是同一个人的人脸图像,而当相似性小于特定阈值时可认为这两个人脸图像不是同一个人的人脸图像。

由以上描述可知,深度人脸模型的性能直接影响对象识别的精准度,而现有技术中采用了各种方式来训练深度人脸模型,例如深度卷积神经网络模型,以获得更加完善的深度卷积神经网络模型。以下将参照图2A来描述现有技术的深度卷积神经网络模型的训练过程。

首先,输入训练数据集,训练数据集可包括大量的对象图像,例如人脸图像。例如数万、数十万、数百万张对象图像。

然后,可对于所输入的训练数据集中的图像进行预处理,预处理操作可包括例如对象检测、对象对齐、规范化等等。特别地,对象检测可例如指的是从包含人脸的图像中检测到人脸并获取主要包含待识别人脸的图像,对象对齐可指的是将图像中处于不同姿态的对象图像对齐至同样的或者适当的姿态,由此基于对齐后的对象图像进行对象检测/识别/跟踪。人脸识别是一种常见的对象识别操作,并且对于人脸识别训练图像集,可以执行包括例如人脸检测、人脸对齐等等的预处理。应指出,预处理操作还可以包括本领域已知的其它类型的预处理操作,这里将不再详细描述。

然后,经过预处理的训练集图像被输入到深度卷积神经网络模型中以进行特征提取,卷积神经网络模型可采用本领域已知的各种结构和参数等等,这里将不再详细描述。

然后,通过损失函数,尤其是上述的Softmax损失函数及其变体来计算损失。Softmax损失函数及其变体(基于边界的Softmax损失函数)是人脸/物体识别中常用的监督信号。这些损失函数鼓励特征之间的分离,其目标是在理想情况下最小化类内距离,同时最大化类间距离。Softmax损失函数的常规形式如下式:

其中x

然后,根据所计算的损失数据通过反向传播(Back propagation)来更新卷积神经网络的参数。

然而,现有技术方法都假定给定理想训练数据集的情况下严格地最小化类内距离同时最大化类间距离,因此所采用的损失函数都旨在严格地最小化类内距离、同时最大化类间距离,这样在模型训练过程中进行更新/优化时所采用的收敛梯度尺度是固定的,这样可能导致由于当前训练数据集中的缺陷,例如噪声样本的干扰,而过拟合。

具体而言,在训练过程中,现有的训练方法是会先学习干净样本的特征使得模型能够有效识别大部分的干净样本;然后再沿着梯度方向不断对于噪声样本进行优化。然而不管训练样本之间的当前距离如何,优化的收敛梯度尺度是固定的。这样含有噪声的样本也可能以恒定的速度沿着错误的方向行进,这样因此到训练后期,噪声样本会错误地影射到其它对象的特征空间区域,造成模型过拟合。如图2B所示,噪声样本随着训练集合的处理而会被包含在对应于ID2的W2类样本中,而无法与干净样本有效地分离。这样导致训练效果总不是最优的,对被训练的模型造成影响,甚至可能导致对于ID2的人脸图像的识别错误。

此外,现有技术的模型训练过程中所采用的损失函数对于所提取的特征进行了相对复杂的转换,例如,从特征向量的域转换到了概率域,这样的转换必然带来一定的转换误差,可能导致精度降低,并且增加了计算开销。

而且,现有技术的模型训练过程中所采用的损失函数,例如Softmax损失函数及其变体,都是将类内距离和类外距离两者混合在一起来计算概率,这样类内距离和类外距离两者混合在一起,不便于提供针对性的分析和优化,这样导致模型训练的收敛可能不准确,无法获得进一步优化的模型。

本公开正是鉴于现有技术中的上述情况而提出的。在本公开中的模型优化方法中,可以动态控制模型训练过程期间的模型更新/优化幅度,特别是收敛梯度下降速度。特别地,收敛梯度下降速度可以自适应地匹配训练过程的进展,特别地随着训练过程的进行而动态变化,尤其在接近最佳训练结果附近时收敛越慢甚至停止。

由此可以防止噪声样本的过拟合,以保证模型训练能够有效适应训练数据集,从而即使对于含有噪声的训练数据集仍可获得高性能的训练模型。也就是说,即使对于可能包含噪声图像的训练数据集,仍然可以有效地将噪声图像与干净图像分隔开,最大可能地抑制过拟合,使得进一步优化模型训练,以获得改进的识别模型,并由此获得更好地人脸识别结果。

以下将结合附图来示例性地解释根据本公开的深度卷积神经网络模型的训练所涉及的特定参数,其中尤其涉及图像特征向量、类内损失和类外损失等。

在本公开的实现中,将所有训练样本的深度嵌入特征映射到超球面流形上,其中x

根据本公开的实现,提出了改进的权重函数以用于动态控制训练过程中的模型更新/优化幅度,即收敛梯度下降速度。

为了约束优化幅度,本公开的权重函数的设计思想是设计一个有效的限制梯度幅值的机制,即能够灵活地控制适合于具有噪声的训练数据集的梯度的收敛速度。也就是说,通过权重函数的使用,在卷积神经网络模型的训练过程中使用可变的幅度来控制训练收敛,而且在接近最优训练结果附近时,收敛速度会越来越慢甚至不执行,从而不会像现有技术那样强行固定收敛,而是收敛可以适当地停止或者减缓,避免了带噪声的样本的过拟合,保证模型能够有效适应训练数据集,从而从泛化方面提高训练模型的性能。

图3B示出了根据本公开的根据本公开的卷积神经网络模型训练结果的示意图,其中基本有效地与类别特征分隔开,而不会造成过拟合。具体而言,在训练过程中,在迭代早期阶段收敛性强,随着迭代过程的进行,在训练中期阶段梯度收敛能力变得越来越小,最后在训练晚期阶段梯度收敛甚至几乎停止,从而使得噪声特征基本不会影响被训练的模型。

图3C示出了分类后的基本状况,其中ID1,ID2,ID3分别指示三个类别,其中同一类别的训练图像的特征尽可能地被聚集在一起,即类内角度尽量小,而不同类别之间的训练图像的特征尽量分隔开,即类间角度尽量大。

以下将参照附图来描述本公开的对象识别模型训练的实施例。

图4A示出了根据本公开的用于对象识别的神经网络模型的优化装置的框图。该装置400包括损失确定单元401,被配置为对于利用所述神经网络模型从训练图像集中提取的特征确定损失数据,以及更新单元402,被配置为基于所述损失数据和更新函数来执行神经网络模型的参数的更新操作。其中,所述更新函数是基于所述神经网络模型的损失函数和相应的权重函数而得到的,所述权重函数与所述损失函数在特定取值区间中同向地单调变化。

在本公开的实施例中,所述神经网络模型可以为深度神经网络模型,并且所述获取的图像特征为图像的深度嵌入特征。

以下将结合附图来描述本公开的权重函数。

在本公开中,在如图3A中所示的训练样本的深度嵌入特征映射到超球面流形的情况下,权重函数可以约束训练样本和目标中心的优化梯度方向总是沿着超球面的切线运动速度。

根据本公开的实施例,权重函数和损失函数可以都是角度的函数,其中,所述角度为映射到超球面流形上的所提取的特征与神经网络模型的全连接层中的特定权重向量之间的夹角。特别地,该特定权重向量可以是训练图集中的某一类别对象的特征中心。例如,对于训练图像所提取的特征,该特定权重向量可以是该训练图像所属类别的目标特征中心和其它类别的目标特征中心,并且相应地,夹角可以包括类内角度和类间角度中的至少一个。

由此,可以直接优化特征向量之间的夹角作为损失函数目标,而无需如同现有技术那样将特征向量转换成交叉熵并使用交叉熵损失作为损失函数,从而可以保证损失函数目标与预测过程目标是一致的。具体而言,损失函数的目标可以是特定对象向量之间的角度,而在预测阶段,例如前述的对象验证阶段,基于提取的两个对象特征向量之间的角度来判断是否为同一对象,在此情况下预测过程的目标也是角度,由此损失函数的目标可以与预测过程的目标是已知的。这样,可以简化了确定损失数据以及基于其进行反馈的操作,减少了中间转换处理,降低了计算开销并避免了计算精度劣化。

根据本公开的实施例,权重函数与损失函数是相对应的。根据本公开的实施例,在损失函数包含至少一个子函数的情况下,权重函数可以与损失函数中所包含的至少一个子函数中的至少一个相对应。作为一个示例,权重函数可以为与损失函数中所包含的至少一个子函数中的一个子函数对应的一个权重函数。作为另一示例,权重函数可包含与损失函数中所包含的多于一个的子函数相对应的多于一个的子权重函数,这里该多于一个的子权重函数与该多于一个的子函数的数量相同。

根据本公开的实施例,同向单调变化指的是权重函数与损失函数在特定取值区间内随着取值的变化而同向地变化,例如随着取值的增加而同向地增大或减小。根据本公开的实施例,特定取值区间可以为特定角度取值区间,特别地为类内角度或类间角度所对应的优化角度区间。优选地,在如上所述的超球面流形映射的情况下,类内角度和类间角度可以是在[0,π/2]内进行优化的,因此所述特定角度取值区间是[0,π/2],并且优选地,所述权重函数与所述损失函数可以在所述特定角度取值区间中同向地单调变化,特别地可以同向地单调平滑变化。

根据本公开的实施例,权重函数可以是各种类型的函数,只要能够与损失函数在所述特定角度取值区间中同向地单调变化,并且在取值区间的两个端点附近具有截止点,特别地在取值区间的端点附近曲线斜率基本为零。

根据本公开的实施例,权重函数可以是为Sigmoid函数或类似函数,其表达式可为:

其中,S为控制Sigmoid型曲线的梯度的初始尺度参数;n、m分别为控制Sigmoid型曲线的斜率和水平截距的参数,这些参数实际上控制着灵活区间来抑制梯度的运动速度。由此可以由该权重函数获得作为角度的标量函数来重调节优化目标,即角度。如图5A示出了可能的权重函数的曲线图,其在0和π/2之间或者单调递增或者单调递减,而在接近于0和π/2的端点附近基本保持恒定的值,其中左侧曲线图可指的是用于类内损失的权重函数,右侧曲线图可指的是用于类间损失的权重函数,横轴指示角度取值范围,例如约为0到1.5,竖轴指示尺度范围,例如约为0到70,例如也可与图5D到5E的取值相似,但是应指出,其数值仅是示例性的,下文将对此详细描述。

根据一种实现,由于原始的损失的梯度幅值与角度的正弦函数有关,因此最终的梯度幅值也就与该权重函数与正弦函数的组合(例如,乘积)成比例。因此,在权重函数为这样的Sigmoid函数或者类似函数的情况下,在更新过程中的收敛梯度幅值可相应地被确定,如图5B所示,其中左侧曲线图可指的是类内损失的收敛梯度幅值,右侧曲线图可指的是类间损失的收敛梯度幅值。横轴指示角度取值范围,竖轴指示尺度范围,其数值仅是示例性的,例如可以与图5D到5E的取值相似。

根据本公开的实施例,权重函数的参数可根据训练数据和验证数据的平均表现来设定/选择。根据本公开的实施例,权重函数的参数,包括斜率参数和截距参数,例如上述Sigmoid函数或类似函数中的参数n,m等中的至少一个,还可被进行调整。

根据本公开的实施例,在一轮训练(可能经过特定次迭代)结束之后,可以根据特定条件来判断是否进一步调整该参数。作为示例,特定条件可与训练结果或者调整次数有关。作为一个示例,当达到预定的调整次数时可以不再进行参数调整。作为另一示例,可以将当次训练结果与先前训练结果之间的比较来选择。训练结果例如可以是通过本次训练所确定的模型来确定的损失数据。如果当前训练结果劣于先前训练结果,则不对参数进行调整,而如果当前训练结果优于先前训练结果,则可以尝试按照先前的参数调整方式来继续调整参数,直至达到预定的调整次数或者训练结果不再变优为止。

根据本公开的一个实施例,可以对于权重函数的一个参数,设定初始的两个参数值,然后分别利用每个参数值进行迭代的损失数据确定操作和更新操作,在各自的一次训练结束之后,选择导致训练结果(例如,训练后的模型导致的损失数据)更优的一个参数值,并且设定在该个参数值周围的另两个参数值作为下一次训练操作中所使用的权重函数的参数。由此重复地进行,直到达到预定的调整次数或者训练结果不再变优为止。作为示例,对于权重函数的一个参数n,初始值可设为1和1.2,并且在一轮迭代之后发现n=1的参数效果更优,则可进一步设定n的值为0.9,1.1,然后重复进行后续地迭代和调整,直到达到预定的调整次数或者训练结果不再变优为止。

根据实施例,对于权重函数中的多个参数,可以采用多种方式进行调整。作为一个示例,可以逐个参数的进行调整,即在将一个参数调整完成之后再调整另一个参数,每个参数可如上所述地调整,并且在其调整过程中其它参数可保持固定值。特别地,对于上述Sigmoid函数或类似函数可首先调整斜率参数,然后调整截距参数。作为另一个示例,可以对于多个参数同时进行调整,例如可以对于每个参数按照与先前调整方式相同的方式进行调整,从而使用新的一组参数值进行后续的训练。

举例而言,可以对于超参数设定初始的两组值,即第一组值和第二组值,并分别利用所设定的每组初始值进行模型训练以获得相应的验证数据集的性能。通过比较所获得的验证数据集的性能来选择其中较好的性能,并且在与较好性能对应的初始参数值的附近设定两组改进的参数值,并且利用这两组改进的参数值再次进行模型训练,依次迭代,直至确定最适当的超参数位置。

以下将描述根据本公开的损失函数。

根据本公开的实施例,用于计算损失数据的损失函数不特别受限。作为一个示例,可以采用一般的损失函数来计算损失数据,该损失函数例如可以是神经网络模型的原始损失函数,可以与夹角有关。

根据本公开的实施例,损失函数为在特定取值区间内基本单调变化的函数。作为一个示例,在特定取值区间为特定角度取值区间[0,π/2]的情况下,损失函数可以是夹角的余弦函数,而相应地,权重函数也将在该特定取值区间内与损失函数同向地单调变化。

根据本公开的另一个实现,提出了一种基于根据本公开的权重函数而确定的新损失函数,由此在用于对象识别的模型训练中利用该损失函数获取损失数据,并基于损失数据和权重函数来进行模型的更新/优化,从而可以进一步自适应地控制模型的更新/优化幅度,进一步改进模型的更新/优化。根据一个实施例,用于计算损失数据的损失函数可以是神经网络模型的损失函数与权重函数的组合。根据一个实施例,用于计算损失数据的损失函数可以是神经网络模型的损失函数与权重函数的乘积。特别地,这里神经网络模型的损失函数指的是未通过权重函数进行加权的原始损失函数,而用于计算损失数据的损失函数可指的是通过权重函数对原始损失函数进行加权而得到的加权函数。

根据本公开的实施例,待考虑的损失数据可以包括类内损失和类间损失两者。由此,用于模型训练的损失函数可以包括两个子函数:类内损失函数和类间损失函数。在前述的超球面流形映射的情况下,这两个子函数可以都与角度有关,分别为类内角度损失函数和类间角度损失函数。由此,可以分别针对类内损失和类外损失进行分析和优化,从而可以解耦类内梯度项和类间梯度项,有助于分别针对类内损失项和类间损失项进行分析和优化。

根据本公开的实现,本公开的损失函数可包括类内损失函数和类间损失函数,并且类内损失函数和类间损失函数中的至少一者可具有与之相对应的权重函数,从而可以在用于对象识别的模型训练中利用权重函数进行模型的更新/优化。例如,可以对于类内损失或类间损失,可以通过利用基于权重函数确定的类内更新函数或类间更新函数来进行模型更新/优化,从而一定程度上改进了模型更新/优化的控制。

根据本公开的实现,本公开的损失函数可包括类内损失函数和类间损失函数,并且类内损失函数和类间损失函数中的至少一者是基于与之相对应的权重函数而被确定的,从而类内损失函数和类间损失函数中的该至少一者为经相应的权重函数进行加权的加权函数。优选地,损失函数所包含的类内损失函数和类间损失函数两者都可以为经相应的权重函数进行加权的加权函数。

根据本公开的实施例,损失函数包括类内角度损失函数,其中,所述类内角度为映射到超球面流形上的所提取的特征与神经网络模型的全连接层中表示真值对象的权重向量之间的夹角,并且其中,所述更新函数是基于所述类内角度损失函数与所述类内角度的权重函数确定的。

根据本公开的实施例,类内角度损失函数主要旨在优化类内角度,特别地适度减小类内角度,因此类内角度损失函数应该为随着类内角度的减小而减小。也就是说,类内角度损失函数应该为在特定取值区间上单调递增的函数。相应地,类内角度的权重函数是非负的在特定取值区间上单调递增的函数,优选地平滑单调递增。

作为示例,类内角度取值区间是[0,π/2],所述类内角度损失函数可以是类内角度的余弦函数,特别地为取负值的类内角度的余弦函数。并且所述类内角度的权重函数在0附近具有水平截止点。

作为一个示例,类内角度损失函数可以是-

作为另一个示例,类内角度损失函数可以是基于权重函数而被确定的

根据本公开的实施例,所述损失函数进一步包括类间角度损失函数,并且其中,所述类间角度为映射到超球面流形上的所提取的特征与神经网络模型的全连接层中的其它权重向量之间的夹角,并且其中,所述更新函数是基于所述类间角度损失函数与所述类间角度的权重函数确定的。

根据本公开的实施例,类间角度损失函数主要旨在优化类间角度,特别地适度增大类间角度,因此类间角度损失函数应该为随着类间角度的增大而减小。也就是说,类内角度损失函数应该为在特定取值区间上单调递减的函数。相应地,类内角度的权重函数是非负的在特定取值区间上单调递减的函数,优选地平滑单调递减。

作为示例,类间角度取值区间是[0,π/2],所述类间角度损失函数可以是类间角度的余弦函数,特别地为类间角度的余弦函数。并且所述类间角度的权重函数在π/2附近具有水平截止点。

作为一个示例,类间角度损失函数可以是

作为另一个示例,类间角度损失函数可以是基于权重函数而被确定的

以下将描述根据本公开的更新函数以及更新单元的操作。

根据本公开的实施例,更新函数可以是基于损失函数与权重函数而确定的。根据一个实施例,更新函数可以是基于损失函数的偏导数与权重函数的。优选地,所述更新单元进一步配置为将所述损失函数的偏导数与所述权重函数进行乘积以确定更新梯度,以用于对神经网络模型进行更新。应指出,作为示例,这里所述的损失函数可以指的是神经网络模型中的初始损失函数,例如未经权重函数加权的损失函数。

根据本公开的实施例,在损失函数包括至少一个子损失函数的情况下,更新函数可以是基于该至少一个子损失函数中的至少一个,例如其偏导数,和与之相对应的权重函数而确定的。作为示例,更新函数可以是基于该至少一个子损失函数中的一个子损失函数,例如其偏导数,和与该子损失函数相对应的权重函数而确定的,作为另一示例,更新函数可以是基于多于一个的子损失函数,例如其偏导数,和分别与该多于一个的子损失函数对应的权重函数而确定的。

根据本公开的实施例,所述更新单元进一步配置为利用反向传播方法和所确定的更新梯度来更新神经网络模型的参数。在所述神经网络模型被更新之后,所述更新单元将利用更新后的神经网络模型进行操作。

根据本公开的实施例,在更新神经网络模型之后所确定的损失数据大于阈值且所述损失确定单元和所述更新单元所进行的迭代操作的次数未达到预定迭代次数时,所述更新单元将进行下一次迭代更新操作,直到所确定的损失函数小于等于阈值,或者迭代操作的次数已经达到预定迭代次数。作为示例,更新单元可包括判定单元来判定损失数据是否大于阈值,和/或判定迭代操作的次数是否已经达到预定次数,以及处理单元来根据判定结果执行更新操作。

以下将描述根据本公开的损失函数包含类内损失函数和类间损失函数两者及其相对应的权重函数的示例性实现。

为了约束优化程度,本公开的损失函数的构思是提供一个有效的限制梯度幅值的机制,能够在训练过程中对类内角度的减小和类间角度的增大进行适当的约束控制。因此,根据本公开的关于x

特别地,类内损失

其中,

在前向传播过程中,根据新损失函数SFace计算出当前的损失,其公式如下:

而在用于进行更新的反向传播过程中,根据反向传播算法的原理,用于参数更新的偏导数函数同样会由块梯度算子加权,具体公式如下:

其中,

其中,上式(5)-(7)可对应于根据本公开的更新函数。

上式(8)-(11)可通过数学推导运算直接得出,以下对式(8)的推导进行详细说明,并且应理解,其它式子可通过类似的数学推导计算得出。

对于

首先:

其偏导为:

因此可以得出:

因为如图5C所示,

如图3A所示,实际上有两个因素在重调节梯度,即控制训练样本和目标中心的移动速度,因此,可设定

众所周知,在开始训练时,初始的类内和类间角度距离

(1)函数

(2)函数ν

(3)考虑到训练数据存在噪声的情况,函数

为灵活控制梯度的移动速度以适应含有噪声的训练数据,提出了基于Sigmoid的权重函数

其中,S为控制两条Sigmoid型曲线的梯度的初始尺度参数;a、b为控制

使用根据本公共的权重函数对于类内损失和类外间损失进行控制,从而控制梯度收敛速度以适合于不同的训练集。优选地,类内角度的权重函数应该随着类内角度变小而平滑单调递减,并且可以通过调整该权重函数的超参数来使得梯度的幅值更加适合于训练数据集。类间角度的权重函数应该随着类间角度变大而平滑单调递减,并且可以通过调整该权重函数的超参数来使得梯度的幅值更加适合于训练数据集。

以下将描述根据本公开的模型训练方法和现有的基于softmax的训练方法的区别。

除了前文所述的原始Softmax函数之外,为了进一步提高精度,现有技术还引入大边界的思想到

其中,在NSoftmax方法中

其中,在NSoftmax方法和CosFace方法中

应指出,上述偏导公式(18)和(19)仅仅是为了与本公开的技术方案进行比较而被推导得出的,其推导过程如下。但是目前的现有技术实现中实际上并不一定进行此公式变换。

公式(18)的推导如下:

首先根据链式求导法则,可得到:

其中:

因此可以得到:

公式(19)的推导如下:

进一步来说,基于softmax的损失函数等价于下面的公式:

其中

应指出,上述公式(25)仅仅是为了与本公开的技术方案进行比较而被推导得出的,但是目前的现有技术实现中实际上并不一定将损失函数推导为公式(25)。

而且,因为整个训练过程中深度神经网络的参数只在反向传播过程中进行更新,且公式(17)和公式(25)的反向传播函数是相同的,即

因此,在模型训练阶段,公式(17)和公式(25)是等价的。

从上面重写的损失函数可以看出,基于Softmax的损失函数可以被认为是一种在球面上有特定优化速度限制的度量学习方法。根据对已有方法的实验分析,大部分的θ

为了能够更直观地比较,我们将NSoftmax,CosFace和ArcFace方法的类内梯度调整函数

由图5E和5F之间的比较可明了,基于softmax的损失函数实际上并不能精确地控制类内和类间的优化过程,特别而言,现有技术中损失函数相对应的梯度曲线基本是相同形状的曲线集合,即梯度幅值变化遵循类似的规律变化,由此在模型训练/优化过程中梯度幅值变化是基本固定的,从而无法有效地避免过拟合;而根据本公开的损失函数却可以精确地控制优化过程,特别的,通过利用参数来精确梯度曲线的梯度幅值变化规律以适应不同的训练数据集,有效地减少甚至避免过拟合。

根据本公开,该装置还可包括图像特征获取单元,被配置为利用所述神经网络模型从训练图像集中获取图像特征。图像特征的获取可通过本领域中已知的方式来进行,这里将不再详细描述。当然,图像特征单元可以位于根据本公开的装置之外。

应指出,图4A仅仅是训练装置的概略性结构配置,训练装置还可以包括其他可能的单元/部件(例如,存储器等)。存储器可以存储由训练装置产生的各种信息(例如,训练集图像特征、损失数据、函数参数值等)、用于训练装置操作的程序和数据等。例如,存储器可以包括但不限于随机存储存储器(RAM)、动态随机存储存储器(DRAM)、静态随机存取存储器(SRAM)、只读存储器(ROM)、闪存存储器。作为示例,存储器还可以位于训练装置之外。训练装置可以直接或间接(例如,中间可能连接有其它部件)连接到存储器,以进行数据的存取。存储器可以是易失性存储器和/或非易失性存储器。

应指出,上述各个单元仅是根据其所实现的具体功能划分的逻辑模块,而不是用于限制具体的实现方式,例如可以以软件、硬件或者软硬件结合的方式来实现。在实际实现时,上述各个单元可被实现为独立的物理实体,或者也可由单个实体(例如,处理器(CPU或DSP等)、集成电路等)来实现。此外,上述各个单元在附图中用虚线示出指示这些单元可以并不实际存在,而它们所实现的操作/功能可由处理电路本身来实现。

应指出,除了包括多个单元之外,上述的训练装置可采用多种其它形式来实现,例如可以是通用处理器,也可以是专用处理电路,例如ASIC。例如,训练装置能够由电路(硬件)或中央处理设备(诸如,中央处理单元(CPU))构造。此外,训练装置上可以承载用于使电路(硬件)或中央处理设备工作的程序(软件)。该程序能够存储在存储器(诸如,布置在存储器中)或从外面连接的外部存储介质中,以及经由网络(诸如,互联网)下载。

根据本公开的实施例,提出了一种用于对象识别的神经网络模型的训练方法,如图4B所示,该方法500包括损失确定步骤502,用于对于利用所述神经网络模型从训练图像集中提取的特征确定损失数据,以及更新步骤504,用于基于所述损失数据和更新函数来执行神经网络模型的参数的更新操作,其中,所述更新函数是基于所述神经网络模型的损失函数和相应的权重函数而得到的,所述权重函数与所述损失函数在特定取值区间中同向地单调变化。

根据本公开,该方法还可包括图像特征获取步骤,用于利用所述神经网络模型从训练图像集中获取图像特征。图像特征的获取可通过本领域中已知的方式来进行,这里将不再详细描述。当然,图像特征获取步骤可不被包含在根据本公开的方法中。

应指出,根据本公开的该方法还可相应地包括上文所述的各种操作,这里将不再详细描述。应指出,根据本公开的方法的各个步骤/操作可以有上述的各单元来执行,也可由各种形式的处理电路来执行。

以下将参照图6来描述根据本公开的模型训练操作。图6示出了根据本公开的模型训练操作的基本流程。

首先,输入训练数据集,训练数据集可包括大量的对象图像,例如人脸图像。例如数万、数十万、数百万张对象图像。

然后,可对于所输入的训练数据集中的图像进行预处理,预处理操作可包括例如对象检测,对象对齐等等。以人脸识别为例,预处理可以包括人脸检测,例如从包含人脸的图像中检测到人脸并获取主要包含待识别人脸的图像,人脸对齐属于用于进行人脸识别的规范化操作。脸部对齐的主要目的在于通过图像向着一些规范的形状或构造进行对齐的操作,来消除不希望的类内变化。应指出,预处理操作还可以包括本领域已知的其它类型的预处理操作,这里将不再详细描述。

然后,经过预处理的训练集图像被输入到卷积神经网络模型中以进行特征提取,卷积神经网络模型可采用本领域已知的各种结构,这里将不再详细描述。

然后,通过损失函数来计算损失。损失函数可以是本领域已知的函数,或者是根据本公开提出的基于权重函数的损失函数。

然后,根据所计算的损失数据通过反向传播(Back propagation)来更新卷积神经网络的参数。应指出,在反向传播中采用根据本公开所限定的更新函数来进行卷积神经网络模型的参数更新。更新函数如上文所述地被限定,这里将不再详细描述。

现有的无约束学习方法将噪声样本严格地拖拽到错误的标识上,从而使噪声样本过度拟合。而根据本公开的模型训练在一定程度上缓解这一问题,因为它以一种温和的方式优化了噪声样本。

根据本公开的实施例,通过使用改进的权重函数以用于动态控制训练过程中的模型更新/优化幅度,即梯度下降速度,使得能够与现有技术相比进一步优化用于对象识别的模型的训练,例如卷积神经网络模型,从而能够获得更加优化的对象识别模型,继而进一步提高对象识别/认证的精度。

此外,在本公开的实施例中,直接优化类内角度和类间角度作为损失函数目标,而不是使用交叉熵损失作为损失函数,保证与预测过程目标一致,从而简化了训练过程中的中间过程,降低了计算开销且提高了优化精度。

而且,本公开的实施例中,损失函数分别考虑了类内损失和类间损失,这样解耦了类内梯度项和类间梯度项,有助于分别分析类内梯度项和类间梯度项的损失并指导类内梯度项和类间梯度项的优化。特别地,分别对类内损失和类间损失使用适当的权重函数来控制梯度的收敛速度,防止噪声训练样本的过度拟合,从而即使对于含有噪声的训练集仍可获得优化的训练模型。

以下将通过实验比较本公开与现有技术中的模型训练方法的效果。

实验1:在小规模训练集上进行验证

训练集:CASIA-WebFace,包括10,000个人物身份,共500,000张图像。

测试集:YTF,LFW,CFP-FP,AGEDB-30,CPLFW,CALFW

评估准则:1:N TPIR(真阳性识别率,Rank1@10

卷积神经网络架构:RestNet50

现有技术比较:Softmax,NSoftmax,SphereFace,CosFace,ArcFace,D-Softmax

实验结果如下表1所示,其中SFace是根据本公开的技术方案。

表1:本公开的训练操作和现有技术的结果对比

实验2:在大规模训练集上进行验证

训练集:MS1MV2,包括85,000人物身份,共5,800,000张图像.

评测集:LFW,YTF,CPLFW,CALFW,IJB-C

评测准则:1:N TPIR(True Positive Identification Rate,Rank1@10

卷积神经网络架构:RestNet100

现有技术比较:ArcFace

实验结果如下表2和3所示,其中SFace是根据本公开的技术方案。

表2:本公开的训练操作和现有技术的结果对比

表3:本公开的训练操作和现有技术的结果对比

实验结果表明,根据本公开的模型训练方案与现有技术相比具有更好的性能。

以下将参照附图来详细描述根据本公开的示例性实现。应指出,以下的描述主要旨在清楚阐述根据本公开的训练操作过程,而其中的一些步骤或者操作并不是必需的,例如前处理步骤和提取特征步骤并不是必需的,而根据本公开的操作可以直接基于所接收到的特征来执行。

图7示出了根据本公开的第一实施例的使用本公开所提出的联合损失函数进行卷积神经网络模型训练的流程。根据本公开的第一实施例的模型训练过程包括如下步骤。

S7100:通过前处理获得网络训练数据

在此步骤中,输入为带有对象或者人脸真实标记的原始图像,然后通过已有的一系列前处理操作将输入原始图像转化为满足卷积神经网络要求的训练数据,这一系列前处理包括人脸或对象检测,人脸或对象对齐,图像增广、图像归一化等等。

S7200:使用当前卷积神经网络提取特征

在此步骤中,输入为带有对象或者人脸的已满足卷积神经网络要求的图像数据,然后利用已选定的卷积神经网络结构和当前对应的参数提取图像特征。卷积神经网络的结构可以为常用的网络结构,如VGG16,ResNet,SENet等。

S7300:根据提出的加权类内损失函数和加权类间损失函数计算当前的联合损失

在此步骤中,输入为已经提取的图像特征和卷积神经网络最后的全连接层,然后根据提出的联合加权损失函数分别计算当前的类内损失和类间损失。具体的损失函数定义请详见前文的式(2)~(4)介绍。

S7400:判断是否结束训练过程

在此步骤中,可以通过某些预先设定的条件来判断是否结束训练。预先设定的条件可包括损失阈值条件、迭代次数条件、梯度下降速度条件等等。在满足至少一个条件的情况下可以结束训练,并且转到S7600,如果预先设定的条件都不满足则转到S7500。

作为一个示例,可通过设定阈值来进行判断。在此情况下,输入为前述步骤所计算的损失数据,包括类内损失数据和类间损失数据。可通过将损失数据与设定的阈值相比较来进行判断,比如当前损失是否大于给定阈值。如果当前损失小于等于给定阈值,则结束训练。

根据一种实现,所设定的阈值可以是分别针对类内损失数据和类间损失数据设定的阈值,并且只要类内损失数据和类间损失数据中的任一个小于等于对应的阈值,则就结束训练。根据另一实现,所设定的阈值可以是总体损失阈值,类内损失数据和类间损失数据的总体损失值与该总体损失阈值进行比较,并且在小于该总体损失阈值的情况下结束训练。该总体损失值可以是内损失数据和类间损失数据的各种组合,例如求和、加权求和等。

作为另一个示例,可以通过设定预定训练迭代次数来进行判断,比如当前训练迭代次数是否达到预定训练次数。在此情况下,输入为对已经进行的训练迭代操作的计数,并且在训练迭代次数已经达到预定训练次数时结束训练。

否则,当上述预定条件都不满足时则继续进行下一次训练迭代过程。例如,如果损失数据大于预定阈值且迭代次数小于预定训练迭代次数,则继续下一次训练迭代过程。

S7500:更新卷积神经网络参数

在此步骤中,输入是S7300中计算得到的联合损失,并且利用根据本公开的权重函数来进行卷积神经网络模型的参数的更新。

具体而言,根据本公开的基于权重函数的更新函数,例如前文所述的偏导数函数(式(5)~式(11))计算出当前损失对卷积神经网络输出层的梯度,再利用反向传播算法来更新S7200的卷积神经网络参数,并把更新后的神经网络回传到S7200。

S7600:输出训练好的CNN模型

在这个步骤中,我们将CNN模型结构中所有层的当前参数即为训练好的模型,由此能够获得优化的神经网络模型。

在本实施例中,利用了提出的类内损失函数和类间损失函数两者来协同控制梯度下降速度,能够在类内损失和类间损失的贡献找到很好的平衡,从而训练出具有更好泛化性的模型。

图8示出了根据本公开的第二实施例的使用本公开所提出的联合损失函数进行卷积神经网络模型训练的流程。在本实施例中,使用本公开所提出的联合损失函数进行分段式卷积神经网络模型训练,根据本公开的第二实施例的模型训练过程包括如下步骤。

S8100:通过前处理获得网络训练数据

此步骤的操作与S7100的操作相同或相似,这里将不再详细描述。

S8200:使用当前卷积神经网络提取特征

此步骤的操作与S7200的操作相同或相似,这里将不再详细描述。

S8300:根据提出的加权类内损失函数计算类内损失作为当前的损失。

输入为已经提取的图像特征和卷积神经网络最后的全连接层,然后根据本公开的加权类内损失函数计算当前的类内损失。该加权类内损失函数定义可如上文的式(2),这里将不再详细描述。

S8400:判断是否为前期训练过程

在此步骤中,可以通过某些预先设定的条件来判断是否为前期训练,该预定设定的条件可包括损失阈值条件、迭代次数条件、梯度下降速度条件等等。在满足至少一个上述条件的情况下可以判断前期训练可以结束,并且转到S8600,如果预先设定的条件都不满足则判断需要继续进行前期训练,并转到S8500。

作为示例,在满足当前的梯度下降速度小于等于给定阈值、当前类内损失小于给定阈值、或者当前训练迭代次数已经达到给定前期训练迭代次数中的任一个的情况下,可认为前期训练可以结束,并且转到S8600中以进行后期训练操作,其中将利用加权类间损失函数来进行训练。

作为示例,在上述条件可能都无法满足的情况下,即梯度下降速度大于给定阈值、当前类内损失大于给定阈值且当前训练迭代次数仍未达到给定前期训练迭代次数,则认为需要继续进行前期训练,并且将转到S8500。

S8500:根据计算的类内损失和类内权重函数利用反向传播算法更新卷积神经网络的参数

在此步骤中,输入是S8300中计算得到的类内损失,需要根据重新推导的偏导数函数先计算出当前的类内损失对卷积神经网络输出层的梯度,再利用反向传播算法来更新卷积神经网络模型的参数,并把更新后的神经网络模型参数回传到S8200。推导的偏导数公式如下:

S8600:在针对类内损失已经优化了训练模型的参数之后,进行针对类间损失进行训练模型的参数优化。

作为示例,可以使用所提出的加权类内损失函数和加权类间损失函数计算当前的联合损失。具体而言,输入为已经提取的图像特征和卷积神经网络最后的全连接层,然后根据提出的联合加权损失函数分别计算当前的类内损失和类间损失以获得联合损失。具体的损失函数定义请详见前文的式(2)~(4)介绍。

或者,作为一个示例,可以如前述那样采用本公开所提出的加权类间损失函数计算类间损失,然后将所计算的类间损失以及前述前期训练结束时的类内损失之和作为当前联合损失。

S8700:判断是否结束训练过程

在此步骤中,可以通过某些预先设定的条件来判断是否结束训练。预先设定的条件可包括损失阈值条件、迭代次数条件、梯度下降速度条件等等。在满足至少一个条件的情况下可以结束训练,并且转到S8900,如果预先设定的条件都不满足则转到S8800。

本步骤的具体操作可与前述S7400的操作相同或相似,这里将不再详细描述。

S8800:更新卷积神经网络参数

在此步骤中,输入是S8600中计算得到的联合损失,根据前文推导的偏导数函数(公式(5)~公式(11))先计算出当前类间损失对卷积神经网络输出层的梯度,再利用反向传播算法来更新卷积神经网络模型参数,并把更新后的卷积神经网络模型参数回传到S8200以进行下一次迭代训练。

作为一个示例,优选地,在此情况下,下一次迭代过程中的步骤S8300-S8500可直接省略,可以直接从步骤S8200转到步骤S8600,从而可以简化训练过程。例如,可以在前期训练结束之后数据传送中添加指示符以指示前期训练结束,然后在迭代训练过程中如果识别到这样的指示符则表示可以跳过前期训练过程。

作为示例,步骤S8200中可进一步包括指示符检测步骤,其用于检测是否存在指示前期训练结束的指示符。作为一个示例,可以在步骤S8400中判断前期训练结束之后,向步骤S8200反馈回指示前期训练结束的指示符,从而在后期训练的反馈更新操作中,在检测到该指示符的情况下直接跳过前期训练过程。作为另一示例,可以在步骤S8400中判断前期训练结束之后,在转到后期训练时在数据流中加入指示前期训练结束的指示符,并且在后期训练的反馈更新操作中将该指示符反馈到步骤S8200,步骤S8200在检测到该指示符的情况下可跳过前期训练过程。

S8900:输出训练好的CNN模型。

此步骤与前述步骤S7600的操作相同或相似,这里将不再详细描述。

实施例2相较于实施例1,简化了权重函数的参数调节过程,加速了模型的训练。优先找到针对当前的数据集最优的类内损失权重函数,利用类内损失约束模型训练过程,将联合损失快速迭代下降到一定程度;之后再找到针对当前数据集和联合损失的情况下最优的类间权重函数,利用类内损失和类间损失同时精细约束模型训练过程,从而较快得到最终的训练模型。

应指出,上述流程图所示的流程主要对应于在类内权重函数和类间权重函数的参数保持不变的情况下执行的,而如前文所述,可以进一步调整类内权重函数和类间权重函数的参数,以进一步优化权重函数的设计。

以下将参照附图来描述根据本公开的第三实施例。图9示出了根据本公开的第三实施例的权重函数参数的调整过程。

S9100:通过前处理获得网络训练数据

此步骤的操作与S7100的操作相同或相似,这里将不再详细描述。

S9200:进行卷积神经网络模型训练

此步骤可采用根据第一和第二实施例中的任一个的操作来进行卷积神经网络模型训练,以获得根据本公开的优化的卷积神经网络模型。

S9300:判断是否进行权重函数参数调整

在此步骤中,可以通过某些预先设定的条件来判断是否需要进行参数调整,该预定设定的条件可包括调整次数条件、卷积神经网络性能条件等等。在满足至少一个上述条件的情况下可以判断调整操作可以结束,并且转到S9500,如果预先设定的条件都不满足则判断需要继续进行调整操作,并转到S9400。

作为示例,在所执行的参数调整次数已经达到预定的调整次数,或者当前卷积申请网络模型性能劣于先前卷积神经网络模型性能的情况下,则认为无需再进行参数调整操作,即调整操作结束。否则,如果参数调整次数尚未达到预定的调整次数且当前卷积申请网络模型性能优于先前卷积神经网络模型性能,则判断需要继续进行调整。

S9400:设定新的权重函数参数

在此步骤中,可以尝试按照特定的参数调整方式来继续调整参数,直至达到预定的调整次数或者训练结果不再变优为止。

作为示例,特定的参数调整方式可以是按照一定规则来进行参数调整,例如参数以特定步长或者遵循特定的函数而增大或减小。作为另一示例,参数调整可以遵循先前调整方式而进行。作为示例,权重函数的参数调整可如上文所述地进行。

S9500:输出经调整的权重函数的参数

在这个步骤中,我们输出经调整的权重函数的参数,由此能够获得更为优化的权重函数,继而提高后续卷积神经网络模型训练的性能。

以下将参照附图描述根据本公开的第四实施例,图10示出了根据本公开的第四实施例的权重函数参数的调整过程。

S10100:通过前处理获得网络训练数据

此步骤的操作与S7100的操作相同或相似,这里将不再详细描述。

S10200:进行卷积神经网络模型训练

此步骤可采用根据第一和第二实施例中的任一个的操作来进行卷积神经网络模型训练,以获得根据本公开的优化的卷积神经网络模型。

应指出,权重函数的参数设定了两个初始值,从而在此步骤中,所确定的卷积神经网络模型也就是为与两个参数值一一对应的两个卷积神经网络模型。

S10300:将这两个卷积神经网络模型的性能进行比较,以选择性能较优的卷积神经网络模型。

S10400:判断是否进行权重函数参数调整

在此步骤中,针对S10300中所选的性能较优的卷积神经网络模型,可以通过某些预先设定的条件来判断是否需要进行参数调整,该预定设定的条件可包括调整次数条件、卷积神经网络性能条件等等。在满足至少一个上述条件的情况下可以判断调整操作可以结束,并且转到S10500,如果预先设定的条件都不满足则判断需要继续进行调整操作,并转到S10600。此步骤的操作与在先的步骤S9300相同或相似,这里将不再详细描述。

S10500:设定新的权重函数参数

在此步骤中,可以尝试按照特定的参数调整方式来继续调整参数,直至达到预定的调整次数或者训练结果不再变优为止。此步骤的操作与在先的步骤S9400相同或相似,这里将不再详细描述。

S10600:输出经调整的权重函数的参数

在这个步骤中,我们输出经调整的权重函数的参数,由此能够获得更为优化的权重函数,继而提高后续卷积神经网络模型训练的性能。

应指出,在上述实施例中,主要介绍了针对一个参数的调整,而对于权重函数中可能的两个或者更多个参数的调整,例如可以采用各种方式,诸如上文所述的各种实现方式来进行。

根据本公开的实现,在损失函数包括类内损失函数和类间损失函数两者的情况下,需要对于用于类内损失的权重函数和用于类间损失的权重函数进行参数调整。作为一种实现,可以先调整用于类内损失的权重函数的参数,然后再调整用于类间损失的函数的参数,作为另一种实现,也可同时调整类内损失的权重函数和类间损失的权重函数的参数。各函数的参数的具体调整过程可采用多种方式来实现。

作为一个示例,首先在设定了类内和类间权重函数的初始参数之后,然后进行前述的卷积神经网络模型训练,在执行预定次数的迭代或者损失满足阈值要求之后,然后进一步调整类内权重函数的参数,直到找到无法导致卷积神经网络模型所确定的损失数据进一步优化的参数。应指出,在此情况下,类间权重函数可一直保持初始参数。然后,基于所优化的类内权重函数,以与上述前期训练基本类似的操作来进行类间权重参数的参数调整,直到找到无法导致卷积神经网络模型所确定的损失数据进一步优化的参数。从而可以最终确定最优的类内权重函数和类间权重函数,而且也能够确定最优的卷积神经网络模型。

作为另一个示例,可以在一轮迭代训练过程结束之后再判断是否需要进行参数调整,并且在需要优化的情况下设定待调整参数的值,例如类内权重函数和类外权重函数两者的值。基于此进行新一轮的迭代训练,直到参数调整结束。

应指出,在上述实施例中所描述的卷积申请网络模型的训练属于离线训练,即利用已经选定好的训练数据集/图像集来进行模型训练,并且将训练完成的模型直接用于人脸/对象识别或验证。根据本公开,卷积神经网络模型也可进行在线训练,在线训练流程指的是在利用训练好的模型进行人脸识别/验证的过程中,将识别后的图片中的至少一些补充到训练图像集中,从而可以在识别过程中进行模型的训练和更新优化,从而所得到的模型进一步得到改进,能够更加适合于待识别的图像集,继而实现良好的识别效果。

以下将详细描述根据本公开的第五实施例,该第五实施例涉及卷积神经网络模型的在线训练。图11示出了根据本公开的第五实施例的在应用系统中利用我们提出的损失函数在线学习更新训练好的卷积神经网络模型的流程。

S11100:对所输出的待识别/认证的人脸/对象图像进行前处理

在此步骤中,输入为带有对象或者人脸真实标记的原始图像,然后通过已有的一系列前处理操作将输入原始图像转化为满足卷积神经网络要求的训练数据,这一系列前处理包括人脸或对象检测,人脸或对象对齐,图像增广、图像归一化等,以满足卷积神经网络模型的要求。

S11200:使用当前卷积神经网络提取特征

此步骤与前述实施例中的提取特征的操作基本相同,这里将不再进行详细描述。

S11300:根据提取的特征进行人脸/物体识别或验证

此步骤中,根据已经提取的图像特征对人脸/物体进行识别或验证,此处的操作可采用本领域已知的多种方式来进行,这里将不再进行详细描述。

S11400:根据提取的特征和卷积申请网络模型最后的全连接层计算二者之间的角度

此步骤中,输入为已经提取的图像特征和卷积神经网络最后的全连接层的权重矩阵,然后根据定义的角度计算公式计算当前提取的图像特征和每一维权重矩阵的角度。具体的角度计算公式定义如下:

其中,x为提取的图像特征,W={W

S11500:判断是否为合适的训练样本

在此步骤中,输入为上一步骤计算出的角度信息,可以通过某些预先设定的判断条件来判断输入图像是否为合适的训练样本。合适的训练样本是指输入图像可以根据计算的角度判断出不属于原训练集中的任一对象,或者属于原训练集中的某个对象,但是该输入图像的特征与该对象的特征中心有一定距离,表明该图像对于该对象来说是比较难判别的样本,即为合适的训练样本。

预先设定的条件可指的是输入图像的特征与特定对象的特征中心的角度距离是否大于等于特定阈值。如果大于等于特定阈值,则可认为该训练样本为合适的训练样本。

作为示例,如果所输入的图像样本被识别为不属于卷积神经网络模型中的任一类别,则该图像样本可能属于新的对象类别,则必然适合作为训练样本。作为示例,如果所输入的图像样本被识别为属于卷积神经网络模型的某一类别,但是该图像样本的特征与该类别的特征中心之间的角距离(角度值)大于预定阈值,则认为所输入的图像样本适合作为训练样本。

应指出,上述步骤S11300和S11400可以结合在一起。具体而言,在进行人脸/对象识别时,如果识别不属于原训练集中的任一对象则不再进行角度距离的计算,而当识别属于原训练集中的某一对象时则仅计算其与该对象的特征中心的角度距离。这样可以适当地简化计算过程,降低计算开销。

图12示出了输入图像为训练数据集中某个对象的合适训练样本的示意图。如图12所示,x

图13示出了输入图像为新对象的合适训练样本的示意图。

在此步骤中,如果确定图像样本为合适的训练样本,则转到步骤S11600,否则直接结束。

S11600:利用所新确定的合适的训练样本来进行对象识别模型的训练。

特别而言,可以将新确定的合适训练样本作为新的训练集,然后利用根据本公开的模型训练操作来进行模型训练。作为示例,可以采用根据本公开的第一和第二实施例所述的模型训练操作来基于新的训练集进行模型训练,而且用于训练模型的权重函数的参数也可根据本公开的第三和第四实施例进行调整。

根据一种实现,此步骤执行的训练可以仅针对所确定的合适训练样本来进行。根据另一种实现,此步骤执行的训练可针对所确定的合适训练样本与原训练集的组合训练集来进行。

根据一种实现,此步骤所执行的训练可以实时地进行,即每当确定新的合适训练样本时,就进行模型训练操作。根据另一种实现,此步骤所执行的训练可以定期地进行,例如在积攒了特定数量的新合适训练样本之后在进行模型训练操作。

作为一个示例,在合适的训练样本为原训练数据集中的某个对象的合适训练样本的情况下,通过以下操作来执行模型训练。具体而言,基于训练样本的特征,根据本公开的加权类内损失函数和加权类间损失函数计算当前的联合损失,并且根据计算的联合损失和类内及类间权重函数利用反向传播算法更新卷积神经网络的参数。更新后的神经网络回传到S11200用于下一次识别/验证过程。

作为另一示例,在合适的训练样本为不属于原训练数据集的任一对象的新训练样本的情况下,可通过如下操作来执行模型训练。具体而言,首先,根据提取的特征调整CNN最后的全连接层的权重矩阵。此步骤中,输入的是被判定为新对象的特征和当前全连接层的权重矩阵W={W

第五实施例能够在实际应用过程中利用在线学习的方式不断优化模型,使得模型对真实应用场景具有更好的适应性。能够在实际应用过程中利用在线学习的方式扩展模型的识别能力,使得模型对真实应用场景具有更好的灵活性。

图14是示出可实施本发明的实施例的计算机系统1000的示例性硬件配置的框图。

如图14所示,计算机系统包括计算机1110。计算机1110包括处理单元1120、系统存储器1130、不可移除非易失性存储器界面1140、可移除非易失性存储器界面1150、用户输入界面1160、网络界面1170、视频界面1190、和输出外围界面1195,它们通过系统总线1121连接。

系统存储器1130包括ROM(只读存储器)1131和RAM(随机存取存储器)1132。BIOS(基本输入输出系统)1133驻留在ROM 1131中。操作系统1134、应用程序1135、其它程序模块1136和一些程序数据1137驻留在RAM 1132中。

不可移除非易失性存储器1141(诸如硬盘)连接到不可移除非易失性存储器界面1140。不可移除非易失性存储器1141可存储诸如操作系统1144、应用程序1145、其它程序模块1146以及一些程序数据1147。

可移除非易失性存储器(例如软盘驱动器1151和CD-ROM驱动器1155)连接到可移除非易失性存储器界面1150。例如,软盘1152可插入软盘驱动器1151,并且CD(光盘)1156可插入CD-ROM驱动器1155。

诸如鼠标1161和键盘1162的输入设备连接到用户输入界面1160。

计算机1110可通过网络界面1170连接到远程计算机1180。例如,网络界面1170可经局域网1171连接到远程计算机1180。可替换地,网络界面1170可连接到调制解调器(调制器-解调器)1172,并且调制解调器1172经广域网1173连接到远程计算机1180。

远程计算机1180可包括诸如硬盘的存储器1181,其存储远程应用程序1185。

视频界面1190连接到监视器1191。

输出外围界面1195连接到打印机1196和扬声器1197。

图14所示的计算机系统仅是说明性的,并且决不打算限制本发明、其应用或者使用。

图14所示的计算机系统可对于任一实施例被实现为孤立计算机,或者设备中的处理系统,其中可去除一个或多个不必要的组件或者可添加一个或多个附加的组件。

本发明可被用于许多应用。例如,本发明可被用于监测、识别、跟踪照相机捕获的静态图像或移动视频中的对象,并且对于配备有相机的便携式设备、(基于相机)的移动电话等等是尤其有利的。

应指出,文中所述的方法和设备可被实现为软件、固件、硬件或它们的任何组合。有些组件可例如被实现为在数字信号处理器或者微处理器上运行的软件。其他组件可例如实现为硬件和/或专用集成电路。

另外,可采用多种方式来实行本发明的方法和系统。例如,可通过软件、硬件、固件或它们的任何组合来实行本发明的方法和系统。上文所述的该方法的步骤的顺序仅是说明性的,并且除非另外具体说明,否则本发明的方法的步骤不限于上文具体描述的顺序。此外,在一些实施例中,本发明还可具体化为记录介质中记录的程序,包括用于实施根据本发明的方法的机器可读指令。因此,本发明还涵盖了存储用于实施根据本发明的方法的程序的记录介质。

本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其他各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。因此,本说明书和附图应当被看作是说明性的,而非限制性的。

另外,本公开的实施方式还可以包括以下示意性示例(EE)。

EE 1.一种用于对象识别的神经网络模型的优化装置,其特征在于,包括:

损失确定单元,被配置为对于利用所述神经网络模型从训练图像集中提取的特征和带有权重函数的损失函数确定损失数据,以及

更新单元,被配置为基于所述损失数据和更新函数来执行神经网络模型的参数的更新操作,

其中,所述更新函数是基于所述神经网络模型的带有权重函数的损失函数推导而得到的,所述权重函数与所述损失函数在特定取值区间中同向地单调变化。

EE2、根据EE1所述的装置,其中,所述权重函数和所述损失函数都是角度的函数,其中,所述角度为映射到超球面流形上的所提取的特征与神经网络模型的全连接层中的特定权重向量之间的夹角,并且其中,所述特定取值区间为特定角度取值区间。

EE3、根据EE2所述的装置,其中,所述特定角度取值区间是[0,π/2],并且所述权重函数与所述损失函数在所述特定角度取值区间中同向地单调平滑变化。

EE4、根据EE2所述的装置,其中,所述损失函数为所述夹角的余弦函数。

EE5、根据EE1所述的装置,其中,所述损失函数包括类内角度损失函数,其中,所述类内角度为映射到超球面流形上的所提取的特征与神经网络模型的全连接层中表示真值对象的权重向量之间的夹角,并且

其中,所述更新函数是基于所述类内角度损失函数与所述类内角度的权重函数确定的。

EE6、根据EE1所述的装置,其中,所述类内角度损失函数是取负的类内角度的余弦函数,并且所述类内角度的权重函数是非负的在特定取值区间上随着角度增大而平滑单调递增的函数。

EE7、根据EE1所述的装置,其中,所述取值区间是[0,π/2],并且所述类内角度的权重函数在0附近具有水平截止点。

EE8、根据EE1所述的装置,其中,所述损失函数进一步包括类间角度损失函数,并且其中,所述类间角度为映射到超球面流形上的所提取的特征与神经网络模型的全连接层中的其它权重向量之间的夹角,并且

其中,所述更新函数是基于所述类间角度损失函数与所述类间角度的权重函数确定的。

EE9、根据EE1所述的装置,其中,所述类间角度损失函数是类间角度的余弦函数的总和,并且所述类间角度的权重函数是非负的在特定取值区间上随着角度增大而平滑单调递减的函数。

EE10、根据EE1所述的装置,其中,所述取值区间是[0,π/2],并且所述类内角度的权重函数在π/2附近具有水平截止点。

EE11、根据EE1所述的装置,其中,所述更新函数是基于所述损失函数的偏导数与所述权重函数的。

EE12、根据EE1所述的装置,其中,所述更新单元进一步配置为将所述损失函数的偏导数与所述权重函数进行乘积以确定更新梯度,以用于对神经网络模型进行更新。

EE13、根据EE12所述的装置,其中,所述更新单元进一步配置为利用反向传播方法和所确定的更新梯度来更新神经网络模型的参数。

EE14、根据EE1所述的装置,其中,在所述神经网络模型被更新之后,所述损失确定单元和所述更新单元将利用更新后的神经网络模型进行操作。

EE15、根据EE1所述的装置,其中,所述更新单元被配置为在所确定的损失数据大于阈值且所述损失确定单元和所述更新单元所进行的迭代操作的次数未达到预定迭代次数时,利用所确定的更新梯度进行更新。

EE16、根据EE1所述的装置,其中,所述损失数据确定单元进一步包括利用所述神经网络模型的损失函数与所述权重函数的组合来确定所述损失数据。

EE17、根据EE1所述的装置,其中,所述神经网络模型的损失函数与权重函数的组合为所述神经网络模型的损失函数与权重函数的乘积。

EE18、根据EE1所述的装置,进一步包括图像特征获取单元,被配置为利用所述神经网络模型从训练图像集中获取图像特征。

EE19、根据EE1所述的装置,其中所述神经网络模型为深度神经网络模型,并且所述获取的图像特征为图像的深度嵌入特征。

EE20、根据EE1所述的装置,其中,所述权重函数的参数能够根据在训练集或验证集上所确定的损失数据被调整。

EE21、根据EE20所述的装置,其中,在设定所述加权权重函数的第一参数和第二参数分别进行迭代的损失数据确定操作和更新操作之后,导致损失数据更优的第一参数和第二参数中的一个参数附近的两个参数被选择作为下一次迭代操作时的加权函数的第一参数和第二参数。

EE22、根据EE20所述的装置,其中,所述加权函数为Sigmoid函数或其的具有类似特性的变型函数,并且所述参数包括斜率参数和水平截距参数。

EE23、一种用于对象识别的神经网络模型的训练方法,其特征在于,包括:

损失确定步骤,用于对于利用所述神经网络模型从训练图像集中提取的特征和带有权重函数的损失函数确定损失数据,以及

更新步骤,用于基于所述损失数据和更新函数来执行神经网络模型的参数的更新操作,

其中,所述更新函数是基于所述神经网络模型的带有权重函数的损失函数推导而得到的,所述权重函数与所述损失函数在特定取值区间中同向地单调变化。

EE 24.一种设备,包括

至少一个处理器;和

至少一个存储设备,所述至少一个存储设备在其上存储指令,该指令在由所述至少一个处理器执行时,使所述至少一个处理器执行根据EE 23所述的方法。

EE25.一种存储指令的存储介质,该指令在由处理器执行时能使得执行根据EE 23所述的方法。

虽然已经参考示例实施例描述了本发明,应当理解,本发明不限于公开的示例实施例。下面的权利要求的范围将被给予最宽泛的解释,以便包含所有这些修改以及等同结构和功能。

虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。

相关技术
  • 对象识别模型的训练方法、对象识别方法及相应的装置
  • 对象识别模型训练方法及装置、电子设备和存储介质
技术分类

06120112739626