人脸遮挡检测的几种思路

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

相关文章

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

SpringMVC前后端传值的几种实现方式

《SpringMVC前后端传值的几种实现方式》本文主要介绍了SpringMVC前后端传值的方式实现,包括使用HttpServletRequest、HttpSession、Model和ModelAndV... 目录一、从Controller层到JSP界面1、使用HttpServletRequest的方式2、使

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python