一种大规模人脸数据集的双阶段噪声清洗方法转让专利

申请号 : CN202111061863.6

文献号 : CN113505120B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 龚勋陈锐吴世杰

申请人 : 西南交通大学

摘要 :

本发明公开了一种大规模人脸数据集的双阶段噪声清洗方法,本发明采用双阶段策略,让网络在训练过程中自发地检测闭集噪声样本和开集噪声样本,最终对闭集噪声样本进行重利用,对开集噪声样本从训练集进行删除。采用本发明方法清洗数据集后,训练出的模型的效果相比未清洗数据集来说在lfw精度上也大大的提高了,经统计可以正确识别出90%以上的噪声,实现非常好的噪声识别效果。清洗后的数据集上的模型训练结果,也大大优于未清洗的数据集上的训练结果,在常见的测试集,如LFW,Age‑DB,cfp‑fp上都证明了这一点。

权利要求 :

1.一种大规模人脸数据集的双阶段噪声清洗方法,其特征在于,包括如下步骤:S1、构建初始人脸数据集D1;

S2、检测数据集D1中的闭集噪声样本及对应的真实类别,输出含有闭集噪声的闭集噪声list文件;

S3、完成闭集噪声的重利用,生成数据集D2;

S4、将数据集D2作为输入继续进行训练,输出含有开集噪声的开集噪声list文件;

S5、根据步骤S4中的开集噪声list文件将数据集D2中的开集噪声进行删除,最终生成清洗后的干净数据集;

所述步骤S2中检测数据集D1中的闭集噪声样本及对应的真实类别具体是:将数据集D1输入到ResNet50网络中并进行训练,利用BoundaryF1 Loss函数对闭集噪声进行检测;

所述步骤S3中的完成闭集噪声的重利用,生成数据集D2,具体是:根据步骤S2输出的闭集噪声list文件,在数据集D1中将闭集噪声样本移动至对应的类别目录内,完成闭集噪声的重利用,并生成数据集D2;

所述步骤S4中输出含有开集噪声的开集噪声list文件具体是:将数据集D2输入到ResNet50网络中继续进行训练,使用NoiseDropLoss损失函数训练,训练过程中保存下每个样本的特征层与权重中心层的向量积,令样本所属类对应的向量值为cosθ,使用一个固定大小的队列不断的保存最新的cosθ以及丢弃最后的cosθ,随着训练的进行,保存下最终的队列,通过高斯混合模型拟合这组数据,并将子模型的个数设为3,得到三个高斯分布的参数,将第二个高斯分布的均值作为判断的阈值,低于该阈值的样本视为开集噪声样本,输出为开集噪声list文件;

所述的BoundaryF1 Loss函数公式如下:where if max{cos(θl+m)for all l≠yi}‑cos(θyi)>0∶yi=l;

其中,N表示一个批次中样本的数量,i表示一个批次内的第i个样本,yi和j均表示某个样本标签的类别,且yi与该第i个样本的标签对应,n表示训练集的类别总数,s为缩放因子,l代表代表所有和i样本不同的类,m为惩罚项,θyi表示第i个样本的特征向量与第yi类的类中心特征向量之间的夹角;θj表示第i个样本的特征向量与第j类的类中心特征向量之间的夹角,在归一化后的超球面上体现为测地距离;

所述NoiseDropLoss损失函数如下:其中,L代表一个批次样本的损失函数,T是一个调制函数,基于d进行判断,对不同的样本分配不同的值。

2.根据权利要求1所述的大规模人脸数据集的双阶段噪声清洗方法,其特征在于:所述步骤S1的初始人脸数据集D1是已经标注标签、进行了人脸的检测和对齐后的数据集。

3.根据权利要求1所述的大规模人脸数据集的双阶段噪声清洗方法,其特征在于:所述的高斯混合模型的概率函数如下:

其中,x代表一次观测数据,θ代表模型的所有参数,k代表第k个子模型,K代表子模型的个数,αk代表观测数据属于第k个子模型的概率,φ(x|θk)代表第k个子模型的高斯分布密度函数。

说明书 :

一种大规模人脸数据集的双阶段噪声清洗方法

技术领域

[0001] 本发明涉及人脸数据集噪声清洗技术领域,具体涉及一种大规模人脸数据集的双阶段噪声清洗方法。

背景技术

[0002] 人脸中的噪声是指在收集制作人脸数据集的时候,产生的带有错误标签的样本。人脸数据集中的噪声包括开集噪声和闭集噪声。闭集噪声又称标签翻转,例如本属于类A的
样本被打上了类B的标签;开集噪声样本,其本身不属于训练集中的任何一个类别,但也被
打上了训练集某个类的标签。
[0003] 噪声数据是大规模人脸数据集中不可避免的现象。现今流行的人脸数据集的规模已经达到了千万级别。如果全部人脸数据都使用人工进行清洗,极其花费时间与金钱,而且
也不能完全消除噪声。噪声样本会严重损坏所训练模型的性能,因此,亟需一种能针对大规
模人脸数据噪声,提供有效、高识别率的清洗方法。

发明内容

[0004] 为解决现有技术中存在的问题,本发明提供了一种大规模人脸数据集的双阶段噪声清洗方法,采用双阶段策略,让网络在训练过程中自发地检测闭集噪声样本和开集噪声
样本,最终对闭集噪声样本进行重利用,对开集噪声样本从训练集进行删除,解决了上述背
景技术中提到的问题。
[0005] 为实现上述目的,本发明提供如下技术方案:一种大规模人脸数据集的双阶段噪声清洗方法,包括如下步骤:
[0006] S1、构建初始人脸数据集D1;
[0007] S2、检测数据集D1中的闭集噪声样本及对应的真实类别,输出含有闭集噪声的闭集噪声list文件;
[0008] S3、完成闭集噪声的重利用,生成数据集D2;
[0009] S4、将数据集D2作为输入继续进行训练,输出含有开集噪声的开集噪声list文件;
[0010] S5、根据步骤S4中的开集噪声list文件将数据集D2中的开集噪声进行删除,最终生成清洗后的干净数据集。
[0011] 优选的,所述步骤S1的初始人脸数据集D1是已经标注标签、进行了人脸的检测和对齐后的数据集。
[0012] 优选的,所述步骤S2中检测数据集D1中的闭集噪声样本及对应的真实类别具体是:将数据集D1输入到ResNet50网络中并进行训练,利用BoundaryF1 Loss函数对闭集噪声
进行检测。
[0013] 优选的,所述的BoundaryF1 Loss函数公式如下:
[0014]
[0015] ;
[0016] 其中, 表示一个批次中样本的数量,表示一个批次内的第 个样本, 和均表示某个样本标签的类别,且 与该第 个样本的标签对应, 表示训练集的类别总
数, 为缩放因子,代表所有和 样本不同的类, 为惩罚项, 表示第 个样本的特征
向量与第 类的类中心特征向量之间的夹角; 表示第 个样本的特征向量与第 类的
类中心特征向量之间的夹角,在归一化后的超球面上体现为测地距离。
[0017] 优选的,所述步骤S3中的完成闭集噪声的重利用,生成数据集D2,具体是:根据步骤S2输出的闭集噪声list文件,在数据集D1中将闭集噪声样本移动至对应的类别目录内,
完成闭集噪声的重利用,并生成数据集D2。
[0018] 优选的,所述步骤S4中输出含有开集噪声的开集噪声list文件具体是:将数据集D2输入到ResNet50网络中继续进行训练,使用NoiseDropLoss损失函数训练,训练过程中保
存下每个样本的特征层与权重中心层的向量积,令样本所属类对应的向量值为 ,使
用一个固定大小的队列不断的保存最新的 以及丢弃最后的 ,随着训练的进
行,保存下最终的队列,通过高斯混合模型拟合这组数据,并将子模型的个数设为3,得到三
个高斯分布的参数,将第二个高斯分布的均值作为判断的阈值,低于该阈值的样本视为开
集噪声样本,输出为开集噪声list文件。
[0019] 优选的,所述的高斯混合模型的概率函数如下:
[0020] ;
[0021] 其中, 代表一次观测数据, 代表模型的所有参数, 代表第 个子模型, 代表子模型的个数, 代表观测数据属于第 个子模型的概率, 代表第 个子
模型的高斯分布密度函数。
[0022] 所述NoiseDropLoss损失函数如下:
[0023]
[0024]
[0025] 其中,L代表一个批次样本的损失函数,T是一个调制函数,基于d进行判断,对不同的样本分配不同的值。
[0026] 本发明的有益效果是:本发明采用双阶段策略,让网络在训练过程中自发地检测闭集噪声样本和开集噪声样本,最终对闭集噪声样本进行重利用,对开集噪声样本从训练
集进行删除,能提高对噪声的识别率,采用本发明方法清洗数据集后,训练出的模型的效果
相比未清洗数据集来说在lfw精度上也大大的提高了, 经统计可以正确识别出90%以上的
噪声,实现非常好的噪声识别效果。清洗后的数据集上的模型训练结果,也大大优于未清洗
的数据集上的训练结果,在常见的测试集, 如LFW,Age‑DB,cfp‑fp上都证明了这一点。

附图说明

[0027] 图1为本发明方法流程步骤示意图。

具体实施方式

[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0029] 请参阅图1,如图1所示,是本发明方法步骤流程,本发明采用双阶段策略,让网络在训练过程中自发地检测闭集噪声样本和开集噪声样本,最终对闭集噪声样本进行重利
用,对开集噪声样本从训练集进行删除。
[0030] 本实施例在WebFace这个人脸数据集上进行了实验,WebFace数据集包括10572个类别,490623个样本。记为D1数据集,该数据集是已经进行人为或者机器标签标注后的数据
集,并且已经进行了人脸的检测和对齐,可以直接用来训练神经网络模型。虽然已经进行了
样本标签的标注,但是人脸数据集庞大,数据集中有很多噪声样本,会导致所训练模型的性
能降低,因此我们要对数据集进行噪声的清洗。本实施例中我们将其中的部分样本替换为
闭集噪声,部分噪声替换为开集噪声,使用ResNet50模型提取特征,进行了实验。
[0031] 第一阶段,检测训练集中的闭集噪声样本及其对应的真实类别。使用ResNet50进行训练,BoundaryF1 Loss对闭集噪声进行检测,最终输出含有闭集噪声的闭集噪声list文
件。BoundaryF1 Loss的公式如下:
[0032]
[0033] ;
[0034] 其中, 表示一个批次中样本的数量,表示一个批次内的第 个样本, 和 均表示某个样本标签的类别,且 与该第 个样本的标签对应, 表示训练集的类别总数,
为缩放因子,代表所有和 样本不同的类, 为惩罚项, 表示第 个样本的特征向量
与第 类的类中心特征向量之间的夹角; 表示第 个样本的特征向量与第 类的类中
心特征向量之间的夹角,在归一化后的超球面上体现为测地距离。
[0035] 根据上一步训练产生的list,在原训练集中将闭集噪声样本移动至对应的类别目录内(原数据集中每个类别的样本都处于每个类别对应的一个目录内。所以,如果一个闭集
噪声本身处于目录1,属于第1类,但我们检测到他应该属于第n个类别,我们则将他移动至
第n个目录(list文件中保存的为监测到的闭集噪声样本所在的绝对路径和其对应的类
别)),完成闭集噪声的重利用,生成数据集D2。闭集噪声我们将其移动到其真实对应的类别
所在的目录内,并没有对其进行删除,所以能更好地将其利用起来用于训练模型,我们将该
部分闭集噪声处理的方法称为闭集噪声的重利用。
[0036] 对于第一阶段,经过我们的实验,能达到闭集噪声84%的噪声识别率。
[0037] 第二阶段,将数据集D2输入到ResNet50网络中继续进行训练,使用NoiseDropLoss损失函数训练,在训练过程中保存下每个样本的特征层与权重中心层的向量积,令样本所
属类对应的向量值为 。使用一个固定大小的队列不断的保存最新的 以及丢弃
最后的 。随着训练的进行,保存下的队列q将反应出训练的状态。如果将队列画成直
方图,直方图将会呈现出两个峰。此时通过高斯混合模型拟合这组数据,并将子模型的个数
设为3,会得到三个高斯分布的参数。高斯混合模型的概率函数如下:
[0038]
[0039] 其中, 代表一次观测数据, 代表模型的所有参数, 代表第 个子模型, 代表子模型的个数, 代表观测数据属于第 个子模型的概率, 代表第 个子模
型的高斯分布密度函数。
[0040] 将第二个高斯分布的均值作为判断的阈值,低于该阈值的样本我们将其视为噪声样本,并输出到开集噪声list中,实现对其的清理。
[0041] 使用上述的高斯混合模型得到阈值d后,使用NoiseDropLoss损失函数,该损失函数由下面两个公式组合而成,所述NoiseDropLoss损失函数如下:
[0042]
[0043]
[0044] 其中,L代表一个批次样本的损失函数,T是一个调制函数,基于d进行判断,对不同的样本分配不同的值。经过统计发现,该方法可以正确识别90%以上的开集噪声,并且大幅
提高数据集的训练效果。
[0045] 在训练完毕后根据list来清理噪声样本。整个过程可以再次进行,根据检测的噪声数量以及直方图的形状判断是否达到较为干净的水平,来决定是否停止。第二阶段,能实
现开集98以上的噪声识别率。清洗数据集后,训练出的模型的效果相比未清洗数据集来说
在lfw上提高了1~2个百分点,在其他数据集例如Age DB,CFP‑FP,CALFW,CPLFW,SLLFW上面
能有2~8个百分点。
[0046] 尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等
同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本
发明的保护范围之内。