一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种难正负样本在线挖掘方法和人脸识别方法

2022-07-20 20:24:31 来源:中国专利 TAG:


1.本发明涉及图像处理和机器学习的交叉领域,具体涉及一种难正负样本挖掘方法和应用该种挖掘方法进行模型训练的人脸识别方法。


背景技术:

2.通过利用大量人脸图片进行模型训练来提高人脸识别精度,已是人脸识别领域的常规做法。训练过程和方法不同,得出的模型识别效果也会不同。通过对训练过程和方法进行改进,来提高模型识别人脸的精度,是业界相关学者的研究课题之一。
3.基于度量学习(metric learning)原理的,能够利用百万级人脸数据集的人脸识别模型训练框架,通常采用结合在线挖掘的度量学习算法。使用度量学习算法训练模型时,需要给模型提供大量的相同人脸对(正样本对)和不同人脸对(负样本对)。在训练的中后期阶段,这些样本对越难,模型的识别性能越能提升越明显,训练速度也更快。随着模型训练迭代次数的增加,这种难易程度的标准在不断演化,因此难样本对必须在训练过程中进行在线挖掘,而挖掘出的正负样本对的困难程度又与参加每次训练迭代的数据量正相关。
4.综上所述,在人脸识别模型的训练阶段利用难正负样本在线挖掘方法来进行训练,参与难正负样本在线挖掘的数据批量越大,则越有利于提升人脸识别算法的精确度。然而,现有的训练过程中,特征提取、损失函数计算、梯度计算和反向传播都主要是通过gpu(graphics processing unit,图形处理器)进行,而gpu卡板载显存容量有限,能处理的图像数量有限,单张gpu卡上的数据批量通常在几十个至上百个人脸图像之间,极大地限制了挖掘的难正负样本的困难程度,从而限制了人脸识别模型训练效率的提升。


技术实现要素:

5.本发明的主要目的在于提出一种难正负样本在线挖掘方法,以解决现有技术存在的问题,提高难正负样本在线挖掘的效率。
6.为达上述目的,本发明其中一方面提出如下技术方案:
7.一种难正负样本在线挖掘方法,用于人脸识别模型的训练过程,包括如下步骤:s1、获取由第一图形处理器从样本人脸对提取到的特征向量对;s2、根据所述特征向量对计算所述样本人脸对的损失函数;s3、根据所述损失函数,对所述样本人脸对进行难正负样本挖掘,得到包含难正负样本人脸对的目标样本集;s4、计算所述目标样本集中各所述难正负样本人脸对的梯度,并将所述梯度传送到第二图形处理器,以使所述第二图形处理器通过所述梯度进行反向传播,对模型参数进行调整,并将调整后的模型参数共享给所述第一图形处理器。
8.本发明另一方面提出如下技术方案:
9.一种难正负样本在线挖掘装置,用于人脸识别模型的训练过程,包括一中央处理器单元和连接于该中央处理单元的第一图形处理器与第二图形处理器;所述第一图形处理器被配置为:从样本人脸对提取特征向量对;所述中央处理器单元被配置为:根据所述特征
向量对计算所述样本人脸对的损失函数,以及根据所述损失函数,对所述样本人脸对进行难正负样本挖掘,得到包含难正负样本人脸对的目标样本集,并计算所述目标样本集中各所述难正负样本人脸对的梯度;所述第二图形处理器被配置为:从所述中央处理器单元接收所述梯度,并通过所述梯度进行反向传播,对模型参数进行调整,并将调整后的模型参数共享给所述第一图形处理器。
10.本发明另还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,能实现前述难正负样本在线挖掘方法的步骤。
11.本发明另还提出一种人脸识别方法,包括人脸识别模型的训练过程,所述训练过程包含前述的难正负样本在线挖掘方法的步骤。
12.本发明的有益效果包括:可以通过一个cpu来与第一、第二gpu(图形处理器)配合,只使用第一gpu进行图像特征计算,得到样本对的特征向量对之后,通过cpu来进行损失函数和梯度计算,通过共享模型参数的第二gpu来进行梯度的反向传播,使得第一gpu不依赖于显存的大小,能够以流水线的方式不断计算样本对的特征向量对,从而提高了难样本的在线挖掘效率,进而提高了模型训练的效率。
附图说明
13.图1是本发明实施例的难正负样本在线挖掘方法示意图;
14.图2是本发明实施例三维损失函数矩阵a*b*c的示意图。
具体实施方式
15.下面结合附图和具体的实施方式对本发明作进一步说明。
16.名词解释:

正样本:相同类型的图像为正样本对,比如相同人脸对

负样本:不同类型的图像为负样本对,比如不同人脸对

难正样本:是指模型在识别过程中,将相同人脸对识别为不同人脸的人脸对

难负样本:是指模型在识别过程中,将不同人脸对识别为相同人脸的人脸对

度量学习:在模型训练过程中,使正样本对之间的距离尽可能小,负样本对之间的距离尽可能大。难正样本对在度量学习中的距离较大,因此,会产生较大的梯度下降。难负样本对在度量学习中的距离较小,因此也会产生较大的梯度下降。简单正负样本对不提供或提供较小的梯度下降。

难正负样本在线挖掘:是指在基于度量学习的模型训练过程中,每次迭代后,下一次迭代时输入的批量数据中包括难正负样本,以提高模型的识别能力和模型梯度下降的速度。
17.本发明实施例提供一种难正负样本在线挖掘方法,该方法可运用于cpu(中央处理单元),应用在人脸识别模型的训练阶段。在本实施例中,该方法可以采用如图1所示的系统架构,包括一个cpu和至少一组gpu,一组gpu包含两个gpu,即第一gpu和第二gpu。第一gpu和第二gpu通过总线的方式与cpu连接,第一gpu主要负责特征提取,提取到图像的特征之后传送到cpu,在cpu进行损失函数和梯度的计算,根据损失函数进行难样本挖掘,选取损失函数较大的样本对作为难样本。同时cpu计算出梯度后传送到第二gpu,使第二gpu通过梯度进行
反向传播,调整模型参数并共享到第一gpu。其中,每个样本对的损失函数在0至1之间,损失函数越大,则说明样本对被识别模型识别正确的难度越大。
18.具体地,将样本人脸对输入到第一gpu进行特征提取,每张人脸图像会得到一个对应的特征向量,因此一个样本人脸对对应两个特征向量,在此我们称之为特征向量对。cpu接收到特征向量对,并将它们放入特征向量池中,同时计算每个特征向量对的损失函数。在一种具体的实施例中,损失函数的计算过程如下:
19.当样本人脸对为二元组(即包含两张人脸图像)时,损失函数为:其中,y是所述样本人脸对的标签,当y=0时表示所述样本人脸对为负样本对,当y=1时表示所述样本人脸对为正样本对;d
a,b
是二元组的人脸图像a与b的度量距离,表征人脸图像a与b的特征向量之间的空间距离;β是一个预设的阈值,用于衡量正样本对下的二元组的度量距离是否足够小,或者衡量负样本对下的二元组的度量距离是否足够大,取值范围在0.35~0.4之间;(β-d
a,b
)

表示hinge函数,形式为max(0,β-d
a,b
),当d
a,b
大于或等于β时,max(0,β-d
a,b
)取值为0;当d
a,b
小于β时,max(0,β-d
a,b
)取值为β-d
a,b

20.可以看出,当所述样本人脸对为正样本对时,损失函数为此时损失函数越大,则表示二元组的度量距离越大,该正样本对被识别正确的困难程度越大,该正样本对可认为是难正样本对。当所述样本人脸对为负样本对时,损失函数为此时在预设的β值下,损失函数越大,则说明二元组的度量距离d
a,b
越小,该负样本对被正确识别为负样本对的困难程度越大,该负样本对可认为是难负样本对。
21.当所述样本人脸对为三元组时,损失函数可以表示为:l2=d
a,b
(d
a,b-d
a,c
β)

其中,三元组包含人脸图像a、b、c,a与b构成正样本对,a与c构成负样本对;d
a,c
是人脸图像a与c的度量距离;(d
a,b-d
a,c
β)

表示hinge函数,形式为max(0,d
a,b-d
a,c
β),当(d
a,b-d
a,c
β)大于0则取值为(d
a,b-d
a,c
β),否则取值为0。
22.可以看出,当d
a,b
越小,d
a,c
越大时,损失函数为d
a,b
,此时:当损失函数越小时,符合正样本对a、b的度量距离小,负样本对a、c的度量距离大,则三元组为简单样本对;当损失函数越大时,正样本对a、b的度量距离变大,此时正样本对a、b为难正样本对。反之,当d
a,b
越大,d
a,c
越小时,损失函数为d
a,b
(d
a,b-d
a,c
β)

,此时:当损失函数越大时,正样本对a、b的度量距离越大,负样本对a、c的度量距离越小,则三元组为难样本对。
23.在计算得到损失函数之后,cpu再根据损失函数进行难正负样本挖掘,以获得包含难正负样本人脸对的目标样本集。具体而言,当所述特征向量池中特征向量对的数量达到预设数量时(比如达到128*128=16384个特征向量对时),以预设的采样策略对所述特征向量池中的特征向量对所对应的样本人脸对进行采样,以抽出难正负样本人脸对,得到目标样本集。然后,计算目标样本集中各所述难正负样本人脸对的梯度,并将计算得到梯度传送到第二gpu,以使第二gpu通过所述梯度进行反向传播,对模型参数进行调整,并将调整后的模型参数共享给第一gpu,使第一gpu以调整后的模型参数进行人脸特征提取。
24.在一些实施例中,所述特征向量池中存放的是符合条件(比如损失函数大于某个预先设定的值)的特征向量对,当符合条件的特征向量对的数量达到一定数量(可以根据实
际情况进行预设),比如达到128*128=16384个特征向量对时,以预设的采样策略对所述特征向量池中的特征向量对所对应的样本人脸对进行采样。
25.在另一些实施例中,所述特征向量池中存放的还可以是损失函数,当所述特征向量池中存放的损失函数的数量(实际上等同于特征向量对的数量)达到预设数量时,以预设的采样策略对所述特征向量池中的损失函数进行采样,抽取出的损失函数所对应的样本人脸对即作为难正负样本人脸对,构成所述目标样本集。
26.在采样开始前,可先对损失函数进行整理,得到损失函数矩阵,比如得到128*128的损失函数矩阵,再通过预设的采样核在所述损失函数矩阵中进行采样。采样开始时先初始化目标样本集,初始化的目标样本集中样本人脸对的数量为0,每完成一次采样则把采样得到的难正负样本添加到所述目标样本集中。应当理解的是,如果特征向量池中存放的是特征向量对,则将所存放的这些特征向量对所对应的损失函数整理成损失函数矩阵;如果特征向量池中存放的是损失函数,则将所存放的这些损失函数整理成损失函数矩阵。
27.在一些实施例中,整理损失函数时,可以对损失函数进行预处理,预处理可以是计算损失函数的平均值和标准差,根据平均值和标准差,控制损失函数的分布,使损失函数的分布符合高斯分布且覆盖高于第一阈值的所有损失函数;此处第一阈值是一个预设的门槛值,在本实施例中取值为0.8,应当理解的是,用户可以根据实际需求取其它0~1之间的值,比如一些0.8附近的值,本发明不限于此。将符合高斯分布的损失函数用于构建损失函数矩阵,从而剔除大部分较低的损失函数,保持高于0.8的损失函数与低于0.2的损失函数具有均衡性,进而保证样本均衡。
28.接下来,对损失函数矩阵进行采样,采样得到的损失函数对应的样本人脸对将作为难正负样本人脸对,添加到目标样本集中。由于在模型训练前期,存在梯度贡献很大的难样本对,表现为损失函数大,接近于1;随着迭代次数增加,模型的识别能力也有所增加,难样本对带来的梯度贡献相较于训练前期会有所下降,所以,在训练前期,可以采用采样方法一进行采样;在训练后期,可以采用采样方法二进行采样。训练开始时,通过采样方法一对特征向量池中的特征向量对所对应的样本人脸对进行采样,得到当前次迭代时的包含难正负样本人脸对的目标样本集;在训练过程中每次迭代时,判断是否可以切换到采样方法二,判断方法为:当通过采样方法一得到的目标样本集中的样本人脸对数量小于特征向量池中特征向量对的数量的e%时,切换为第二采样方法进行采样;其中,e%是一预设的百分比阈值;e可以根据经验或者实际情况在0-60之间取值,优选地可以取值为50。或者,当特征向量池中特征向量对所对应的损失函数中最大者的值(也可以是损失函数矩阵中最大者的值)小于f时,切换为采样方法二进行采样;其中,0<f<0.5。
29.采样方法一可归纳为:利用预设的采样核在损失函数矩阵中选取采样区域,并计算采样区域内的损失函数之和;根据所述损失函数之和的整数位n,从采样区域的损失函数中选取值最大的top n个损失函数所对应的样本人脸对,加入所述目标样本集。
30.举例而言,在采样方法一中,采样核例如可以是3*3,采样步长为3。具体地,3*3采样核在损失函数矩阵中具有一个3*3采样区域,通过3*3采样核计算3*3采样区域的损失函数总和,损失函数总和是0至9之间的数值。根据损失函数总和的整数位n,确定3*3采样区域中抽样数量为n,可以在采样区域中选取值最大的top n个损失函数所对应的样本人脸对加入到目标样本集中。比如,当损失函数总和为8.3,则可以在采样区域中选取top 8个值最大
的损失函数所对应的样本人脸对加入到目标样本集中。
31.采样方法二可归纳为:利用预设的采样核在损失函数矩阵中选取采样区域,并计算采样区域内的损失函数的加权总和;根据所述加权总和的整数位m,从采样区域的损失函数中选取值最大的top m个损失函数所对应的样本人脸对,加入所述目标样本集。
32.举例而言,在采样方法一中,采样核例如可以是3*3,采样步长为3。具体地,3*3采样核在损失函数矩阵中具有一个3*3采样区域,通过3*3采样核计算3*3采样区域的损失函数加权总和。根据损失函数加权总和的整数位m,可以在采样区域中选取top m个值最大的损失函数所对应的样本人脸对加入到目标样本集中。其中,损失函数加权总和与当前迭代次数相关。可以通过如下公式计算采样区域内的损失函数的加权总和w:其中,j为当前迭代次数,tj为当前次迭代中特征向量池中的特征向量对的数量,l
t
为当前次迭代中第t个特征向量对所对应的损失函数,ti是上一次迭代中目标样本集内的样本人脸对的总数,lk是上一次迭代中目标样本集内的样本人脸对中第k个特征向量对所对应的损失函数。
33.在不同的训练阶段,采用不同的采样方法,从损失函数矩阵中采样对应的样本人脸对到目标样本集中,可以更准确地挖掘到不同阶段的难样本对。进一步在采样方法二中,采取动态加权的采样方法,可以更准确第挖掘到训练后期的难样本。与现有技术中直接采用top n个损失函数对应的样本人脸对作为难样本无法保证梯度下降方向的方案对来说,本发明实施例利用采样方法一和采样方法二进行动态难样本选择,会使得难样本数量更均衡,保证了梯度下降方向的同时,提高训练效率。梯度方向会影响模型的训练效果,当样本不均衡时,比如只有难样本时,就只能用难正负样本对模型进行训练,则得到的这个模型就会学习到对识别的人脸进行识别,导致训练好的模型对难识别的人脸对敏感(识别准确率高),反而对于一些简单的人脸对不敏感(识别准确率差)。
34.由于采样方法一和采样方法二选择的是top n和top m个损失函数所对应的样本人脸对加入到目标样本集,在得到目标样本集后,目标样本集中包括损失函数较大的难样本人脸对,在训练过程中,将目标样本集中各个样本人脸对所对应的梯度下发到第二gpu中进行反向传播,调整第二gpu中的模型参数。需要说明的是,第一gpu与第二gpu只是搭载了识别模型的硬件设备,也可以称为训练引擎。另外需要说明的是,在cpu计算资源足够的情况下,可以同时对多个度量学习模型进行训练,配备多组gpu,每训练一个度量学习模型需要配备一组gpu(含一个第一gpu和一个第二gpu)。图1绘示了多个度量学习模型同时训练的流程示意图。
35.在另一些示例中,还可以对损失函数矩阵进行切片,得到预设尺寸的切片矩阵;再将所述切片矩阵进行叠加得到如图2所示的三维损失函数矩阵a*b*c,a*b表示切片矩阵的尺寸,一个a*b的切片矩阵表示包含有a*b个损失函数,c表示切片矩阵的数量。比如,将128*128的损失函数矩阵切片后叠加为64*64*4的三维损失函数矩阵,即是将128*128的损失函数矩阵进行切片得到4个64*64的切片矩阵后进行叠加,当然,当128*128的损失函数矩阵切分为其它尺寸大小及对应数量也是可以的;利用由c个所述预设的采样核叠加构成的三维
采样核,对三维损失函数矩阵a*b*c实施采样方法一和采样方法二进行采样,得到所述目标样本集。比如,通过三维采集核3*3*c对三维损失函数矩阵a*b*c实施前述采样方法一和采样方法二相结合的采样方法,由于三维损失函数矩阵的尺寸变小,使得三维采集核所要进行采样的面积降低,可以降低三维采集核的滑动次数,可以加快采样速度。
36.此外,在采样方法二中,可以对采样核进行随机掩码,具体而言,首先,获取当前次迭代采样区域中最大的损失函数作为掩码值,然后在采样核中随机选取一位置使用掩码值进行掩码,使得采样过程中,被掩码位置的损失函数输出为掩码值。通过随机掩码,可以使得较小的损失函数有机会被采样到,使采样核采样到的损失函数分布更均衡。
37.在一些实施例中,在第二gpu与第一gpu共享模型参数时,为了降低共享模型参数的数据传递量,可以按如下操作:可以只计算当前次迭代中第二gpu调整后的模型参数与第一gpu当前模型参数的diff(差值),然后仅将差值传到第一gpu中与第一gpu当前模型参数相加,在第一gpu中就得到了与第二gpu相同的模型参数,即实现了将第二gpu调整后的模型参数共享到第一gpu。例如,第一gpu当前的模型参数为(1,2,3,4,5,6,7,8,9),第二gpu在反向传播后的模型参数为(1,3,3,4,5,6,7,8,9),差值可以为(1-1,3-2,3-3,4-4,5-5,6-6,7-7,8-8,9-9)=(0,1,0,0,0,0,0,0,0),只需将差值(0,1,0,0,0,0,0,0,0)传到第一gpu并与第一gpu当前的模型参数相加即可得到与第二gpu相同的模型参数,实现共享,这种只传递差值的方式降低了参数共享的数据传输量。
38.在本发明的另一实施例中,提供了一种难正负样本在线挖掘装置,用于人脸识别模型的训练过程,包括一中央处理器单元(cpu)和连接于该中央处理单元的第一图形处理器(第一gpu)与第二图形处理器(第二gpu);所述第一图形处理器被配置为:从样本人脸对提取特征向量对;所述中央处理器单元被配置为:根据所述特征向量对计算所述样本人脸对的损失函数,以及根据所述损失函数,对所述样本人脸对进行难正负样本挖掘,得到包含难正负样本人脸对的目标样本集,并计算所述目标样本集中各所述难正负样本人脸对的梯度;所述第二图形处理器被配置为:从所述中央处理器单元接收所述梯度,并通过所述梯度进行反向传播,对模型参数进行调整,并将调整后的模型参数共享给所述第一图形处理器。
39.应当理解的是,在上述装置中,第一gpu、第二gpu和cpu可以按照前述实施例的难正负样本在线挖掘方法中相应的步骤来进行配置。比如,cpu被配置为进行难正负样本挖掘、损失函数计算和梯度计算,具体的挖掘步骤和计算步骤均可按照前述实施例的难正负样本在线挖掘方法中相应的步骤来配置。在此不再赘述,本领域技术人员应当理解的是,该装置是与前述实施例的难正负样本在线挖掘方法相应的装置。
40.此外,本发明实施例还可提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,能实现前述实施例的难正负样本在线挖掘方法的步骤。其中,计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质中包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频等等,或者上述的任意合适的组合。
41.本发明的另一些实施例还提供了一种人脸识别方法,包括人脸识别模型的训练过
程,该训练过程包含了前述的难正负样本在线挖掘方法的步骤。
42.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献