人脸遮挡检测的几种思路

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进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `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色彩空间

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr