基于多粒度混合损失的戴口罩人脸识别方法与电子设备转让专利

申请号 : CN202110808959.8

文献号 : CN113537066B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王一帆杜兵罗翚

申请人 : 烽火通信科技股份有限公司

摘要 :

本发明公开了一种基于多粒度混合损失的戴口罩人脸识别方法,包括:S1.设计基础网络,所述基础网络根据预设的粒度大小产生多个分支;S2.设计混合损失函数,所述混合损失函数采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练优化;S3.基于训练数据集,利用所述混合损失函数,采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练,得到训练后的人脸识别网络模型;S4.利用所述训练后的人脸识别网络模型,对待识别人脸图像进行识别。本发明可以同时兼容戴口罩以及不戴口罩的人脸识别,用混合损失有效拉开不同人脸距离,使阈值调试更为方便灵活,同时提高识别精度,运行速度快,并且方便移植。本发明还提供了相应的电子设备。

权利要求 :

1.一种基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,包括:

S1.设计基础网络,所述基础网络根据预设的粒度大小产生多个分支;

S2.设计混合损失函数,所述混合损失函数采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练优化;

S3.基于训练数据集,利用所述混合损失函数,采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练,得到训练后的人脸识别网络模型;所述混合损失包括以softmax为激活函数的交叉熵分类损失以及边界挖掘损失;所述采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练具体实现为:使用混合损失的方式对于各粒度的各个分支进行训练,其中每一个分支都会同时被边界挖掘损失和以softmax为激活函数的交叉熵分类损失进行优化,同时在分类损失之前使用了BNNeck层;

S4.利用所述训练后的人脸识别网络模型,对待识别人脸图像进行识别。

2.如权利要求1所述的基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,所述基础网络根据预设的粒度大小产生多个分支,包括:在基础网络的中部将特征图分为三个分支,一个分支代表整张人脸,一个分支代表人脸的上部分,一个分支代表人脸的下部分,所述人脸的上部分和下部分按预设比例划分。

3.如权利要求1所述的基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,所述边界挖掘损失具体为:每个batch中有P个ID,k张属于这一ID的人脸图像,即每个batch有P*k张图像,损失计算时遍历batch中的图像,遍历选中的图像被视为锚点记作a,锚点所在ID中的所有的k张图片均会被视为正样本记作p,所有非锚点所在ID的图像均被视为负样本记作n,其中n1,n2则代表负样本中来自不同ID的负样本,Max(da,p)是计算锚点特征和所有正样本特征的欧式距离,然后选取所有欧式距离中的最大值,Min(da,n)需要计算锚点特征与所有负样本特征之间的欧式距离并取最小值,Min(dn1,n2)是计算负样本之间不同ID的欧式距离并找到最小值,m1 m2在损失函数中作为权重项。

4.如权利要求1或2所述的基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,所述训练数据集包括原始人脸训练集和基于原始人脸模拟口罩训练集,其中:所述原始人脸训练集:是用于学习人脸特征的训练集,数据集中每个文件夹代表一个人脸ID,每个ID中包含该人的不同角度光照的人脸图像;

所述基于原始人脸模拟口罩训练集:是用于学习人脸以及戴口罩人脸特征的训练集,数据集中每个文件夹代表一个人脸ID,每个ID中包含该人的不同角度光照的人脸图像,模拟口罩训练集根据口罩样式和人脸角度模拟口罩到相应人脸上,并根据每个文件夹图像数量来决定口罩模拟的占比。

5.如权利要求1或2所述的基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,在训练人脸识别网络模型的过程中,将原始人脸训练集以及基于原始人脸模拟口罩训练集合并,从中打乱随机以Mini Batch的形式输送到人脸识别网络模型中,对网络进行优化。

6.如权利要求1或2所述的基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,所述利用所述训练后的人脸识别网络模型,对待识别人脸图像进行识别,具体为:人脸识别网络模型分别将待识别人脸以及人脸库中的人脸进行特征提取,计算待识别人脸和人脸库中特征向量的内积,得到两个特征向量的余弦距离,通过如下公式计算两个向量的相似度:similarity=(dist+1)/2

其中dist为余弦距离,通过上述公式得到N个相似度代表待识别人脸与人脸库中的N个人脸ID的相似度similarity,从N个相似度中找到相似度最高项,并验证该项是否大于预先设置的人脸相似度阈值,当相似度大于阈值证明底库中存在待识别ID,否则认为人脸库中无此ID。

7.如权利要求6所述的基于多粒度混合损失的戴口罩人脸识别方法,其特征在于,对人脸进行特征提取得到的特征向量为:将三个分支的特征向量进行融合得到该张图像的特征向量。

8.一种电子设备,其特征在于,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑7任一项所述的方法。

说明书 :

基于多粒度混合损失的戴口罩人脸识别方法与电子设备

技术领域

[0001] 本发明属于图像识别技术领域,更具体地,涉及一种基于多粒度混合损失的戴口罩人脸识别方法与电子设备。

背景技术

[0002] 当前人脸识别的训练方法主要依靠单一损失对卷积神经网络进行训练,从网络提取特征向量作为模型输出,分别从待识别图像以及底库提取特征向量后,进行特征比对,最终得到待识别对于底库图像的人脸相似度从而实现人脸识别。但在进行戴口罩的人脸识别时,口罩将人脸大部分特征遮挡,识别精度会大幅下降。
[0003] 目前主流的训练模型是基于分类损失进行训练,且单一的使用基础网络,无法有效将陌生人脸的相似度拉开,体现为特征比对的相似度过于接近,设置阈值时较为敏感。同时主流的人脸识别网络无法有效处理戴口罩人脸的识别问题,体现为戴口罩人脸识别精度较低。

发明内容

[0004] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于多粒度混合损失的戴口罩人脸识别方法,保证正常人脸的识别精度的同时提高戴口罩及遮挡人脸的识别精度。
[0005] 为实现上述目的,按照本发明的一个方面,提供了一种基于多粒度混合损失的戴口罩人脸识别方法,包括:
[0006] S1.设计基础网络,所述基础网络根据预设的粒度大小产生多个分支;
[0007] S2.设计混合损失函数,所述混合损失函数采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练优化;
[0008] S3.基于训练数据集,利用所述混合损失函数,采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练,得到训练后的人脸识别网络模型;
[0009] S4.利用所述训练后的人脸识别网络模型,对待识别人脸图像进行识别。
[0010] 本发明的一个实施例中,所述基础网络根据预设的粒度大小产生多个分支,包括:
[0011] 在基础网络的中部将特征图分为三个分支,一个分支代表整张人脸,一个分支代表人脸的上部分,一个分支代表人脸的下部分,所述人脸的上部分和下部分按预设比例划分。
[0012] 本发明的一个实施例中,所述混合损失包括以softmax为激活函数的交叉熵分类损失以及边界挖掘损失。
[0013] 本发明的一个实施例中,所述采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练具体实现为:
[0014] 使用混合损失的方式对于各粒度的各个分支进行训练,其中每一个分支都会同时被边界挖掘损失和以softmax为激活函数的交叉熵分类损失进行优化,同时在分类损失之前使用了BNNeck层。
[0015] 本发明的一个实施例中,所述边界挖掘损失具体为:
[0016]
[0017] 每个batch中有P个ID,k张属于这一ID的人脸图像,即每个batch有P*k张图像,损失计算时遍历batch中的图像,遍历选中的图像被视为锚点记作a,锚点所在ID中的所有的k张图片均会被视为正样本记作p,所有非锚点所在ID的图像均被视为负样本记作n,其中n1,n2则代表负样本中来自不同ID的负样本;Max(da,p)是计算锚点特征和所有正样本特征的欧式距离,然后选取所有欧式距离中的最大值;Min(da,n)需要计算锚点特征与所有负样本特征之间的欧式距离并取最小值;Min(dn1,n2)是计算负样本之间不同ID的欧式距离并找到最小值;m1m2在损失函数中作为权重项。
[0018] 本发明的一个实施例中,所述训练数据集包括原始人脸训练集和基于原始人脸模拟口罩训练集,其中:
[0019] 所述原始人脸训练集:是用于学习人脸特征的训练集,数据集中每个文件夹代表一个人脸ID,每个ID中包含该人的不同角度光照的人脸图像;
[0020] 所述基于原始人脸模拟口罩训练集:是用于学习人脸以及戴口罩人脸特征的训练集,数据集中每个文件夹代表一个人脸ID,每个ID中包含该人的不同角度光照的人脸图像,模拟口罩训练集根据口罩样式和人脸角度模拟口罩到相应人脸上,并根据每个文件夹图像数量来决定口罩模拟的占比。
[0021] 本发明的一个实施例中,在训练人脸识别网络模型的过程中,将原始人脸训练集以及基于原始人脸模拟口罩训练集合并,从中打乱随机以Mini Batch的形式输送到人脸识别网络模型中,对网络进行优化。
[0022] 本发明的一个实施例中,所述利用所述训练后的人脸识别网络模型,对待识别人脸图像进行识别,具体为:
[0023] 人脸识别网络模型分别将待识别人脸以及人脸库中的人脸进行特征提取,计算待识别人脸和人脸库中特征向量的内积,得到两个特征向量的余弦距离,通过如下公式计算两个向量的相似度:
[0024] similarity=(dist+1)/2
[0025] 其中dist为余弦距离,通过上述公式得到N个相似度代表待识别人脸与人脸库中的N个人脸ID的相似度similarity,从N个相似度中找到相似度最高项,并验证该项是否大于预先设置的人脸相似度阈值,当相似度大于阈值证明底库中存在待识别ID,否则认为人脸库中无此ID。
[0026] 本发明的一个实施例中,对人脸进行特征提取得到的特征向量为:
[0027] 将三个分支的特征向量进行融合得到该张图像的特征向量。
[0028] 按照本发明的另一方面,还提供了一种电子设备,包括:
[0029] 至少一个处理器;以及,
[0030] 与所述至少一个处理器通信连接的存储器;其中,
[0031] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述基于多粒度混合损失的戴口罩人脸识别方法。
[0032] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
[0033] (1)模型多粒度多分支输出,一个模型同时得到不同粒度的特征向量,同时兼容戴口罩以及不戴口罩的人脸识别(识别模型提取到了不同粒度的人脸特征,相互辅助提高精度);
[0034] (2)充分考虑了陌生人脸之间的相似度较高的问题,使用混合损失有效拉开不同人脸距离,使阈值调试更为方便灵活,同时提高识别精度;
[0035] (3)易于部署,易于模型轻量化,支持使用常规的神经网络层,执行效率高,运行速度快,并且方便移植,同时模型架构不受限于基础网络结构,可以动态的根据需求调整使用网络的大小。

附图说明

[0036] 图1是本发明基于多粒度混合损失的戴口罩人脸识别方法的流程示意图;
[0037] 图2是本发明实施例中人脸识别网络模型的结构示意图;
[0038] 图3是本发明实施例中基础网络的前半部分的结构示意图;
[0039] 图4是本发明实施例中基础网络的后半部分的结构示意图。

具体实施方式

[0040] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0041] 为了实现本发明的目的,如图1所示,本发明提供了一种基于多粒度混合损失的戴口罩人脸识别方法,包括:
[0042] S1.设计基础网络,所述基础网络根据预设的粒度大小产生多个分支;
[0043] 设计一个基于深度学习模型,将多个粒度的人脸信息集合到一个模型中并输出多分支的特征向量。即在基础网络的中部(即二分之一层处)将特征图分为多种粒度三个分支,一个分支代表全局粒度表征整个人脸,另两个分支代表人脸的上半部分以及下半部分(将特征图均匀分割成两部分,所述人脸的上部分和下部分按预设比例划分,或按照3:7,4:6的比例进行划分),每一个分支最终输出的特征向量会连接各自的混合损失进行训练优化。混合损失包括以softmax为激活函数的交叉熵分类损失以及边界挖掘损失。经过损失函数优化后每个分支会输出各自的特征向量。在特征提取时会将各个分支的特征向量连接融合成为一个最终的特征向量用于人脸识别。本方法能够减少戴口罩对于模型识别精度的负面影响,同时使用混合损失减小相同人脸ID的距离,并有效拉开不同人脸ID之间的距离,使人脸识别相似度阈值的调整更为准确灵活;
[0044] 总体上看,如图2所示,输入(即输入的图像)经过图像预处理后,再经过前半部分的基础网络后,会在基础网络的中部(即二分之一层处)进行split层操作,若基础网络有100层的深度,则在约第50层会分出多种粒度多个分支(例如本发明实施例中是两种粒度三个分支,即经过图中的前半部分的基础网络后分为三个分支,具体可以根据需要在split层设置;根据粒度大小,相应粒度可能会产生多个分支,如全局粒度只产生一个分支,二分化的粒度会产生两个分支,三分化的粒度会产生三个,以此类推)。虽然当前基础网络的架构基于mobilefacenet,但对于基础网络选择是多样的。如当设备flash,内存有盈余时,本发明对这一情况也进行了支持,支持使用更大更强的基础网络如Resnet50。split层后的网络分化出两种粒度结构(全局粒度和细化粒度),一种粒度代表全局的特征图会形成一个独立的分支(参考图2中的全局粒度‑分支C),另一种粒度代表更细化的粒度即这个粒度中的分支只占特征图二分之一或按照一定比例设计的大小(划分不均匀则会产生两种粒度,粒度的概念就是特征图的大小的一种抽象化概念),当前网络使用均匀划分将特征图划分为两部分形成了两个新的分支即上半边脸和下半边脸Upface和Downface(参考图2中的细化粒度‑上半人脸分支A和细化粒度‑上半人脸分支B)。在设计网络时可以根据实际应用灵活调整比例设置,即可以按照3:7,4:6的比例进行划分,灵活的划分是因为口罩遮挡人脸的比例不固定会根据应用场景如拍摄角度等改变,所以本发明对这一情况也进行了支持,这里的比例是指将特征图在垂直的方向分成两部分。本发明重点在多粒度的网络划分,同时可以根据实际应用情况灵活调整粒度的大小,需要注意的是一旦确定了划分比例,后续的训练以及人脸识别流程都要按照这一比例进行。同时所有粒度分支都会共享前半部分的基础网络的权重并对其进行优化以及梯度反馈。三个分支分别得到特征A、特征B和特征C,再分别对特征A、特征B和特征C进行基于混合损失(边界挖掘损失,以及BNNeck+分类损失)的训练从而得到人脸识别网络模型;而在进行人脸识别时,则直接将三个分支输出的特征A、特征B和特征C连接起来,作为人脸识别的最终特征。
[0045] 在图像输入基础网络前(包括训练及识别)均需要进行图像预处理,图像预处理包括数据中心化,将输入的RGB图像中每个元素的数值减去127.5,中心化后的三通道值域为‑127.5至127.5。数据标准化,将输入数据的每一个元素除以127.5,处理后数据的值域为‑1至1。通过近似的中心化以及标准化后,得到均值近似为0,标准差近似为1的数据分布,有利于模型加速收敛。
[0046] 以下进一步对基础网络进行详细描述,基础网络的整体架构参考自mobilefacenet,同时根据多粒度多分支的设计概念修改了这一基础网络。如图3所示,为基础网络的前半部分,如图4所示,为基础网络的后半部分。
[0047] 如图3所示,基础网络的输入为标准的112x112x3的RGB图像结构,宽高皆为112,与训练数据集图像尺寸保持一致,RGB三通道的值域为0至255。
[0048] conv1层,该层是图像预处理后的第一个神经网络组合层,包括[Conv2d(c_in=3,c_out=64,kernel=3,s=2,p=1)层,BatchNorm层,PRelu层]。Conv2d属性中c_in代表输入通道数,c_out代表输出通道数,kernel代表卷积核大小这里指3x3的卷积核,s为卷积核步长,p为填充。经过conv1后得到56x56x64的输出。
[0049] dw_conv1层,将conv1层的输出作为本层的输入,包括[Conv2d(c_in=64,c_out=64,kernel=3,s=1,p=1,dw=true)层,BatchNorm层,PRelu层]。其中dw=True代表这个卷积为深度可分离卷积。经过dw_conv1层后得到56x56x64的输出。
[0050] BottleNeck层(瓶颈网络),BottleNeck在基础网络中以共用构建模块的形式存在,根据参数控制实现不同的网络结构,如Bottleneck(inp,oup,b_s,expansion)。其中inp代表输入通道数,oup代表输出通道数,b_s代表BottleNeck中的3x3卷积的步长,expansion代表BottleNeck中卷积通道的膨胀系数。通过如上参数将BottleNeck层抽象化包括如下层[Conv2d(c_in=inp,c_out=inp*expansion,kernel=1,s=1,p=0)层,BatchNorm层,PRelu层,Conv2d(c_in=inp*expansion,c_out=inp*expansion,kernel=3,s=b_s,p=0)层,BatchNorm层,PRelu层,Conv2d(c_in=inp*expansion,c_out=oup,kernel=1,s=
1,p=0)层,BatchNorm层,PRelu层]。
[0051] block1层,将dw_conv1层的输出作为本层的输入。block1由若干个bottleneck组成,block1的属性是t=2,c=64,n=5,s=2。其中t=2代表block1中有两个bottleneck,c=64代表block1最终输出的通道数为64。n=5代表bottleneck的膨胀系数,s=2代表第一个bottleneck的卷积步长为2,其余bottleneck的卷积步长为1。最终block1的输出为28x28x64。
[0052] block2层,将dw_conv1层的输出作为本层的输入。block2由若干个bottleneck组成,block2的属性是t=4,c=128,n=1,s=2。最终block2的输出为14x14x128。如图2所示前半部分基础网络的构造就完成了,之后的网络层会将特征图拆分成多种粒度。
[0053] 如图4所示,split层,将block2的输出拆分成3个分支。其中细化粒度‑上半人脸分支A得到7x14x128(up),细化粒度‑下半人脸分支B得到7x14x128(down),全局粒度‑人脸分支C得到14x14x128。
[0054] block3a,block3b,block3c层,将split层三个分支的输出分别作为三个分支层的输入,三个分支层的属性统一为t=2,c=128,n=6,s=1。分别得到三个分支的输出结果,分支A的输出7x14x128,分支B的输出7x14x128,分支C的输出14x14x128。
[0055] block4a,block4b,block4c层,将block3a,block3b,block3c层的输出分别作为当前三个分支层的输入,三个分支层的属性统一为t=4,c=128,n=1,s=2。分别得到三个分支的输出结果,分支A的输出4x7x128,分支B的输出4x7x128,分支C的输出7x7x128。
[0056] block5a,block5b,block5c层,将block4a,block4b,block4c层的输出分别作为当前三个分支层的输入,三个分支层的属性统一为t=2,c=128,n=2,s=1。分别得到三个分支的输出结果,分支A的输出4x7x128,分支B的输出4x7x128,分支C的输出7x7x128。
[0057] linear1a,linear1b,linear1c层,将block5a,block5b,block5c层的输出分别作为当前三个分支层的输入,linear层作为全连接层,是将特征图转换为预设的特征向量的一种方式,这里三个分支的全连接输出都为128,分别得到三个分支的输出结果,分支A的输出1x128,分支B的输出1x128,分支C的输出1x128。
[0058] S2.设计混合损失函数,所述混合损失函数采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练优化;
[0059] 设计混合损失函数是为了最大化程度上优化基础网络的输出也就是三个分支的特征向量。为了这一目标,本发明使用混合损失的方式对于各粒度的各个分支进行训练,其中每一个分支都会同时被边界挖掘损失(margin sample mining loss,简称msml)和以softmax为激活函数的交叉熵分类损失进行优化,同时在分类损失之前使用了BNNeck层,好处是特征向量即可以在自由的欧式空间被边界挖掘损失优化,同时特征向量在被BNNeck处理后会被映射到超球面更适合被分类损失优化。使用BNNeck既可以加速网络的收敛,在神经网络进行反馈时也可以更好的平衡边界挖掘损失在梯度方向同交叉熵分类损失不一致的问题,使网络收敛更加平滑。
[0060] 边界挖掘损失:
[0061]
[0062] 损失函数计算过程中会有batch的概念,每个batch中会有P个ID,k张属于这一ID的人脸图像,即每个batch会有P*k张图像。损失计算时会遍历batch中的图像,遍历选中的图像会被视为锚点(anchor)记作a,锚点所在ID中的所有的k张图片均会被视为正样本(Positive Sample)记作p(小写,区别于之前的ID个数大写),所有非锚点所在ID的图像均被视为负样本(Negative Sample)记作n。其中n1,n2则代表负样本中来自不同ID的负样本。Max(da,p)需要先计算锚点特征和所有正样本特征的欧式距离,然后选取所有欧式距离中的最大值。Min(da,n)同上,计算锚点特征与所有负样本特征之间的欧式距离,并取最小值。Min(dn1,n2)则是计算负样本之间不同ID的欧式距离并找到最小值。m1m2在损失函数中作为权重项根据实际模型收敛情况可以灵活调整,建议设置为0.8,0.4。经过如上损失函数,计算损失后反馈给网络将会优化基础网络中的各个层的权重。从而达到将相同ID之间的距离拉近,将不同ID之间的距离拉远的优化目标。
[0063] BNNeck层:
[0064] BNNeck层,以基础网络的输出特征向量作为输入,包括[transpose,BatchNorm层,transpose]。BNNeck的设计目的是使用BatchNorm来代替L2Norm将特征做近似归一化,但因为BatchNorm层是以通道所在的维度为轴心进行归一化的与设计目的不相符,这里需要使用transpose将输入的通道所在的维度与Mini Batch所在的维度进行置换。BatchNorm之后再次使用transpose将维度置换回原来的形状,便于后续的损失计算。同时BatchNorm层有参数可以吸收后续损失的梯度,让收敛更加平滑。输出维度为1x128。
[0065] softmax交叉熵分类损失:
[0066] 以softmax为激活函数的交叉熵损失,不在基础网络的输出特征向量上直接做优化,以BNNeck层的输出特征向量作为输入,特征经过BNNeck会映射到超球面上即特征向量的模为1去进行优化。最终目标仍旧是优化基础网络的输出特征向量。
[0067] 混合损失:
[0068] 在实际训练过程中,每个分支的边界挖掘损失和交叉熵分类损失都会相加得到最终的损失。深度学习训练框架会根据这一损失自动计算梯度并反馈整个网络同时优化更新所有参与损失计算的每一个网络层的权重。
[0069] S3.基于训练数据集,采用混合损失的方式对所述基础网络的各粒度的各个分支进行训练,得到训练后的人脸识别网络模型;
[0070] 步骤S31:准备训练数据集。为了增强模型的泛化能力,这里使用了两种训练集:原始人脸训练集和基于原始人脸模拟口罩训练集,其中:
[0071] 原始人脸训练集:是用于学习人脸特征的训练集,数据集中每个文件夹代表一个人脸ID,每个ID中包含该人的不同角度光照的人脸图像。每个文件夹图像数量不等,根据实际采集能力一般包含6‑40张左右人脸。
[0072] 基于原始人脸模拟口罩训练集:是用于学习人脸以及戴口罩人脸特征的训练集,数据集中每个文件夹代表一个人脸ID,每个ID中包含该人的不同角度光照的人脸图像。不同于原始人脸训练集,模拟口罩训练集根据口罩样式(N95,KN95,surgical,gas,inpaint,cloth)人脸角度(偏左,居中,偏右)模拟口罩到相应人脸上,并根据每个文件夹图像数量来决定口罩模拟的占比。既要保证人脸识别的精度同时也要平衡足够的戴口罩人脸数量,需要将两种数据即原始人脸训练数据(无口罩)以及模拟口罩数据(有口罩)的比例调试到一个合适的值。目前比例为1:1。
[0073] 步骤S32:训练人脸识别网络模型。首先通过上述的基础网络以及混合损失函数架构搭建基础网络和相应的混合损失。同时在训练基础网络的过程中,会将原始人脸训练集以及基于原始人脸模拟口罩训练集合并,从中打乱随机以Mini Batch的形式输送到人脸识别网络模型中,对网络进行优化训练。
[0074] 步骤S33:导出模型,特征提取。在实际人脸识别网络模型的使用过程中是不需要分类器(分类损失函数),边界挖掘损失函数,BNNeck等操作层的,因为这些操作发生在特征向量之后,只是为了优化网络而存在。将训练网络裁剪去除分类器,边界挖掘损失函数,BNNeck层,只保留基础网络的权重。这样就得到了用于识别流程的人脸识别网络模型。
[0075] concat层:从基础网络可以得到三个分支的特征向量,通过concat操作连接为一个最终的特征向量用于特征比对。该操作层仅发生在识别流程中,输入是基础网络输出的三个特征向量,本层输出是1x384的特征向量。
[0076] 特征提取,在使用识别模型对图像进行特征提取时,从识别模型可以得到三个分支的特征向量,送入concat层得到1x384的特征向量输出。该操作将多个分支的特征向量进行融合。最终融合得到的特征向量具有更强的鲁棒性,多维度特征向量的融合有效提高了该特征向量的表征能力。之后对融合的特征向量使用L2 Normalization做向量归一化,得到的结果向量会作为人脸识别网络特征提取的最终输出。
[0077] S4.利用所述训练后的人脸识别网络模型,对待识别人脸图像进行识别。
[0078] 进行1:N检索时,人脸识别网络模型分别将待识别人脸以及人脸库中的人脸进行特征提取。计算待识别人脸和人脸库中特征向量的内积,可以得到两个特征向量的余弦距离。通过如下公式计算两个向量的相似度:
[0079] similarity=(dist+1)/2
[0080] 其中dist为余弦距离,通过上述方法可以得到N个相似度代表待识别人脸与人脸库中的N个人脸ID的相似度similarity,从N个相似度中找到相似度最高项,并验证该项是否大于预先设置的人脸相似度阈值(这里设置为0.76)。当相似度大于阈值证明底库中存在待识别ID。否则认为人脸库中无此ID。
[0081] 进行1:1验证时,将如上操作中的人脸库替换为目标人脸即可。
[0082] 进一步地,本发明还提供了一种电子设备,包括:
[0083] 至少一个处理器;以及,
[0084] 与所述至少一个处理器通信连接的存储器;其中,
[0085] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述基于多粒度混合损失的戴口罩人脸识别方法方法。
[0086] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。