人脸识别的多样化和稀疏关注对姿势变化和遮挡具有鲁棒性

news2024/11/20 1:30:07

DSA-Face: Diverse and Sparse Attentions for Face Recognition Robust to Pose Variation and Occlusion

一、创新点

        1.提出了成对自我对比注意力来强制模型提取不同的局部特征;

        2.设计注意力稀疏性损失是为了鼓励注意力图中的稀疏反应,阻止对分散注意力的区域的强调,同时鼓励对有区别的面部部位的关注。

二、模型

        提出了多样化和稀疏注意力,称为 DSA-Face。首先,散度损失旨在通过最大化每对注意力图之间的欧几里得距离来明确鼓励多个注意力图之间的多样性。因此,开发了成对自我对比注意(PSCA)来定位提供全面描述的不同面部部位。其次,提出了注意力稀疏损失(ASL)来鼓励注意力图中的稀疏响应,其中仅强调有区别的部分,而不鼓励分散注意力的区域(例如背景或面罩)。 DSA-Face 模型建立在 PSCA 和 ASL 的基础上,旨在学习多样化和稀疏的注意力,它可以提取多样化的判别性局部表示并抑制对噪声区域的关注。

        主要包括成对自我对比注意力(PSCA)和注意力稀疏损失(ASL)。首先,PSCA以自我对比的方式扩大了成对注意力距离。以这种方式,鼓励不同的注意力图相互排斥,从而定位不同的面部部位。PSCA 能够通过扩大成对注意力距离来提取不同的局部表示。由于每个图像细节都是在 PSCA 的指导下进行彻底挖掘的,因此如果没有明确的信号,则可能会提取一些噪声信息,例如背景或面罩。其次,ASL 将注意力图中分散区域的反应缩小到零。因此,仅强调有区别的部分,而不鼓励分散注意力的区域。

        总体框架如图3所示。主干CNN提取高级特征图以提取不同的局部特征。然后使用多个局部分支来提取不同的局部特征,这些特征由 PSCA 和 ASL 指导。提取局部特征并用于预测身份。

        总体框架:LPSCA 鼓励模型通过挖掘每个面部图像细节来定位不同的局部块。 LASL 引导模型在注意力图中做出稀疏响应,从而抑制对分散区域的强调。GAP和FC分别表示全局平均池化和全连接层。LCls 是学习判别特征的分类损失。 LANet是[8]中的空间注意力,其中h、w和c分别是特征图的高度、宽度和数量,r是缩减比率。

A. 成对自我对比注意力

        由于不同的本地分支使用相同的架构(即LANet),如果没有适当的指导,将会学习到高度相似的参数。这会导致注意力冗余问题。因此,应该设计一个多元化先验,旨在多元化多个本地分支机构。成对自我对比注意力(PSCA),它由散度损失 LPSCA 引导。损失定义如下:

        其中, Mi 和 Mj 分别表示由第 i 个和第 j 个局部分支生成的注意力图。 B是局部分支的总数,t是指超参数边距,dist(Mi,Mj)是Mi和Mj之间的欧氏距离。它最大化 Mi 和 Mj 之间的距离,并最小化 Mi 和 Mj 之间的距离。请注意,Mj + Mj` = E,其中 E 是一个全 1 元素的矩阵,这意味着 Mj 中响应高的区域在 Mj` 中响应低,反之亦然。

        对于 FR 中的局部表示,只有少数重要的局部斑块(例如鼻子、嘴巴、双眼或嘴巴)可以发挥至关重要的作用。因此,预计 Mi 和 Mj 在少数部分上有稀疏响应。另一方面,Mj` 在大的不重要区域周围有很高的响应。因此,dist(Mi , Mj`)往往比 dist (Mi , Mj ) 大得多。因此,我们使用一个系数(即α)来平衡这两个值。PSCA中不太可能出现注意力子集问题。通过这种方式,鼓励不同的地方分支相互排斥并提取更多样化的参数。

B. 注意力稀疏损失

        应该强调少数有区别的部分,并且应该抑制不重要或分散注意力的区域。因此,注意力响应应该是稀疏的。提出了一种注意力稀疏损失 LASL 来增强目标函数,其定义如下:

        其中B是当地分支机构的总数。 h 和 w 是注意力图 Mi 的高度和宽度。这个想法背后的主要动机是通过鼓励注意力图中的响应稀疏性来施加稀疏性惩罚损失。通过惩罚高响应区域,LASL 将注意力图中的值限制为零。通过这种方式,只有有用的面部部位才会做出反应,而分散注意力的区域则被抑制。

C. 总体损失

        为了监督网络学习判别性特征,应该使用分类损失LCls,包括CosFace损失(LCls-cosface)和ArcFace损失(LCls-arcface),它们可以生成判别性特征。 CosFace 损失的公式如下:

        其中 N 代表样本数。 m 是使角度空间中的决策裕度最大化的余弦裕度。样本 xi 被归一化并重新缩放为 s,属于 yi 类。

        ArcFace 损失中使用附加角边距惩罚 m 来鼓励类内紧凑性和类间差异:

在我们的方法中,总体损失计算如下:

        其中 LCls 是分类损失,监督网络学习受试者之间的区分。 LPSCA 鼓励不同面部部位的本地化。由于每个细节都是在图像中探索的,LCl 可能无法过滤掉一些分散注意力的区域,例如面罩或其他被遮挡的部分。为了解决这个问题,LASL 能够增强抑制噪声响应的能力。 λ和β控制这三种损失的平衡。

三、实验

        DSA-Face[a]采用ResNet-100[38]作为主干CNN,ArcFace 损失进行监督;

        DSA-Face[c]采用LS-CNN[8]作为主干CNN,由ArcFace 损失进行监督;

        DSA-Face[b]使用LS-CNN[8]作为主干 CNN,由CosFace 损失进行监督;

        DSA-Face[d]使用LS-CNN-177作为主干,CosFace 损失进行监督;

        我们在表 III 中展示了我们的 DSA-Face 模型在 M2N、M2M 和 MLFW 协议上的结果。M2N是指蒙面人脸与正常人脸之间的匹配。M2M是指蒙面与蒙面人脸之间的匹配。MLFW 表示masked LFW 数据集中的协议。错误接受率 (FAR) = 0.1、0.01 和 0.001 时的真实接受率 (TAR) 值, d 表示 Rank-1 准确度。

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

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

相关文章

【亲测有效】无法获得下列许可 SOLIDWORKS Standard 无效的(不一致的) 使用许可号码 (-8,544,0)

在观看本文章前,请注意看你的报错代码是否和我的一致,如果不是,直接跳过本文章。 前言:我安装的是SOLIDWORKS2022版,软件已经安装完毕,SolidWorks_Flexnet_Server文件夹里面的两个注册表已经安装完毕&#…

xss 盲打使用

使用beef等内网xss平台,或外网xss平台(XSS平台-仅用于xss安全测试专用、XSS平台 - (支持http/https)XSS Platform) 将生成的js脚本写到网站的留言框处,但对应的用户(尤其是admin)查看留言,就会…

MySQL原理(一)架构组成之逻辑模块(1)组成

总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query cache的处理等等&…

centos 7 部署若依前后端分离项目

目录 一、新建数据库 二、修改需求配置 1.修改数据库连接 2.修改Redis连接信息 3.文件路径 4.日志存储路径调整 三、编译后端项目 四、编译前端项目 1.上传项目 2.安装依赖 3.构建生产环境 五、项目部署 1.创建目录 2.后端文件上传 3. 前端文件上传 六、服务启…

Linux——存储管理

文章目录 基本分区磁盘简介磁盘分类linux的磁盘命名磁盘的分区方式 管理磁盘虚拟机添加硬盘查看磁盘信息磁盘分区流程创建分区创建文件系统挂载mount查看挂载信息 剩余空间继续分区MBR如何划分更多的分区为什么只能有4个主分区扩展分区的引入 逻辑卷LVM是什么特点术语创建LVMVG…

【二进制漏洞】缓冲区溢出漏洞

天命:好像复现成功了,又好像没有完全成功 学习视频:抓住漏洞!缓冲区溢出漏洞利用实例,如何利用溢出执行Shell Code_哔哩哔哩_bilibili 漏洞复现 实验环境:kali (其实啥都试过,windo…

二叉树(1)

1 树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&a…

Git―基本操作

Git ⛅认识 Git⛅安装 GitCentos(7.6)Ubuntu ⛅Git―基本操作创建本地仓库🍂配置本地仓库🍂工作区, 暂存区, 版本库🍂版本库工作区 添加文件🍂查看文件🍂修改文件🍂版本回退🍂☃️案例 撤销修改…

Linux一键部署telegraf 实现Grafana Linux 图形展示

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

【iOS ARKit】2D肢体动作捕捉

人体肢体动作捕捉在动漫影视制作、游戏CG 动画、实时模型驱动中有着广泛的应用,利用 ARKit,无须额外的硬件设备即可实现 2D和3D人体一系列关节和骨骼的动态捕捉,由于移动AR 的便携性及低成本,必将促进相关产业的发展。 ARBody Tr…

2024牛客寒假算法基础集训营1

文章目录 A DFS搜索M牛客老粉才知道的秘密G why外卖E 本题又主要考察了贪心B 关鸡C 按闹分配 今天的牛客,说是都是基础题,头昏昏的,感觉真不会写,只能赛后补题了 A DFS搜索 写的时候刚开始以为还是比较难的,和dfs有关…

【甲方安全建设】DevOps初体验

文章目录 前言传统的开发方式:Docker-解决环境问题 DevOps-CI/CD走向流水线Jenkins工作流程Git拉取代码Maven构建打包通过SSH连接后端服务器 实现效果 DevSecOps-安全赋能关于安全平台漏洞扫描漏洞预警TODO 前言 临近春节,笔者经过半年北漂,…

【GitHub项目推荐--一个由OpenAI提供支持的聊天机器人和虚拟助手的构建平台】【转载】

Botpress Botpress是一个开源项目,它提供了一个平台,用于构建、部署和管理基于人工智能的聊天机器人和虚拟助手 github地址: https://github.com/botpress/botpress Botpress的介绍 Botpress是一个开源项目,它提供了一个平台&…

【PaddleSpeech】语音合成-男声

环境安装 系统:Ubuntu > 16.04 源码下载 使用apt安装 build-essential sudo apt install build-essential 克隆 PaddleSpeech 仓库 # github下载 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 也可以从gitee下载 git clone https://gite…

音视频数字化(音乐CD)

上篇文章【音视频数字化(音频数字化)】我们聊了音频数字化原理,其中谈到了音乐CD,结尾也提到了一个小问题:“CD音质是最高吗?为什么?”不知道大家是怎么理解的。 其实CD质量只是“无损”存储,但是数字化标准只是“44.1kHz,16bit”,因此相对于现在,音质不能说最高。 …

day03.函数与指针(含new与delete关键字)

一.指针 #include<iostream> using namespace std; #define pi 3.14159//定义常量int main(){cout<<pi<<endl;int a10;int *pNULL;//定义指针p&a;cout<<"a的地址为&#xff1a;"<<p<<endl;cout<<"a"<&l…

【面试深度解析】快手后端一面:G1、IOC、AOP、并发、JVM生产问题定位、可重复读、ThreadLocal

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

C# 引用同一个dll不同版本的程序集

因为项目需要所以必须在项目中引用不同版本的同一程序集 我要引用的文件是newtonsoft.json.dll 两个版本为12.0.0.0 和4.0.0.0 1.如果已经先引入了newtonsoft.json 12.0.0.0版本的程序集&#xff0c;如果直接引入另一个版本的程序集的话会提示不成功&#xff0c;所以先将另一个…

C++学习Day01之双冒号作用域运算符

目录 一、程序二、输出三、分析与总结 一、程序 #include<iostream>int atk 1000; void test01() {int atk 2000;std::cout << "atk " << atk << std::endl;// ::代表作用域 如果前面什么都不添加 代表全局作用域std::cout << &q…

c++阶梯之auto关键字与范围for

auto关键字&#xff08;c11&#xff09; 1. auto关键字的诞生背景 随着程序的逐渐复杂&#xff0c;程序代码中用到的类型也越来越复杂。譬如&#xff1a; 类型难以拼写&#xff1b;含义不明确容易出错。 比如下面一段代码&#xff1a; #include <string> #include &…