如何降低遮挡对人脸识别的影响
刘东平
重庆工商大学,本科
谢远伦
贵州大学,本科
言有三
毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人
作者 | 刘东平、谢远伦、言有三
编辑 | 言有三
人脸识别技术都是基于人脸关键特征提取对比完成识别的,其中,特征的完整性是算法成败的一个极为关键的因素,但是当受到外界干扰较多,外界的条件发生明显变化的时候,由于传统方法过于依赖明显的、完整的图像特征,一旦由于人脸发生遮挡,造成部分特征的消失,导致人脸图像特征不完整时,这种算法就会失效,导致无法和库中人脸信息进行对比。遮挡造成的人脸识别的困难主要体现在由遮挡所引发的特征损失、对准误差和局部混叠等方面.
01
常见人脸遮挡方式【1】
引发面部遮挡的原因主要有三种:
1.1光线遮挡:由于不均匀的或极度强烈的外部光照所引起的遮挡。图a
1.2实物遮挡:覆盖在人脸上的物品,如帽子,眼镜,围巾等。图b
1.3自遮挡:是由于人体姿势导致的,如侧脸。图c
02
人脸遮挡对人脸识别的影响
下面我们看一组图片:
通过眼睛我们很容易判断上面一组图片都是同一人。但是我们的人脸识别的应用能判断出他们是同一人吗?
接下来我们将把上面的图片通过百度AI和腾讯AI进行对比
2.1百度AI对比结果
2.2腾讯AI对比结果
通过百度AI和腾讯AI我们可以看到遮挡对人脸验证的结果影响非常大,特别是第四组图,由于面纱的遮挡,腾讯AI判断图片中没有人脸,但是同一组照片,百度AI却给出了71.75%的相似度判定。这也说明了不同的算法,对遮挡处理的结果差别很大。
03
数据集
虽有很多的人脸数据集,但是专门用于人脸遮挡这个问题的却很少。MAFA【3】是其中最大的,它包含30,811个无遮挡图像和35,806个有遮挡图像,包含各种方向和尺度的遮挡,数据集并未开源。
遮挡后的人脸,眼睛基本不会被遮挡的,需要眼睛看东西,所以还是相对稳定的特征点,下面是其中一个遮挡的例子。
04
人脸识别遮挡传统方法【1】
主流的方法有:子空间回归、鲁棒误差编码与鲁棒特征提取等三类。
4.1子空间回归
子空间回归方法将不同类别的人脸划分为不同的子空间,遮挡是一个独立的子空间,那么有遮挡的人脸图像是不含遮挡的人脸与遮挡的叠加,就可以把有遮挡人脸图像识别问题视作将无遮挡的人脸图像和遮挡各自回归到它们所属的子空间的问题。
子空间回归方法中最具代表性的方法是稀疏表示分类方法和协同表示分类方法,具体的细节,可以参考文献【1】。子空间回归方法的主要困难在于遮挡子空间的构建。
4.2鲁棒误差编码
鲁棒误差编码方法主要包括“加法模型”和“乘法模型”。 “加法模型”认为有遮挡图像是原始的不含遮挡的人脸图像与由遮挡引发的误差e的合成体,即y=y0+e,着重考虑如何将误差e从有y中分离出来。
“乘法模型”将有遮挡的图像看成是无遮挡的y0与遮挡的拼接,并且只有y0可以精确重构。着重考虑如何分离其有遮挡区域和无遮挡区域,具体细节参考文献【1】。
4.3鲁棒特征提取
一幅人脸图像所包含的特征通常极为丰富,既包括颜色、亮度、纹理、方向等低阶特征,也包括姿态 、表情、年龄、人种等高阶特征,鲁棒的特征提取 方法就是需要对这些特征进行分解。比如Gabor特征是在多个尺度和多个方向上分解,属性特征是分解为多个可描述的属性。分解后,可以降低特征之间的相互干扰,从而为机器学习提供足够精细的特征。
传统的鲁棒特征有代表性的比如梯度脸,以及将子空间学习引入深度学习的PCANet框架和将卷积神经网络的卷积层引入经典的“特征图-模式图-柱状图”的特征提取框架FPH 框架。尽管并没有对光照变化和遮挡做任何先验性假设和显式处理,甚至没有用到大规模的训练数据,PCANet的神经元响应却对光照变化和遮挡等表现出了很强的鲁棒性,关于更具体的细节请参考文献【2】。
05
深度学习【3-4】
我们下面给大家介绍两个思路。第一个,来源于【3】的思路,是尝试对遮挡区域的特征进行修复。【4】的思路,是如何设计和使用Attention的机制去识别没有被遮挡的人脸,这也是两个基本的研究方向,下面分别做说明。
5.1 对遮挡区域进行恢复
上图就是文【3】解决方案的框架。从上图我们可以看出,包括3个模块。
(1)Proposal Module人脸候选区域提取模块,这就是三个卷积层加一个全连接层的基本结构,为了能够召回更多的遮挡人脸,选择了比较低的阈值生成了大量人脸候选区域。随后使用VGGFace提取4096维的特征进行归一化。我们可以知道,这个特征即含有有用信息也含有噪声信息。
(2)Embedding Module 这个模块主要实现对被遮挡的人脸特征恢复,抑制特征中的噪声信息,它将Proposal Module提取出来的描述子,采用LLE方法,转化为相似度描述子。随后,在一个利用了大量无遮挡人脸和遮挡人脸得到的特征池中利用knn寻找匹配。
(3)Verification Module 则可以利用被修复的人脸特征进行人脸区域验证,对人脸位置和尺度进行微调。
5.2 基于attention的方法定位遮挡
通过合理的Anchor设置或者是合理的大感受野,我们可以隐式地学到遮挡区域的人脸,为了减少误召回,可以考虑用segmentation或者是attention的机制去处理。
上面就是它的基本结构,借鉴于RetinaNet。首先通过FPN结构提出特征,然后会另开一支去学习attention,之后对attention做一个E指数的操作乘到原来的feature map上,加强可见区域信息。后面是一个类似于fast R-CNN两支操作:一支做classification,一支做regression。 Anchor setting设置可以保证每个人脸都有足够的感受野以及足够的context信息。底下这个attention的subnet,它可以通过有监督的信息,学到visible的information,也就能提高对遮挡物体检测的能力。一些该文的细节,包括以下:
Anchor setting
文章中先统计了一下Wider face数据集,发现大概80%以上的人脸其实都是集中在16 pixel到406 pixel这样的量级上面,还有约10%的量级是在8pixel到16pixel,如下图:
要考虑到如何让anchor去覆盖这么大的一个区域,他们选择了1和1:1.5,其实是潜在地考虑了正脸和侧脸情况。与传统的每一层只有一个anchor的铺设方式不同,采用每层3个scale,以2 ^ -1/3 步进。
attention整体框架
采用将bounding box的区域填1,直接作segmentation去学的思路。由于大量的ground truth是没有遮挡的,当发生遮挡时,最后学出来的segmentation会对于这些未遮挡的信息更加敏感。另外在attention网络里面,做完attention之后,不是简单的点乘到原来的feature map上面,而是先做了一个E指数的操作,再去点乘到feature map上面。这样做就不是只保留attention高量的部分,而是对高量的部分做一些增强,这样能够很好地保留它原有的context信息,同时也能够突出它自身那个可见区域的信息。
这是一个有监督的attention结构,对不同的层赋予不同的anchor level的监督信息。
除了以上两条思路外,还有一些其他的方案,不再一一展开。
06
解决人脸遮挡的现实意义
6.1 提升门禁系统识别准确率,方便人们的生活
受安全保护的地区可以通过人脸识别辨识试图进入者的身份。人脸识别系统可用于企业、住宅安全和管理。如人脸识别门禁考勤系统,人脸识别防盗门等。门禁系统采用网络信息加密传输,支持远程进行控制和管理,可广泛应用于银行、军队、公检法、智能楼宇等重点区域的门禁安全控制,但是参与这些活动的人,其面部特征并不都是标准完整的。在面部特征不完整的情况下,也能对其进行精准的识别,将会极大的提高工作效率和用户体验。
6.2 增强身份识别
可在机场、体育场、超级市场等公共场所对人群进行监视,例如在机场安装监视系统以防止恐怖分子登机。在恐怖分子有伪装的情况下,例如戴口罩、墨镜、帽子等,如果人脸识别技术能对遮挡部分进行补全,就可以在机场或车站安装系统以抓捕在逃案犯。
参考文献:
[1] 李小薪、梁荣华有遮挡人脸识别综述:从子空间回归到深度学习
[2] Chan T H, Jia K, Gao S, et al. PCANet: A simple deep learning baseline for image classification?[J]. IEEE Transactions on Image Processing, 2015, 24(12): 5017-5032.
[3]Ge S, Li J, Ye Q, et al. Detecting masked faces in the wild with lle-cnns[C]//The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017: 2682-2690.
[4]Wang J, Yuan Y, Yu G. Face Attention Network: An effective Face Detector for the Occluded Faces[J]. arXiv preprint arXiv:1711.07246, 2017.
[5] https://github.com/polarisZhao/awesome-face
更多,欢迎到知乎专栏去投稿与交流,配套资料将放出在github,可扫描二维码进入。
打一个小广告,我的计算机视觉公开课《AI 图像识别项目从入门到上线》上线了,将讲述从零基础到完成一个实际的项目到微信小程序上线的整个流程,欢迎交流捧场。
如果想加入我们,后台留言吧
微信
Longlongtogo
公众号内容
1 图像基础|2 深度学习|3 行业信息
往期综述
【技术综述】一文道尽softmax loss及其变种
【技术综述】计算机审美,学的怎么样了?
【技术综述】深度学习自动构图研究报告
往期开源框架
[caffe解读] caffe从数学公式到代码实现4-认识caffe自带的7大loss
【开源框架】从Google百度到微博,优酷腾讯到抖音,这些爬虫你用过了吗?
【开源框架】一文道尽主流开源框架中的数据增强
往期学员分享
【技术综述】人脸表情识别研究
【技术综述】人脸脸型分类研究现状
【技术综述】人脸颜值研究综述
【模型解读】network in network中的1*1卷积,你懂了吗
【模型解读】GoogLeNet中的inception结构,你看懂了吗
往期行业综述
【行业进展】国内自动驾驶发展的怎么样了?
【行业进展】AI:新药研发的新纪元
【行业进展】哪些公司在搞“新零售”
如何降低遮挡对人脸识别的影响相关推荐
- 「技术综述」如何降低遮挡对人脸识别的影响
https://www.toutiao.com/a6711562985187312131/ 作者 | 刘东平.谢远伦.言有三 编辑 | 言有三 人脸识别技术都是基于人脸关键特征提取对比完成识别的,其中 ...
- 怎样降低遮挡对人脸识别的影响,人脸图像算法研究(3)
人脸识别技术都是基于人脸关键特征提取对比完成识别的,其中,特征的完整性是算法成败的一个极为关键的因素,但是当受到外界干扰较多,外界的条件发生明显变化的时候,由于传统方法过于依赖明显的.完整的图像特征, ...
- 对于人脸识别检测中出现遮挡问题的解决方案
人脸识别中发型遮挡检测方法研究 摘要: 人脸识别中,发型遮挡是一种十分常见的遮挡类型,并且对人脸的正确识别具有极大的干扰.提出一种将头发的颜色模型和发型特征相结合的遮挡检测方法.首先,采用机器学习的方 ...
- 基于全局信息的人脸识别总结
一. 课题名称 基于全局信息的人脸识别算法研究 二. 课题的提出 在当今社会中,身份确认具有十分重要的价值.随着网络技术的发展,信息安全也显示出了前所未有的重要 ...
- 远程人脸识别系统安全描述
声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 远程人脸识别系统安全描述 受保护资产 描述目的 在本标准所描述的安全问题描述.安 ...
- 人脸识别迁移学习的应用
https://github.com/jindongwang/transferlearning 关于迁移学习的一些资料 这个仓库包含关于迁移学习一些资料,包括:介绍,综述文章,代表工作及其代码,常用数 ...
- 美国人到底为什么不待见人脸识别技术?
https://www.toutiao.com/a6695915398514082318/ 2019年5月,旧金山市对人脸识别技术发出了禁令,禁止该技术在政府机关和执法机关中使用,从而成为全球首个对人 ...
- 人脸识别门禁系统在2019年会加快应用
人脸识别门禁系统在2019年会加快应用 近几年来,随着社会经济的发展和生活水平的提升,人们对居住环境的安全度和舒适度也有了更高的要求,不少城市社区为提高民众生活质量,安装了人脸识别门禁系统,方便民众生 ...
- 人脸识别打卡项目(2)
目录 1 人脸图像质量检测 1 人脸遮挡 2 模糊度 3 光照情况 4 姿态角度 5 人脸完整度 6 人脸大小 2 人脸库管理介绍 1 人脸注册 2 人脸更新 3 人脸删除 4 用户信息查询 5 获取 ...
最新文章
- 平滑迁移 Dubbo 服务的思考
- C++ 11 创建和使用 shared_ptr
- #研发解决方案#智慧的太空桥管理智慧设备
- Laravel-5.1验证码mews captcha
- STM32开发 -- 复位类型判断
- cnpm install -g live-server 安装服务
- python 栈_python:栈的理解与应用
- Node.js实现一个HTTP服务器
- editorloop 占用_【交换机在江湖-维护无忧系列】CPU占用率高故障专题(3)-常见故障案例...
- PHP常用函数集合(可做桌面壁纸)
- STC芯片在Keil中的添加与使用
- java和C程序员工资待遇差别大吗
- 政务大数据的上下文范围
- R语言使用duplicated函数去除重复项
- 欺骗的艺术 --- 第一章
- loj #6247. 九个太阳
- ipad计算机弹音乐,iPad下的音乐创作工具,Korg发布ELECTRIBE Wave波表音乐创作工具...
- echarts 3 无法显示和弦图chord解决办法
- python如何输出多个星号_如何使用python输出连续星号?
- ANIMATION动画的学习小总结
热门文章
- 蓝桥杯-未名湖边的烦恼(java)
- Java改进的冒泡排序ImprovedBubbleSort
- idea redis 插件_Redis客户端RDM收费后,还有哪些开源的替代品呢?
- 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
- 使用VScode开发C语言程序,环境安装配置,保姆级教程
- [转]Redhat EL5.4用CentOS源进行更新
- xxx cannot be resolved to a type 问题的几种常见原因
- CocoaPods 的安装与卸载
- rfc3095中文版_RFC3095
- string转换为bigdecimal_java如何将String转换为Int