用于低质量蒙面人脸识别的一致子决策网络

Consistent Sub-Decision Network for Low-Quality Masked Face Recognition

摘要

        提出了一种利用由多个dropout块组成的在线一致性评估结构来获得对应于人脸不同区域的子决策网络,以获得对应于不同面部区域的子决策,并通过加权双向KL散度来约束子决策,使网络集中在上面而没有遮挡的面部。此外,还进行知识蒸馏,以驱动蒙面人脸嵌入接近原始数据分布,以减轻信息丢失。实验表明,所提出的方法在公共蒙面人脸识别数据集(即 RMFD、MFR2 和 MLFW)上的性能优于基线。

创新点

        1)提出了一致的子决策网络来获得对应于不同面部区域的子决策,并通过加权双向KL散度来约束子决策,使网络更加集中于面部区域(上面的脸没有遮挡)。

        2)进行知识蒸馏,以驱动蒙面人脸嵌入接近原始数据分布,以减轻信息丢失。

模型

        使用 FaceX-Zoo为每个正常人脸图像生成蒙版人脸图像,以获得混合训练数据集。假设正常人脸图像集、混合人脸图像集和身份标签集,组成一对数据集 D 。两个样本 {x_i}^N,{x_i}^M表示为作为来自同一身份的正常人脸图像及其对应的蒙版人脸图像。

        所提出的一致子决策网络的结构。在图的上部,每个人脸被提取成特征图,作为dropout模块的输入以获得多个子决策,不同的颜色区分了具有不同遮罩盖的面部图像的 dropout 模块的输出。应用双向KL散度约束来自动确定子决策一致性的优化方向。在图的下部,使用预训练的正常人脸识别模型来为上面的学生网络提炼指导性知识。

A. 一致的子决策网络

        基于模拟的方法提出从未蒙蔽的面孔生成蒙蔽的面孔。然而,在这些模拟人脸中,仍然存在一些具有负遮挡的低质量样本,从而导致面部特征模糊或缺失。为了解决这个问题,利用由多个dropout块组成的在线一致性评估结构来获得对应于人脸不同区域的子决策。子决策受到加权双向 KL 散度的约束,使网络更多地集中在没有遮挡的上表面上,并提取更多的判别性特征。

        在线子决策一致性评估方法的结构。展平后的特征图通过 dropout 模块生成子决策。一致性是通过子决策之间的 KL 散度来衡量的。

        给定来自D的人脸图像X,首先使用特征图生成器提取输入人脸图像的特征图。然后特征图被展平并通过多个 dropout 块以获得对应于不同面部区域的子决策,这些子决策被收集,并且在实现中设置 n =3。由于已经证明,在网络上重复应用dropout可以近似高斯过程的不确定性,我们进一步将这种不确定性扩展到子决策。在子决策之间应用双向KL散度计算来确定一致性值C(X)。

        子决策一致性可用于从模拟蒙面图像中检测低质量样本。首先,计算子决策之间的分歧。然后,应用激活函数来计算每个输入人脸图像的一致性值。一致性得分输出是[0,1]之间的概率值。如图2所示,可以看到一致性可以应用于从模拟蒙面图像中检测低质量样本。

        子决策一致性可用于从模拟蒙面图像中检测低质量样本。值越大表示子决策一致性和图像质量越高。

        为此,知道低子决策一致性值对应于模拟人脸图像中的低质量样本。然而,不同的子决策侧重于具有不同识别信息的不同面部区域。因此,寻求迫使具有低识别信息的子决策逼近具有高识别信息的子决策,从而使网络更多地集中在上表面而没有遮挡。为了自动评估每个子决策的信息程度,应用概念分支的输出作为双向KL散度约束中的权重。

 B. 知识蒸馏

        正常人脸比蒙面人脸包含更多的识别性身份信息。寻求使蒙面人脸嵌入接近正常人脸嵌入,以减轻信息丢失。具体来说,使用预训练的模型来执行知识蒸馏。给定一对面部图像X^N,X^M,从教师和学生模型中获得正常人脸嵌入 f^N和蒙面人脸嵌入 f^M。为了充分利用不同的面部区域信息,进一步应用概念分支的权重来获得加权嵌入,可以表示为:

        其中,M_{teacher}是预训练模型的嵌入编码器,G是特征图生成器,D_i是第i个dropout块,w^i表示概念分支的输出。使用嵌入之间的余弦距离方法来进行知识蒸馏作为正则项:

        为了保持类间差异和类内聚合,我们使用 CosFace作为我们的分类损失函数,它可以表示为

        总体损失函数公式如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酒店PMS系统源码之会员系统读取身份证-CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、酒店 PMS()会员系统 1. 客户关系管理:帮助酒店有效地管理会员信息,包括个人资料、消费记录、偏好等,从而更好地了解会员需求,提供个性化的服务和优惠。 2. 会员忠诚度提升:通过积分、折扣、…

学习C语言(18)

整理今天的学习内容 1.strcmp的使用和模拟实现 strcmp是用来比较字符串的大小的 比较方式:比较两个字符串中对应位置上字符ASCII码值的⼤小 第⼀个字符串大于第二个字符串,则返回⼤于0的数字 第⼀个字符串等于第二个字符串,则返回0 第⼀…

【python计算机视觉编程——3.图像到图像的映射】

python计算机视觉编程——3.图像到图像的映射 3.图像到图像的映射3.1 单应性变换3.1.1 直接线性变换算法(DLT)3.1.2 仿射变换 3.2 图像扭曲3.2.1 图像中的图像3.2.2 分段仿射扭曲3.2.3 图像配准 3.3 创建全景图3.3.1 RANSAC3.3.2 稳健的单应性矩阵估计3.…

机器学习/数据分析--通俗语言带你入门决策树(结合分类和回归案例)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 机器学习是深度学习和数据分析的基础,接下来将更新常见的机器学习算法注意:在打数学建模比赛中,机器学习用的也很多&a…

从零开始:渗透测试环境安装详细教程

一、引言 在进行渗透测试之前,搭建一个合适的渗透测试环境是至关重要的。一个良好的渗透测试环境可以帮助我们更好地学习和实践渗透测试技术,同时也可以降低对实际生产环境造成的风险。本文将详细介绍如何安装渗透测试环境,包括选择虚拟机软…

李沐--动手学深度学习 批量规范化

1.理论 2.从零开始实现批量规范化 import torch from torch import nn from d2l import torch as d2l from torch.utils.hooks import RemovableHandle #从零开始实现批量规范化 def batch_norm(X,gamma,beta,moving_mean,moving_var,eps,momentum):#通过is_grad_enabled来判断…

PyCharm汉化:简单一步到胃!PyCharm怎么设置中文简体

最近在弄python的项目 一起加油哦 步骤: PyCharm的汉化可以通过两种主要方法完成: 方法一:通过PyCharm内置的插件市场安装中文语言包 1. 打开PyCharm,点击File -> Settings(在Mac上是PyCharm -> Preferences…

java一键生成数据库说明文档html格式

要验收项目了,要写数据库文档,一大堆表太费劲了,直接生成一个吧,本来想用个别人的轮子,网上看了几个,感觉效果不怎么好,自己动手写一个吧。抽空再把字典表补充进去就OK了 先看效果: …

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中,经常需要处理一些接口请求的参数,参数来源形式很多,可能是Excel、知识库文档等,有些数据形式比较复杂,比如多行或者包含很多不同的字符,示例如下: **客服质检分析指引** …

【精选】分享9款AI毕业论文生成初稿题目网站

在当今学术研究领域,AI技术的应用日益广泛,尤其是在学术论文的撰写过程中。AI论文生成器的出现,极大地简化了学术写作流程,提高了写作效率。以下是9款推荐的AI毕业论文生成初稿的网站,它们各有特色,能够满足…

MFC工控项目实例之七点击下拉菜单弹出对话框

承接专栏《MFC工控项目实例之六CFile添加菜单栏》 1、在SEAL_PRESSUREDlg.h文件中添加代码 class CSEAL_PRESSUREDlg : public CDialog { ...afx_msg void OnTypeManage(); ... } 2、在SEAL_PRESSUREDlg.cpp文件中添加代码 BEGIN_MESSAGE_MAP(CSEAL_PRESSUREDlg, CDialog)//…

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

Python爬虫——简单网页抓取(实战案例)小白篇

Python 爬虫是一种强大的工具,用于从网页中提取数据。这里,我将通过一个简单的实战案例来展示如何使用 Python 和一些流行的库(如 requests 和 BeautifulSoup)来抓取网页数据。 实战案例:抓取一个新闻网站的头条新闻标…

Windows上传Linux文件行尾符转换

Windows上传Linux文件行尾符转换 1、Windows与Linux文件行尾符2、Windows与Linux文件格式转换 1、Windows与Linux文件行尾符 众所周知,Windows、Mac与Linux三种系统的文件行尾符不同,其中 Windows文件行尾符(\r\n): L…

使用kafka改造分布式事务

文章目录 1、kafka确保消息不丢失?1.1、生产者端确保消息不丢失1.2、kafka服务端确保消息不丢失1.3、消费者确保正确无误的消费 2、生产者发送消息 KafkaService3、UserInfoServiceImpl -> login()4、service-account - > AccountListener.java 1、kafka确保消…

day31-测试之性能测试工具JMeter的功能概要、元件作用域和执行顺序

目录 一、JMeter的功能概要 1.1.文件目录介绍 1).bin目录 2).docs目录 3).printable_docs目录 4).lib目录 1.2.基本配置 1).汉化 2).主题修改 1.3.基本使用流程 二、JMeter元件作用域和执行顺序 2.1.名称解释 2.2.基本元件 2.3.元件作用域 1).核心 2).提示 3).作用域的原则 2.…

Redis 实现哨兵模式

目录 1 哨兵模式介绍 1.1 什么是哨兵模式 1.2 sentinel中的三个定时任务 2 配置哨兵 2.1 实验环境 2.2 实现哨兵的三条参数: 2.3 修改配置文件 2.3.1 MASTER 2.3.2 SLAVE 2.4 将 sentinel 进行备份 2.5 开启哨兵模式 2.6 故障模拟 3 在整个架构中可能会出现的问题 …

go中 panicrecoverdefer机制

go的defer机制-CSDN博客 常见panic场景 数组或切片越界,例如 s : make([]int, 3); fmt.Println(s[5]) 会引发 panic: runtime error: index out of range空指针调用,例如 var p *Person; fmt.Println(p.Name) 会引发 panic: runtime error: invalid m…

网络通信tcp

一、udp案例 二、基于tcp: tcp //c/s tcp 客户端: 1.建立连接 socket bind connect 2.通信过程 read write close tcp服务器: 1.建立连接 socket bind listen accept 2.通信过程 read write close connect函数 int connect(int sockfd, con…

Git克隆仓库太大导致拉不下来的解决方法 fatal: fetch-pack: invalid index-pack output

一般这种问题是因为某个文件/某个文件夹/某些文件夹过大导致整个项目超过1G了导致的 试过其他教程里的设置depth为1,也改过git的postBuffer,都不管用 最后还是靠克隆指定文件夹这种方式成功把项目拉下来 1. Git Bash 输入命令 git clone --filterblob:none --sparse 项目路径…