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

机器学习方法、电子设备及相关产品

文献发布时间:2023-06-19 11:29:13


机器学习方法、电子设备及相关产品

技术领域

本申请涉及图像处理技术领域,具体涉及一种机器学习方法、电子设备及相关产品。

背景技术

现有技术中,深度神经网络表达能力非常强,效果非常好,但是这个是基于你有庞大的数据为依托,当不能够获得足够数据,或者,获得的数据不均衡时,深度学习的效果是十分有限的,甚至有可能没有传统的机器学习方法好。或者当任务非常复杂时,神经网络也很难学习到比较令人满意的效果,因此,如何提升神经网络模型的表述能力的问题亟待解决。

发明内容

本申请实施例提供了一种机器学习方法、电子设备及相关产品,能够提升模型的表述能力。

第一方面,本申请实施例提供一种机器学习方法,应用于电子设备,所述方法包括:

获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数;

将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据;

基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数;

基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

第二方面,本申请实施例提供一种机器学习装置,应用于电子设备,所述装置包括:获取单元、输入单元、确定单元和运算单元,其中,

所述获取单元,用于获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数;

所述输入单元,用于将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据;

所述确定单元,用于基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数;

所述运算单元,用于基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

第三方面,本申请实施例提供了一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面中的步骤的指令。

第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。

第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

实施本申请实施例,具备如下有益效果:

可以看出,本申请实施例中所描述的机器学习方法、电子设备及相关产品,应用于电子设备,获取第一输入数据、第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,N为大于1的整数;将第一输入数据分别输入到N个神经网络模型,得到N个输出数据,基于N个输出数据确定N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数,基于至少一个第一损失函数、实际标签对N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型,有助于提升模型的表述能力。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1A是本申请实施例提供的一种电子设备的结构示意图;

图1B是本申请实施例提供的一种机器学习模型的结构示意图;

图1C是本申请实施例提供的另一种机器学习模型的结构示意图;

图1D是本申请实施例提供的一种机器学习方法的流程示意图;

图1E是本申请实施例提供的另一种机器学习模型的结构示意图;

图2是本申请实施例提供的另一种机器学习方法的流程示意图;

图3是本申请实施例提供的另一种电子设备的结构示意图;

图4是本申请实施例提供的一种机器学习装置的功能单元组成框图。

具体实施方式

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是在一个可能地示例中还包括没有列出的步骤或单元,或在一个可能地示例中还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例所涉及到的电子设备可以是包括各种图像处理信功能的手持设备、智能机器人、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(UserEquipment,UE),移动台(MobileStation,MS),终端设备(terminaldevice)等等,电子设备还可以为服务器或者智能家居设备。

本申请实施例中,智能家居设备可以为以下至少一种:冰箱、洗衣机、电饭煲、智能窗帘、智能灯、智能床、智能垃圾桶、微波炉、烤箱、蒸箱、空调、油烟机、服务器、智能门、智能窗户、窗门衣柜、智能音箱、智能家居、智能椅、智能晾衣架、智能淋浴、饮水机、净水器、空气净化器、门铃、监控系统、智能车库、电视机、投影仪、智能餐桌、智能沙发、按摩椅、跑步机等等,当然,还可以包括其他设备。

如图1A所示,图1A是本申请实施例提供的一种电子设备的结构示意图。该电子设备包括处理器、存储器、信号处理器、收发器、显示屏、扬声器、麦克风、随机存取存储器(Random Access Memory,RAM)、摄像头、传感器和网络模块等等。其中,存储器、信号处理器DSP、扬声器、麦克风、RAM、摄像头、传感器、网络模块与处理器连接,收发器与信号处理器连接。

其中,处理器是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器内的软体程序和/或模块,以及调用存储在存储器内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控,处理器可以为中央处理器(Central Processing Unit/Processor,CPU)、图形处理器(GraphicsProcessing Unit,GPU)或者网络处理器(Neural-network Processing Unit,NPU)。

进一步地,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器中。

其中,存储器用于存储软体程序和/或模块,处理器通过运行存储在存储器的软件程序和/或模块,从而执行电子设备的各种功能应用以及机器学习。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的软体程序等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,传感器包括以下至少一种:光感传感器、陀螺仪、红外接近传感器、振动检测传感器,压力传感器等等。其中,光感传感器,也称为环境光传感器,用于检测环境光亮度。光线传感器可以包括光敏元件和模数转换器。其中,光敏元件用于将采集的光信号转换为电信号,模数转换器用于将上述电信号转换为数字信号。可选的,光线传感器还可以包括信号放大器,信号放大器可以将光敏元件转换的电信号进行放大后输出至模数转换器。上述光敏元件可以包括光电二极管、光电三极管、光敏电阻、硅光电池中的至少一种。

其中,该摄像头可以是可见光摄像头(一般视角摄像头、广角摄像头)、也可以是红外摄像头,还可以为双摄像头(具备测距功能),在此不作限定。

网络模块可以为以下至少一种:蓝牙模块、无线保真(wireless fidelity,Wi-Fi)等等,在此不做限定。

基于上述图1A所描述的电子设备,能够执行如下机器学习方法,具体步骤如下:

获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数;

将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据;

基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数;

基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

虽然深度神经网络表达能力非常强,效果非常好,但是这个是基于你有庞大的数据为依托,当不能够获得足够数据,或者,获得的数据不均衡时,深度学习的效果是十分有限的,甚至有可能没有传统的机器学习方法好。或者当任务非常复杂时,神经网络也很难学习到比较令人满意的效果。

本申请实施例中,当一个网络在数据量不够,或者数据不均衡的情况下表达能力不足时,可以利用集成学习的方法来增强网络的表达能力,如图1B,集成学习就是分别单独训练多个不同的网络(个体学习器),也就是训练多个分类器,然后通过平均,或者投票的方法决定结果,比如训练了5个网络,其中,3个网络认为物体是猫,那么就可以决定这个物体分类是猫。但是这里会引出另外一个问题,由于不同的神经网络所关注的内容会有所不同,有时候会导致10个网络,有10种的分类结果,那么这样有可能就需要训练更多的网络,需要几十个分类器或者上百个分类器,来达到较理想的效果。为了达到使用比较少的网络就能很好的实现集成学习的效果,本申请实施例,提出了利用知识蒸馏的的方法来训练多个网络,让多个网络相互联系起来,达到一种相互学习的关系,这样它们的结果的分布就不会很分散,有利于集成学习进行最后的平均投票等操作,具体网络如图1C所示,下文会进行具体介绍。

请参阅图1D,图1D是本申请实施例提供的一种机器学习方法的流程示意图,如图所示,应用于如图1A所示的电子设备,本机器学习方法包括:

101、获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数。

本申请实施例中,第一输入数据可以为N维数据,N为正整数,例如,N为1、2、3等等,在此不作限定。第一输入数据可以为图像,该图像可以为以至少一种:人脸图像、人体图像、车辆图像、车牌图像等等,在此不作限定。

N个神经网络模型可以为不同的神经网络模型,例如,神经网络模型的结构或者模型参数设置不一样。神经网络模型可以为以下至少一种:卷积神经网络模型、脉冲神经网络模型、全连接神经网络模型、循环神经网络模型等等,在此不作限定。

具体实现中,电子设备可以获取第一输入数据、该第一输入数据可以对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,N为大于1的整数,原始损失函数可以为以下至少一种:交叉熵损失函数、三元组损失函数等等,在此不作限定,每一神经网络模型对应的原始损失函数可以不一样。

102、将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据。

具体实现中,电子设备可以将第一输入数据输入到N个神经网络模型,进而,得到N个输出数据,输出数据可以为通过softmax函数进行归一化处理后的输出数据。

softmax可以理解为归一化指数函数,目的就是让输出的数组归一化到0-1之间,假设有一个数组V,Vi表示V中的第i个元素,那么这个元素的softmax值为:

该元素的softmax值,就是该元素的指数与所有元素指数和的比值。

比如,一个数组[3,1,-3](分类网络的输出就是一个数组,数组的大小就是类别数)

那么,经过该数组经过softmax函数之后的值为

103、基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数。

其中,具体实现中,电子设备可以基于N个输出数据确定N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数,例如,可以确定N个神经网络模型中每一神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,进而,可以得到N个第一损失函数。

可选地,上述步骤103,基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数,可以包括如下步骤:

31、获取神经网络模型i的原始损失函数,所述神经网络模型i为所述N个神经网络模型中的任一神经网络模型;

32、依据所述N个输出数据确定所述N个神经网络模型中除了所述神经网络模型i之外的其他神经网络模型相对于所述神经网络模型i的KL散度,得到N-1个KL散度;

33、基于所述神经网络模型i的原始损失函数、所述N-1个KL散度确定所述神经网络模型i的第一损失函数。

具体实现中,如图1C所示,有N个网络,每个网络经过softmax的输出为pi(i=1...N),每个网络原始的Loss为cross_entropy Loss可以记为Lc

第2个网络Loss:

第N个网络Loss:

其中除了第一项传统的crossentropy loss,后面的是当前网络的输出和剩下的所有网络输出求它们之间的KL散度(衡量两个输出的分布差异),以拉近各个网络之间的输出分布。那么总体的loss表示如下

通过这样一起训练,各个网络既有一定的差异性,利用知识蒸馏又可以一定程度的拉近每个网络的距离,使得输出差异不会太大,同时知识蒸馏可以提高网络的表达能力,使得集成学习可以达到理想的效果。

具体实现中,首先,假设这里的N个网络都是独立的,相互不影响,也就是我要训练N个模型,每一个网络训练的时候可以通过给定标签进行监督学习,这里的标签就是Lablel,每一个网络训练的时候都要给定真实的标签,才能学习。

本申请实施例中,神经网络模型1-N,每一个神经网络模型可以是任意的神经网络模型,每一个网络模型可以是不同的结构,可以选择任意的网络。本申请实施例,在于神经网络模型中集成学习,就是利于投票的原理,比如,有个二分类【猫,狗】识别问题,训练了3[N=3]个网络,对于给定的一张图像,3个网络模型的分类结果分别是[猫,猫,狗],那么经过投票,由于有两个模型的结果是猫,一个模型结果是狗,那么2>1,投票的结果就是这张图像是猫,同理,上面训练N个网络模型之后,最后投票来决定结果。

进一步地,至于网络之间的联系,如果网络之间是相互独立的,单独一个网络训练,假设有T个类别有S个样本:样本xi(i=1,2,....,S)经过一个网络,最后通过softmax输出为:p(x

假设这个样本的真实标签为t(0=

p

本申请实施例中,基于传统的分类的损失函数,把多个网络用新的Loss函数联系起来,用的就是KL散度来联系,这里有N个网络模型,样本xi通过第n个网络然后再经过softmax变换后为p

有了散度的概念后,这里重新定义定义一下单个网络的损失函数,前面说了单个网络的损失函数为交叉熵损失函数

这里在损失函数中加入一项散度损失,该损失是当前网络输出和剩下所有网络的散度求和,那么网络n的总体损失函数为:

举个例子就是,比如有3个网络N1,N2,N3:

第1个网络的损失函数有两部分,第一部分是交叉熵损失函数为:

第二部分为和剩下两个网络N2,N3求散度:

那么总体的loss就是:

同理,第二个网络的损失:

同理,第三个网络的损失:

当然,如果多个网络,损失也是类似的。

基于图1C所示的神经网络模型,其训练的流程可以如下:

1、输入,首先给定一个训练集合X,标签集合Y;

2、初始化:将神经网络模型1、2、3、....、N的网络参数进行初始化;

3、将训练集合分别输入到神经网络模型1、2、3、....、N,并根据softmax的公式,得到网络1到N的输出p1,p

4、利用随机梯度下降方法,更新神经网络模型1、2、3、....、N的网络权值参数;

5、重复以上步骤直至网络1到N都收敛。

104、基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

具体实现中,电子设备可以基于至少一个第一损失函数、实际标签对N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型,至少一个神经网络模型中包括一个或者多个收敛的神经网络模型。

可选地,在步骤104,基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型之后,还可以包括如下步骤:

A1、获取第二输入数据;

A2、将所述第二输入数据分别输入到运算后的所述至少一个神经网络模型中,得到至少一个分类结果,每一神经网络模型对应一个分类结果;

A3、将所述至少一个分类结果中出现次数最多的分类结果作为第一目标分类结果;

A4、展示所述第一目标分类结果。

本申请实施例中,第二输入数据可以为N维数据,N为正整数,例如,N为1、2、3等等,在此不作限定。第二输入数据可以为图像,该图像可以为以至少一种:人脸图像、人体图像、车辆图像、车牌图像等等,在此不作限定。具体实现中,如图1E所示,图1E为图1C所示的神经网络模型。在应用阶段的示意图,测试阶段每个网络都是独立的,它们的输入都是同一张图像,图像进入网络后会有N个分类结果,那么,此时需要进行的就是投票操作,N个网络中预测次数最多的那个类别就是最终的分类结果。该方式虽然对硬件的要求比较高,因为有N个神经网络模型,计算复杂度比较大,但是,识别准确度比较高。

具体实现中,电子设备可以获取第二输入数据,再将第二输入数据分别输入到运算后的至少一个神经网络模型中,得到至少一个分类结果,每一神经网络模型对应一个分类结果,然后,将至少一个分类结果中出现次数最多的分类结果作为第一目标分类结果,最后,展示第一目标分类结果,能够精准实现分类。

可选地,上述步骤103,基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数,可以包括如下步骤:

B31、获取神经网络模型j的原始损失函数,所述神经网络模型j为所述N个神经网络模型中的任一神经网络模型;

B32、依据所述N个输出数据确定所述N个神经网络模型中除了所述神经网络模型j之外的其他神经网络模型相对于所述神经网络模型j的KL散度,得到N-1个KL散度;

B33、依据所述N-1个KL散度确定平均KL散度;

B34、基于所述神经网络模型j的原始损失函数、所述平均KL散度确定所述神经网络模型j的第一损失函数;

则步骤104,基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型,可以按照如下方式实施:

基于所述神经网络模型j的第一损失函数和所述实际标签对所述神经网络模型j进行运算,得到收敛后的所述神经网络模型j。

具体实现中,以神经网络模型j为例,神经网络模型j为N个神经网络模型中的任一神经网络模型,电子设备可以获取神经网络模型j的原始损失函数,依据N个输出数据确定N个神经网络模型中除了神经网络模型j之外的其他神经网络模型相对于神经网络模型j的KL散度,得到N-1个KL散度,再依据N-1个KL散度确定平均KL散度,然后,基于神经网络模型j的原始损失函数以及平均KL散度确定神经网络模型j的第一损失函数,最后,基于神经网络模型j的第一损失函数和实际标签对神经网络模型j进行运算,得到收敛后的神经网络模型j,相当于让一个学生学习多个老师的信息,多个老师就是上面集成学习的N个网络,相当于N个老师,有助于提升模型的表述能力。表达能力就是指网络模型的能力,表达能力越好就是网络的越厉害,识别准确率越高。

本申请实施例中,还提出一种基于知识蒸馏的集成学习网络压缩方法:

传统的知识蒸馏都是一个老师教一个学生,这里提出一个方法就是让一个学生学习多个老师的信息,多个老师就是上面集成学习的N个网络,相当于N个老师。将N个网络的输出p1到pN进行平均,得到Paver:

蒸馏学习的损失函数如下:

L=λLc+(1-λ)T

T为超参数,经过知识蒸馏后,学生网络就能以较少的计算量,达到与集成模型接近的性能,即通过知识蒸馏的方法,将上面图1C所示的N个网络模型的信息压缩到单个网络上面,单个网络的结构也是任意的。

由于上述的训练的N个模型,图像输入经过softmax会得到N个结果p

那么,可以用单个网络来学习这个N个网络的信息,该网络的的损失函数还是由两部分组成,第一部分还是交叉熵损失函数

L=λLc+(1-λ)T

其中,λ是权重,用来训练的时候,平衡两个损失,取值的话一般设置为0.5-0.7之间。T代表一个超参数。

具体实现中,训练的流程可以包括如下步骤:

1、输入:首先给定一个训练集合X,标签集合Y;

2、初始化:将该单个网络参数进行初始化;

3、根据softmax的公式和已经训练好的神经网络模型1到N,得到网络1到N的输出p

4、通过公式L=λLc+(1-λ)T

5、重复上面的过程,知道网络模型收敛为止。

可选地,在步骤104,基于所述神经网络模型j的第一损失函数和所述实际标签对所述神经网络模型j进行运算,得到收敛后的所述神经网络模型j之后,还可以包括如下步骤:

B1、获取第三输入数据;

B2、将所述第三输入数据输入到收敛后的所述神经网络模型j中进行运算,得到第二目标分类结果;

B3、展示所述第二目标分类结果。

具体实现中,第三输入数据可以为N维数据,N为正整数,例如,N为1、2、3等等,在此不作限定。第三输入数据可以为图像,该图像可以为以至少一种:人脸图像、人体图像、车辆图像、车牌图像等等,在此不作限定。具体地,电子设备可以获取第三输入数据,将第三输入数据输入到收敛后的神经网络模型j中进行运算,得到第二目标分类结果,再展示第二目标分类结果,训练完成后得到的是一个网络模型,另外的1到N个网络模型已经不需要了,只用新的训练的网络模型进行预测即可,单个网络模型的效果有可能达不到预期,经过知识蒸馏之后,该单个网络可以学习到多个网络的信息,博众家之所长,相当于之前训练的N个网络模型都是老师,把自己的知识都传递给了这一位学生,所以这个学生会非常厉害,可以提升10%-20%的性能,从而,有助于提升分类精准度。

在一个可能地示例中,上述步骤101之前,还可以包括如下步骤:

C1、获取目标人脸图像;

C2、对所述目标人脸图像进行图像质量评价,得到人脸图像质量评价值;

C3、在所述人脸图像质量评价值大于预设图像质量评价值时,将所述目标人脸图像与预设人脸模板进行匹配,在匹配成功时,执行步骤101。

其中,本申请实施例中,预设图像质量评价值、预设人脸模板均可以预先保存在电子设备。

具体实现中,电子设备可以采用至少一个图像质量评价指标对目标人脸图像进行图像质量评价,得到人脸图像质量评价值,图像质量评价指标可以为以下至少一种:人脸偏差度、人脸完整度、清晰度、特征点分布密度、平均梯度、信息熵、信噪比等等,在此不作限定。其中,人脸偏差度为图像中人脸角度与正脸的人脸角度之间的偏差度,人脸完整度为图像中人脸的面积与完整人脸面积之间的比值。在人脸图像质量评价值大于预设图像质量评价值时,将目标人脸图像与预设人脸模板进行匹配,在匹配成功时,执行步骤101,反之,则不执行后续步骤,可以提升安全性。

在一个可能地示例中,上述步骤C2,对所述目标人脸图像进行图像质量评价,得到人脸图像质量评价值,可以包括如下步骤:

C21、获取目标人脸图像的目标人脸偏差度、所述目标人脸图像的目标人脸完整度、所述目标人脸图像的目标特征点分布密度和目标信息熵;

C22、在所述目标人脸偏差度大于预设偏差度且所述目标人脸完整度大于预设完整度时,按照预设的人脸偏差度与第一参考评价值之间的映射关系,确定所述目标人脸偏差度对应的目标第一参考评价值;

C23、按照预设的人脸完整度与第二参考评价值之间的映射关系,确定所述目标人脸完整度对应的目标第二参考评价值;

C24、按照预设的特征点分布密度与权值对之间的映射关系,确定所述目标特征点分布密度对应的目标权值对,所述目标权值对包括目标第一权值和目标第二权值,所述目标第一权值为所述第一参考评价值对应的权值,所述目标第二权值为所述第二参考评价值对应的权值;

C25、依据所述目标第一权值、所述目标第二权值、所述目标第一参考评价值和所述目标第二参考评价值进行加权运算,得到第一参考评价值;

C26、按照预设的特征点分布密度与图像质量评价值之间的映射关系,确定所述目标特征点分布密度对应的第一图像质量评价值;

C27、按照预设的信息熵与图像质量偏差值之间的映射关系,确定所述目标信息熵对应的目标图像质量偏差值;

C28、获取所述目标人脸图像的第一拍摄参数;

C29、按照预设的拍摄参数与优化系数之间的映射关系,确定所述第一拍摄参数对应的目标优化系数;

C30、依据所述目标优化系数、所述目标图像质量偏差值对所述第一图像质量评价值进行调整,得到第二参考评价值;

C31、获取所述目标人脸图像对应的目标环境参数;

C32、按照预设的环境参数与权重系数对之间的映射关系,确定所述目标环境参数对应的目标权重系数对,所述目标权重系数对包括目标第一权重系数和目标第二权重系数,所述目标第一权重系数为所述第一参考评价值对应的权重系数,所述目标第二权重系数为所述第二参考评价值对应的权重系数;

C33、依据所述目标第一权重系数、所述目标第二权重系数、所述第一参考评价值和所述第二参考评价值进行加权运算,得到所述目标人脸图像的人脸图像质量评价值。

其中,本申请实施例中,预设偏差度、预设完整度均可以由用户自行设置或者系统默认,两者只有均处于一定范围才可能被人脸识别成功。电子设备中可以预先存储预设的人脸偏差度与第一参考评价值之间的映射关系、预设的人脸完整度与第二参考评价值之间的映射关系、预设的特征点分布密度与权值对之间的映射关系,该权值对可以包括第一权值和第二权值,第一权值与第二权值之和为1,第一权值为第一参考评价值对应的权值,第二权值为第二参考评价值对应的权值。电子设备中还可以预先存储预设的特征点分布密度与图像质量评价值之间的映射关系、预设的信息熵与图像质量偏差值之间的映射关系、预设的拍摄参数与优化系数之间的映射关系以及预设的环境参数与权重系数对之间的映射关系。其中,权重系数对可以包括第一权重系数和第二权重系数,第一权重系数为第一参考评价值对应的权重系数,第二权重系数为第二参考评价值对应的权重系数,第一权重系数与第二权重系数之和为1。

其中,图像质量评价值的取值范围可以为0~1,或者,也可以为0~100。图像质量偏差值可以为正实数,例如,0~1,或者,也可以大于1。优化系数的取值范围可以为-1~1之间,例如,优化系数可以为-0.1~0.1。本申请实施例中,拍摄参数可以为以下至少一种:曝光时长、拍摄模式、感光度ISO、白平衡参数、焦距、焦点、感兴趣区域等等,在此不做限定。环境参数可以为以下至少一种:环境亮度、环境温度、环境湿度、天气、大气压、磁场干扰强度等等,在此不作限定。

具体实现中,电子设备可以获取目标人脸图像的目标人脸偏差度、目标人脸图像的目标人脸完整度、目标人脸图像的目标特征点分布密度和目标信息熵,其中,目标特征点分布密度可以为目标人脸图像的特征点总数与该目标人脸图像的面积之间的比值。

进而,在目标人脸偏差度大于预设偏差度且目标人脸完整度大于预设完整度时,电子设备可以按照预设的人脸偏差度与第一参考评价值之间的映射关系,确定目标人脸偏差度对应的目标第一参考评价值,还可以按照预设的人脸完整度与第二参考评价值之间的映射关系,确定目标人脸完整度对应的目标第二参考评价值,以及按照预设的特征点分布密度与权值对之间的映射关系,确定目标特征点分布密度对应的目标权值对,目标权值对包括目标第一权值和目标第二权值,目标第一权值为第一参考评价值对应的权值,目标第二权值为第二参考评价值对应的权值,接着,可以依据目标第一权值、目标第二权值、目标第一参考评价值和目标第二参考评价值进行加权运算,得到第一参考评价值,具体计算公式如下:

第一参考评价值=目标第一参考评价值*目标第一权值+目标第二参考评价值*目标第二权值

进而,可以从人脸角度以及人脸完整度方面,整体评价图像的质量。

进一步地,电子设备可以按照预设的特征点分布密度与图像质量评价值之间的映射关系,确定目标特征点分布密度对应的第一图像质量评价值,以及按照预设的信息熵与图像质量偏差值之间的映射关系,确定目标信息熵对应的目标图像质量偏差值。电子设备可以按照预设的信息熵与图像质量偏差值之间的映射关系,确定目标信息熵对应的目标图像质量偏差值,由于在生成图像的时候,由于外部(天气、光线、角度、抖动等)或者内部(系统、GPU)原因,产生一些噪声,这些噪声对图像质量会带来一些影响,因此,可以对图像质量进行一定程度调节,以保证对图像质量进行客观评价。

进一步地,电子设备还可以获取目标人脸图像的第一拍摄参数,按照预设的拍摄参数与优化系数之间的映射关系,确定第一拍摄参数对应的目标优化系数,拍摄的参数设置也可能对图像质量评价带来一定的影响,因此,需要确定拍摄参数对图像质量的影响成分,最后,依据目标优化系数、目标图像质量偏差值对第一图像质量评价值进行调整,得到第二参考评价值,其中,第二参考评价值可以按照如下公式得到:

在图像质量评价值为百分制的情况下,具体计算公式如下:

第二参考评价值=(第一图像质量评价值+目标图像质量偏差值)*(1+目标优化系数)

在图像质量评价值为百分比的情况下,具体计算公式如下:

第二参考评价值=第一图像质量评价值*(1+目标图像质量偏差值)*(1+目标优化系数)

进一步地,电子设备可以获取目标人脸图像对应的目标环境参数,且按照预设的环境参数与权重系数对之间的映射关系,确定目标环境参数对应的目标权重系数对,目标权重系数对包括目标第一权重系数和目标第二权重系数,目标第一权重系数为第一参考评价值对应的权重系数,目标第二权重系数为第二参考评价值对应的权重系数,进而,可以依据目标第一权重系数、目标第二权重系数、第一参考评价值和第二参考评价值进行加权运算,得到目标人脸图像的人脸图像质量评价值,具体计算公式如下:

目标人脸图像的人脸图像质量评价值=第一参考评价值*目标第一权重系数+第二参考评价值*目标第二权重系数

如此,可以结合内部、外部环境因素、拍摄设置因素以及人脸角度以及完整度等影响,对图像质量进行客观评价,有助于提升人脸图像质量评价精准度。

可以看出,本申请实施例中所描述的机器学习方法,应用于电子设备,获取第一输入数据、第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,N为大于1的整数;将第一输入数据分别输入到N个神经网络模型,得到N个输出数据,基于N个输出数据确定N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数,基于至少一个第一损失函数、实际标签对N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型,有助于提升模型的表述能力。

与上述图1B所示的实施例一致地,请参阅图2,图2是本申请实施例提供的一种机器学习方法的流程示意图,应用于如图1A所示的电子设备,本机器学习方法包括:

201、获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数。

202、将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据。

203、基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数。

204、基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

205、获取第二输入数据。

206、将所述第二输入数据分别输入到运算后的所述至少一个神经网络模型中,得到至少一个分类结果,每一神经网络模型对应一个分类结果。

207、将所述至少一个分类结果中出现次数最多的分类结果作为第一目标分类结果。

208、展示所述第一目标分类结果。

其中,上述步骤201-步骤208的具体描述可以参照上述图1D所描述的机器学习方法的相应步骤,在此不再赘述。

可以看出,本申请实施例中所描述的机器学习方法,提出了利用知识蒸馏的的方法来训练多个网络,让多个网络相互联系起来,达到一种相互学习的关系,这样它们的结果的分布就不会很分散,有利于集成学习进行最后的平均投票等操作,有助于提升分类精度。

与上述实施例一致地,请参阅图3,图3是本申请实施例提供的一种电子设备的结构示意图,如图所示,该包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,本申请实施例中,上述程序包括用于执行以下步骤的指令:

获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数;

将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据;

基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数;

基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

可选地,在所述基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数方面,上述程序包括用于执行以下步骤的指令:

获取神经网络模型i的原始损失函数,所述神经网络模型i为所述N个神经网络模型中的任一神经网络模型;

依据所述N个输出数据确定所述N个神经网络模型中除了所述神经网络模型i之外的其他神经网络模型相对于所述神经网络模型i的KL散度,得到N-1个KL散度;

基于所述神经网络模型i的原始损失函数、所述N-1个KL散度确定所述神经网络模型i的第一损失函数。

可选地,在所述基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型之后,上述程序还包括用于执行以下步骤的指令:

获取第二输入数据;

将所述第二输入数据分别输入到运算后的所述至少一个神经网络模型中,得到至少一个分类结果,每一神经网络模型对应一个分类结果;

将所述至少一个分类结果中出现次数最多的分类结果作为第一目标分类结果;

展示所述第一目标分类结果。

可选地,在所述基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数方面,上述程序包括用于执行以下步骤的指令:

获取神经网络模型j的原始损失函数,所述神经网络模型j为所述N个神经网络模型中的任一神经网络模型;

依据所述N个输出数据确定所述N个神经网络模型中除了所述神经网络模型j之外的其他神经网络模型相对于所述神经网络模型j的KL散度,得到N-1个KL散度;

依据所述N-1个KL散度确定平均KL散度;

基于所述神经网络模型j的原始损失函数、所述平均KL散度确定所述神经网络模型j的第一损失函数;

所述基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型,包括:

基于所述神经网络模型j的第一损失函数和所述实际标签对所述神经网络模型j进行运算,得到收敛后的所述神经网络模型j。

可选地,在所述基于所述神经网络模型j的第一损失函数和所述实际标签对所述神经网络模型j进行运算,得到收敛后的所述神经网络模型j之后,上述程序还包括用于执行以下步骤的指令:

获取第三输入数据;

将所述第三输入数据输入到收敛后的所述神经网络模型j中进行运算,得到第二目标分类结果;

展示所述第二目标分类结果。

上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

图4是本申请实施例中所涉及的机器学习装置400的功能单元组成框图,该装置400,应用于电子设备,所述装置400包括:获取单元401、输入单元402、确定单元403和运算单元404,其中,

所述获取单元401,用于获取第一输入数据、所述第一输入数据对应的实际标签以及N个神经网络模型,每一神经网络模型对应一个原始损失函数,所述N为大于1的整数;

所述输入单元402,用于将所述第一输入数据分别输入到所述N个神经网络模型,得到N个输出数据;

所述确定单元403,用于基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数;

所述运算单元404,用于基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型。

可选地,在所述基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数方面,所述确定单元403具体用于:

获取神经网络模型i的原始损失函数,所述神经网络模型i为所述N个神经网络模型中的任一神经网络模型;

依据所述N个输出数据确定所述N个神经网络模型中除了所述神经网络模型i之外的其他神经网络模型相对于所述神经网络模型i的KL散度,得到N-1个KL散度;

基于所述神经网络模型i的原始损失函数、所述N-1个KL散度确定所述神经网络模型i的第一损失函数。

可选地,在所述基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型之后,所述装置400还具体用于:

获取第二输入数据;

将所述第二输入数据分别输入到运算后的所述至少一个神经网络模型中,得到至少一个分类结果,每一神经网络模型对应一个分类结果;

将所述至少一个分类结果中出现次数最多的分类结果作为第一目标分类结果;

展示所述第一目标分类结果。

可选地,在所述基于所述N个输出数据确定所述N个神经网络模型中每一神经网络模型相对于除了该每一神经网络模型之外的神经网络模型对该每一神经网络模型的KL散度,基于所述N个神经网络模型中至少一个神经网络模型的原始损失函数及其对应的KL散度构造第一损失函数,得到至少一个第一损失函数方面,所述确定单元403具体用于:

获取神经网络模型j的原始损失函数,所述神经网络模型j为所述N个神经网络模型中的任一神经网络模型;

依据所述N个输出数据确定所述N个神经网络模型中除了所述神经网络模型j之外的其他神经网络模型相对于所述神经网络模型j的KL散度,得到N-1个KL散度;

依据所述N-1个KL散度确定平均KL散度;

基于所述神经网络模型j的原始损失函数、所述平均KL散度确定所述神经网络模型j的第一损失函数;

所述基于所述至少一个第一损失函数、所述实际标签对所述N个神经网络模型中相应的神经网络模型进行运算,得到运算后的至少一个神经网络模型,包括:

基于所述神经网络模型j的第一损失函数和所述实际标签对所述神经网络模型j进行运算,得到收敛后的所述神经网络模型j。

可选地,在所述基于所述神经网络模型j的第一损失函数和所述实际标签对所述神经网络模型j进行运算,得到收敛后的所述神经网络模型j之后,所述装置400还具体用于:

获取第三输入数据;

将所述第三输入数据输入到收敛后的所述神经网络模型j中进行运算,得到第二目标分类结果;

展示所述第二目标分类结果。

可以理解的是,本实施例的机器学习装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。

本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 机器学习方法、电子设备及相关产品
  • 木板平整度检测及其机器学习方法、装置及电子设备
技术分类

06120112940120