人脸遮挡检测的几种思路

2024-04-21 20:08

本文主要是介绍人脸遮挡检测的几种思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

遮挡是一直以来困扰研究人员及技术人员的问题,原因是存在遮挡后,不管是对人脸进行检测,还是其它属性识别(如关键点、角度、姿态、年龄等)的效果都会有很大影响。

为了消除这些影响,一种思路是先判断是否被遮挡,再进行属性识别,另一种思路是在对人脸进行属性识别时加入对遮挡的处理,提高算法的鲁棒性。

目前,暂时还没有通用的解决方案。

如何判断是否被遮挡或者定位?

1、分类器:将是否被遮挡作为分类器的一个标签,可以用单标签,也可用多标签来区分不用部位的遮挡。或者将单个部位抠patch出来,进行单个部位的遮挡分类。这种方案简单易用,是目前的主流方案,但是全脸的遮挡检测存在一定的瓶颈,适用于对准确率要求不高的问题,而单个部分的遮挡检测强依赖于预处理,难以迁移且不利于对badcase进行后期维护。

2、CNN直接识别出人脸的各个部分(眼睛、鼻子及嘴巴等)生成partness maps,利用已经标注好的遮挡标签,进行打分,例如Faceness Net。这种思路不新了,但应用也不多,适用于不要求将手部遮挡分开的情况。

3、利用空间三维关系判断遮挡物与被遮挡物的前后生成遮挡关系边界图,再分割出人脸与遮挡物,从而根据分割轮廓判断是否被遮挡。这是学术界存在的一种思路,但是相对来说,概念(三维关系的判断)与步骤(三维关系-边界图-分割轮廓)都较为复杂,难以应用于实际。

如何在对人脸属性识别时加入对遮挡的处理?

1、在标注数据时就加上对遮挡的标注处理,将遮挡物的边缘区分开来。

这种思路适用于需要准确识别出遮挡部位并作下一步处理的情况,先加入标注好的遮挡数据再根据遮挡部位的连贯性不同进行区分,例如在人脸分割中将遮挡物从人脸的mask之间划分出来,或者在人脸关键点中带遮挡的landmark标注为遮挡物边缘。如果采用这种思路,后期还可根据分割区域的IoU来计算遮挡面积的大小。

2、进行多任务训练,把是否被遮挡的属性作为一个分支任务。

这种思路适用于遮挡只是一个辅助信息来帮助提高原有的算法效果。

附:人脸遮挡相关数据集

1、各种遮挡物:The MAFA dataset、the IJB-C dataset

2、主要为墨镜遮挡:Pgu-Face: A dataset of partially covered facial images

3、其它遮挡数据集:the Caltech Occluded Faces in the Wild (COFW) benchmark dataset、Large-scale Datasets: Faces with Partial Occlusions and Pose Variations in the Wild

数据集还可以利用其它数据集+人脸数据集自行制造,如这篇中的将手部数据集(ego-hands)加入人脸数据集:On Face Segmentation, Face Swapping, and Face Perception

这篇关于人脸遮挡检测的几种思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Java中InputStream重复使用问题的几种解决方案

《Java中InputStream重复使用问题的几种解决方案》在Java开发中,InputStream是用于读取字节流的类,在许多场景下,我们可能需要重复读取InputStream中的数据,这篇文章主... 目录前言1. 使用mark()和reset()方法(适用于支持标记的流)2. 将流内容缓存到字节数组

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间