通过模板级知识蒸馏进行掩模不变人脸识别

2024-08-26 12:12

本文主要是介绍通过模板级知识蒸馏进行掩模不变人脸识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Mask-invariant Face Recognition through Template-level Knowledge Distillation

创新点

        1.提出了一种掩模不变人脸识别解决方案(MaskInv),该解决方案在训练范式中利用模板级知识蒸馏,旨在生成与相同身份的非蒙面人脸相似的蒙面人脸嵌入。

        2.除了提炼的信息之外,学生网络还受益于基于边缘的身份分类损失,ElasticFace,使用蒙面和非蒙面面孔的额外指导。

        学生模型使用蒙面和非蒙面人脸图像进行训练,以便它可以处理这两种情况,而 KD 过程确保模型生成的蒙面人脸嵌入与相同身份的非蒙面人脸嵌入相似。

网络结构

        通过共同学习蒙版和非蒙版人脸图像的正确身份分类,并通过嵌入级别 KD 确保蒙版人脸的嵌入与相同身份的非蒙版图像的嵌入相似来实现。 KD 教导学生网络以产生类似于老师生成的非蒙面人脸嵌入的嵌入的方式处理蒙面人脸,从而尝试忽略蒙版引入的非身份相关信息。

        在非蒙面人脸上训练的性能良好的人脸识别模型充当我们知识蒸馏架构中的教师模型。第二个 FR 系统充当学生网络,并通过与教师模型的交互进行训练,使其具有掩模不变性,从而从蒙面面部生成的嵌入与从非蒙面面部生成的嵌入相似。

        所提出的蒙面人脸识别 MaskInv 方法概述:预先训练的教师网络和要训练的学生网络转发相同的图像。当概率 pMask 为 0.5 时,将合成掩模添加到学生网络的输入图像中。在训练过程中,计算教师网络和学生网络的人脸嵌入之间的均方误差(LKD)。然后,计算出的误差会影响学生网络的总体损失 LTotal,该网络还使用 ElasticFace-Arc 损失进行训练。

        图 1给出了所提出的学习场景的示意图。在训练期间,相同的图像同时输入到教师和学生模型。在转发到学生模型的图像上,应用具有概率 pMask 的合成掩模,而转发到教师网络的图像保持不变。合成掩模是通过在面部上放置掩模模板来创建的,具体取决于图像预处理期间用于面部对齐的标志。合成掩模应用于输入学生模型的部分图像(概率 pMask),以确保它仍然能够以最佳方式处理非掩模面部,并实现更稳定的训练过程。对于教师网络,使用预先训练的辅助网络来指导新训练的学生网络。学生网络不仅经过训练以产生正确的分类决策,而且还优化生成的嵌入,使其与教师网络的嵌入相似(在非遮蔽面孔上)。因此,学生网络使用由两种不同损失组成的组合损失 LTotal 进行训练。正式地,将总损失 LTotal 定义为:

其中,LElasticArc指的是损失函数ElasticFace-Arc,LKD指的是模板级KD过程中的均方误差损失。 ElasticFace-Arc 损失函数放宽了类似高性能 FR 损失函数的固定边距约束,因此为灵活的识别可分离性提供了空间。它优于其他几个 SOTA FR 损失函数,尤其是在硬交叉姿势基准测试中 。形式上,它可以定义为:

其中 N 表示批量大小,c 表示身份数量,s 表示尺度参数,m 表示裕度参数,σ 表示标准差。,函数 E(m,σ) 返回平均值为 m 且标准差为 σ 的高斯分布的随机值。

        LKD 作为教师网络的特征嵌入和学生网络的特征嵌入之间的 KD 的一部分进行计算,以优化嵌入本身而不是网络分类行为。这确保了由掩模引起的嵌入失真保持在最低限度,从而指导 KD 过程生成掩模不变的学生网络。使用的 LKD 损失(均方误差)可以形式化为:

其中 ΦS i 和 ΦT i 分别是从学生和教师模型的嵌入层获得的特征表示,D 是嵌入的大小。

        由于学习到的特征嵌入被归一化,LKD 的范围相当小,因此,在第一个训练步骤中用权重 λ = 100 对它们进行加权。这使得 LKD 有助于整体损失,同时保持对 LElasticArc 学习身份分类的重视,从而实现知识转移。

        基于上述方法提出了两种不同的范例。在MaskInv-HG(掩模不变高指导)方法中,当LElasticArc损失稳定时,将权重增加到λ = 3000,以进一步强调网络对掩模数据的适应。在 MaskInv-LG(掩模不变低指导)方法中,权重在整个训练过程中保持不变。对于详细的消融研究,还提供了第三种解决方案的结果,其中 λ 设置为零,因此不应用 KD,而是使用用概率为 pMask 的合成掩模增强的面部来独立训练学生网络,该解决方案将被称为 ElasticFace-Arc-Aug。

总结

       在本文中,提出了一种口罩不变的人脸识别解决方案,该解决方案不仅旨在构建有判别性的人脸嵌入,还将这一目标扩展到构建无论是否佩戴口罩都保持身份内相似性的嵌入。这种新颖的方法,即 MaskInv,基于通过身份分类学习共同学习在戴着面具的情况下区分身份,并通过来自教师网络的嵌入级 KD 学习为相同身份的蒙面和非蒙面面孔生成类似的嵌入。所提出的解决方案优于当前的 SOTA 方法。此外,提出的解决方案在验证非蒙面人脸时保持了高水平的准确性,所提出的掩模不变人脸表示学习的潜力可能不仅限于其用于蒙面人脸识别,而且还可以证明对于一般的遮挡人脸识别问题有用,这仍有待研究。

这篇关于通过模板级知识蒸馏进行掩模不变人脸识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108531

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

基于Java实现模板填充Word

《基于Java实现模板填充Word》这篇文章主要为大家详细介绍了如何用Java实现按产品经理提供的Word模板填充数据,并以word或pdf形式导出,有需要的小伙伴可以参考一下... Java实现按模板填充wor编程d本文讲解的需求是:我们需要把数据库中的某些数据按照 产品经理提供的 word模板,把数据

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异