当前位置: 首页 > news >正文

人脸识别——探索戴口罩对人脸识别算法的影响

1. 概述

人脸识别是一种机器学习技术,广泛应用于各种领域,包括出入境管制、电子设备安全登录、社区监控、学校考勤管理、工作场所考勤管理和刑事调查。然而,当 COVID-19 引发全球大流行时,戴口罩就成了日常生活中的必需品。广泛使用的人脸识别技术受到严重影响,传统人脸识别技术的性能显著下降。虽然在过去几年中已有报道称支持口罩的人脸识别模型达到了一定的准确度,但佩戴口罩对人脸识别的影响尚未得到充分研究。
因此,本文比较并评估了多种人脸识别模型在辨别 "蒙蔽 "和 "未蒙蔽 "人脸图像时的性能。本文使用了六种传统的机器学习算法:支持向量机(SVC)、K 近邻(KNN)、线性判别分析(LDA)、决策树(DT)、逻辑回归(LR)和天真贝叶斯(NB)。(深度学习模型尚未经过验证)。
它研究了蒙面人脸图像的最佳和最差性能模型。论文还根据一个蒙面和未蒙面人脸图像数据集以及一个半蒙面人脸图像数据集对性能进行了评估。与以往的研究相比,本文的独特之处在于研究了广泛的面具佩戴数据和机器学习模型。
论文地址:https://arxiv.org/pdf/2306.08549.pdf

2. 机器学习模型和数据集

本文评估了六种模型:支持向量机(SVC/Support Vector Classifier)、线性判别分析(LDA/Linear Discriminant Analysis)、K-近邻(KNN/K-Nearest Neighbours)、决策树(DT/Decision Trees)、逻辑回归(LR/Logistic Regression)和奈夫贝叶斯(NB/Naïve Bayes)。(DT/决策树)、逻辑回归(LR/逻辑回归)和奈夫贝叶斯(NB/奈夫贝叶斯)。

该数据集还使用了 (ORL),其中包含 41 个受试者和每个受试者 10 张图像,共计 410 张未掩盖的人脸图像。下图显示了 ORL 的样本数据。

本文使用开源软件 MaskTheFace 为 ORL 人脸图像添加面具,并制作出佩戴面具的人脸图像。佩戴的面具是从六个面具模板中随机选择并添加的。下图显示了添加面具后的样本数据。

2. 实验细节

本文使用上述机器学习模型和数据集进行了六项实验。请注意,在所有实验中,特征提取都使用了局部二进制模式(LBP)算法。

**(实验 1)**在为 41 名受试者每人准备的 10 幅图像中,有 9 幅被用作未戴面罩的人脸图像,并对 6 个机器学习模型进行训练。在为 41 名受试者每人准备的 10 张图像中,剩下的一张也用作无遮罩的人脸图像,并对每个机器学习模型进行测试。

(实验 2)在为 41 名受试者每人准备的 10 张图像中,9 张作为未戴面罩的人脸图像用于训练 6 个机器学习模型。在为 41 名受试者每人准备的 10 张图像中,剩下的一张图像将与 MaskTheFace 一起使用,作为戴面具的人脸图像对每个模型进行测试。图 3

(实验 3)在为 41 名受试者每人准备的 10 幅图像中,有 9 幅被用作戴了面具的人脸图像,并训练了 6 个机器学习模型。在为 41 名受试者每人准备的 10 张图像中,剩下的一张也被用作无面具人脸图像,用于测试每个机器学习模型。

(实验 4)在为 41 名受试者每人准备的 10 幅图像中,有 9 幅被用作戴上面具后的人脸图像,并训练了 6 个机器学习模型。然后,使用 MaskTheFace 将为 41 名受试者分别准备的 10 幅图像中的其余一幅图像作为戴上面具的人脸图像,对每个模型进行测试。图 4

(实验 5)在为 41 名受试者每人准备的 10 幅图像中,保留一幅图像用于测试,其余 9 幅图像中的 4 幅在 MaskTheFace 软件中组合为戴面具的人脸图像,4 幅为未戴面具的人脸图像,总共 8 幅人脸图像。这样就形成了一个半数人脸图像戴有面具的数据集。利用这个数据集,可以训练出六个机器学习模型,每个模型都要在一张未戴面具的人脸图像上进行测试。

**(实验 6)**使用实验 5 中创建的数据集训练了六个机器学习模型,该数据集由半张被遮挡的人脸图像组成,每个模型都在单张被遮挡的人脸图像上进行了测试。图 5

3. 实验结果

下表显示了六个机器学习模型在所有六个实验中的准确率。对于在未屏蔽人脸图像(UM)上训练并在屏蔽人脸图像(M)上测试的机器学习模型(UM/M),LDA 的准确率下降幅度最小,为 61%,而 KNN 的准确率下降幅度最大,为 24%。还可以看出,对于在蒙版人脸图像(M)上训练并在蒙版图像(M)上测试的机器学习模型,LR 的准确率最高,为 80%,而 KNN 的准确率最低,为 37%。

下表显示了六种机器学习模型在所有六次实验中的 F1 分数。对于在未遮挡人脸图像(UM)上训练并在遮挡人脸图像(M)上测试的机器学习模型,LDA 的 F1 分数最高,为 76%,KNN 的分数最低,为 39%。而对于一半在蒙蔽人脸图像(HM)上训练,一半在蒙蔽图像(M)上测试的模型,LR 的 F1 得分最高,为 89%,KNN 的得分最低,为 54%。在蒙蔽图像(M)上训练并在蒙蔽图像(M)上测试的模型中,LR 的 F1 得分最高,为 89%,DT 的得分最低,为 54%。

回顾下表(再次),我们可以看到,在未蒙面的人脸图像(UM)上训练和在未蒙面的人脸图像(UM)上测试时,最佳平均性能为 81%。这是很自然的结果,因为机器学习模型是基于人脸图像没有戴面具这一假设建立的。另一方面,当模型在未戴面具的人脸图像上训练并在戴面具的人脸图像上测试时,平均性能最低,仅为 45%。这表明,正如 Corona 灾难所报告的那样,在未戴面具的人脸图像上训练的模型并不适合识别戴面具的人脸图像。这与已报告的结果具有可重复性。

我们还发现,如果在一个由不戴面具的人脸图像或一半戴面具的人脸图像组成的数据集上进行训练,机器学习模型在蒙面人脸图像测试中的平均准确率会下降。如果机器学习模型在戴了面具的人脸图像上进行训练,则测试戴了面具的人脸图像的准确率会提高。

上表还显示,在所有三种类型的训练数据上,LR 在识别未蒙蔽人脸图像方面都优于其他模型。当在带有遮挡或半遮挡图像的数据集上进行训练时,LR 在识别遮挡图像方面优于其他模型。

对于需要识别遮挡和未遮挡面部图像的系统来说,最好在由半遮挡面部图像组成的数据集上进行训练,并使用 LR,如上表所示。

4. 总结

本文为了研究戴面具对机器学习模型的影响,使用支持向量机(SVC/Support Vector Classifier)、线性判别分析(LDA/Linear Discriminant Analysis)、K-近邻(KNN/K-Nearest NeighboursSVC/Support Vector Classifier)、线性判别分析(LDA/Linear Discriminant Analysis)、K-Nearest Neighbours(KNN/K-Nearest Neighbours)、决策树(DT/Decision Trees)、逻辑回归(Logistic Regression (LR/Logistic Regression)和奈夫贝叶斯(NB/Naïve Bayes),并使用六种机器学习模型进行了详尽的实验。

实验结果表明,在 "半遮挡和半未遮挡面部图像数据集 "上进行训练时,LR 作为同时识别遮挡和未遮挡面部图像的系统表现最佳。

在识别被遮挡的人脸图像时,在更多被遮挡的人脸图像上训练的模型的准确率呈上升趋势,但与此同时,在识别未被遮挡的图像时,准确率呈下降趋势。

相关文章:

人脸识别——探索戴口罩对人脸识别算法的影响

1. 概述 人脸识别是一种机器学习技术,广泛应用于各种领域,包括出入境管制、电子设备安全登录、社区监控、学校考勤管理、工作场所考勤管理和刑事调查。然而,当 COVID-19 引发全球大流行时,戴口罩就成了日常生活中的必需品。广泛使…...

磁盘管理后续——盘符漂移问题解决

之前格式化磁盘安装了文件系统,且对磁盘做了相应的挂载,但是服务器重启后挂载信息可能有问题,或者出现盘符漂移、盘符变化、盘符错乱等故障,具体是dev/sda, sdb, sdc 等等在某些情况下会混乱掉 比如sda变成了sdb或者sdc变成了sdb等…...

基于GO 写的一款 GUI 工具,M3u8视频下载播放器-飞鸟视频助手

M3u8视频下载播放器-飞鸟视频助手 M3u8视频飞鸟视频助手使用m3u8下载m3u8 本地播放 软件下载地址m3u8嗅探 M3u8视频 M3u8视频格式是为网络视频播放设计,视频网站多数采用 m3u8格式。如腾讯,爱奇艺等网站。 m3u8和 mp4的区别: 一个 mp4是一个…...

关于EasyExcel导入数据时表格日期格式识别为数字问题

参考官方地址 自定义日期转字符串转换器 /*** 自定义excel日期转换器** author li* date 2024-05-29*/ public class CustomStringDateConverter implements Converter<String> {Overridepublic Class<?> supportJavaTypeKey() {return String.class;}Overridep…...

高通Android 12/13打开省电模式宏开关

1、添加到SettingsProvider配置项宏开关 默认节电助手自动开启百分比battery saver frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java private void loadGlobalSettings(SQLiteDatabase db) {在该方法中添加 ......final i…...

2023年西安交通大学校赛(E-雪中楼)

E.雪中楼 如果算出按南北的序列&#xff0c;再转成从低到高的编号序列&#xff0c;岂不是太麻烦了&#xff0c;幸好&#xff0c;没有在这方面费长时间&#xff0c;而是意识到&#xff0c;本质就是要从低到高的编号序列&#xff0c;所以我就按样例模拟了一下&#xff0c;当a[i]0…...

如何在vue2中使用tailwind

查看官方文档&#xff0c;不要去看过时的文章&#xff01; 使用官网推荐的第一个安装方法 Installation - Tailwind CSS vue版本&#xff1a;2.6.10 1. 安装tailwind的包 npm install -D tailwindcss npx tailwindcss init 2. tailwind.config.js 文件中的content是你需要…...

【OrangePi AIpro】开箱初体验以及OAK深度相机测试

1. 简介 Orangepi AIPRO 是一款采用昇腾AI技术路线&#xff0c;集成4核64位处理器AI处理器的单板计算机&#xff0c;集成图形处理器&#xff0c;支持8TOPS AI算力&#xff0c;拥有8GB/16GB LPDDR4X&#xff0c;可以外接eMMC模块&#xff0c;支持双4K高清输出。 Orange Pi AIpr…...

滑动窗口模板(Java)

题目描述 有一个长为 &#x1d45b; 的序列 &#x1d44e;&#xff0c;以及一个大小为 &#x1d458; 的窗口。现在这个从左边开始向右滑动&#xff0c;每次滑动一个单位&#xff0c;求出每次滑动后窗口中的最大值和最小值。 例如&#xff0c;对于序列 [1,3,−1,−3,5,3,6,7] …...

transformers.BertTokenizer入门使用

教程link 示例代码 from transformers import OpenAIGPTLMHeadModel, GPT2LMHeadModel, BertTokenizer import torch tokenizer BertTokenizer.from_pretrained("thu-coai/CDial-GPT_LCCC-large") model OpenAIGPTLMHeadModel.from_pretrained("thu-coai/CD…...

快乐数-力扣

使用一个set来存储遇到的每个数&#xff0c;如果遇到的数在set中&#xff0c;那么说明这个数不是快乐数&#xff0c;否则一直循环下去&#xff0c;直到n 1结束循环&#xff0c;表示这个数是个快乐数。 需要注意的是&#xff0c;给定一个数 n, 怎样对这个数 n 进行每一位求和。…...

Git标签的使用

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

【uni-app】Pinia 持久化

小程序端 Pinia 持久化 说明&#xff1a;Pinia 用法与 Vue3 项目完全一致&#xff0c;uni-app 项目仅需解决持久化插件兼容性问题。 持久化存储插件 安装持久化存储插件&#xff1a; pinia-plugin-persistedstate pnpm i pinia-plugin-persistedstate插件默认使用 localStor…...

Flink 窗口

窗口&#xff08;Window&#xff09; 窗口是处理无限流的核心。 窗口将流分割成有限大小的“桶”&#xff0c;我们可以计算窗口中的数据。 窗口程序一般有键控流&#xff08;keyed streams&#xff09;的窗口程序 和 非键控流&#xff08;non-keyed streams&#xff09;的窗口…...

基于大模型和RAG技术实现的开源项目

基于大模型和RAG技术实现的开源项目 为解决大模型的不足&#xff0c;使用RAG技术增强大模型生成内容的针对性和可读性能力&#xff0c;有很多不错的开源项目。例如下面的项目。 1 ragflow 优点&#xff1a;可以对文档和知识库进行管理&#xff0c;构建不同的知识库&#xff…...

mac m1安装homebrew管理工具(brew命令)完整流程

背景 因为mac上的brew很久没用了&#xff0c;版本非常旧&#xff0c;随着mac os的更新&#xff0c;本机的homebrew大部分的功能都无法使用&#xff0c;幸好过去通过brew安装的工具比较少&#xff0c;于是决定重新安装一遍brew。 卸载旧版brew 法一&#xff1a;通过使用线上…...

Liunx学习随笔

Linux学习随笔 Linux学习随笔一.前期准备1.安装Vmware Workstation软件2.下载linux镜像3.安装操作系统4.配置静态ip5.下载安装远程连接工具 二.语法2.1 linux哲学思想(原则)2.2 小命令 夕阳无限好&#xff0c;只是近黄昏&#xff0c;时隔一年&#xff0c;重新提笔 没有比脚更远…...

mac中文件夹怎么显示.git隐藏文件

1. 打开终端应用程序&#xff0c;然后进入到包含.git文件夹的目录&#xff0c;可以使用以下命令来显示隐藏文件和文件夹&#xff1a; defaults write com.apple.finder AppleShowAllFiles YES 2. 然后重启 Finder&#xff1a; killall Finder...

【PB案例学习笔记】-13 徒手做个电子时钟

写在前面 这是PB案例学习笔记系列文章的第11篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…...

Java多线程——线程强制执行

Join合并线程&#xff0c;待此线程执行完成后&#xff0c;再执行其他线程&#xff0c;其他线程阻塞。 可以想象成插队。 代码演示&#xff1a; //测试Join方法 //想象为插队 public class TestJoin implements Runnable{Overridepublic void run() {for (int i 0; i < 1…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...