1 人脸检测

在目标检测领域可以划分为了人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测、人脸识别、人脸其他属性的识别等等),并且和通用目标检测(识别)会有一定的差别,着主要来源于人脸的特殊性(有时候目标比较小、人脸之间特征不明显、遮挡问题等),下面将从人脸检测和通用目标检测两个方面来讲解目标检测。

1.1 目前主要有人脸检测方法分类?

目前人脸检测方法主要包含两个区域:传统人脸检测算法和基于深度学习的人脸检测算法。传统人脸检测算法主要可以分为4类:
(1)基于知识的人脸检测方法;
(2)基于模型的人脸检测方法;
(3)基于特征的人脸检测方法;
(4)基于外观的人脸检测方法。

2006年Hinton首次提出深度学习(Deep Learning)的概念,它是通过组合低层的特征形成更高层的抽象特征。随后研究者将深度学习应用在人脸检测领域,主要集中在基于卷积神经网络(CNN)的人脸检测研究,如基于级联卷积神经网络的人脸检测(cascade cnn)、 基于多任务卷积神经网络的人脸检测(MTCNN)、Facebox等,很大程度上提高了人脸检测的鲁棒性。当然通用目标检测算法像Faster-rcnn、yolo、ssd等也有用在人脸检测领域,也可以实现比较不错的结果,但是和专门人脸检测算法比还是有差别。

1.2 如何检测图片中不同大小的人脸?

传统人脸检测算法中针对不同大小人脸主要有两个策略:
(1)缩放图片的大小(图像金字塔如图1.1所示);
(2)缩放滑动窗的大小(如图1.2所示)。
图 1.1 图像金字塔

图 1.2 缩放滑动窗口
基于深度学习的人脸检测算法中针对不同大小人脸主要也有两个策略,但和传统人脸检测算法有点区别,主要包括:

(1)缩放图片大小。(不过也可以通过缩放滑动窗的方式,基于深度学习的滑动窗人脸检测方式效率会很慢存在多次重复卷积,所以要采用全卷积神经网络(FCN),用FCN将不能用滑动窗的方法。)

(2)通过anchor box的方法(如图1.3所示,不要和图1.2混淆,这里是通过特征图预测原图的anchorbox区域,具体在facebox中有描述)。

图 1.3 anchor box

1.3 如何设定算法检测最小人脸尺寸?

主要是看滑动窗的最小窗口和anchorbox的最小窗口。
(1)滑动窗的方法
假设通过12×12的滑动窗,不对原图做缩放的话,就可以检测原图中12×12的最小人脸。但是往往通常给定最小人脸a=40、或者a=80,以这么大的输入训练CNN进行人脸检测不太现实,速度会很慢,并且下一次需求最小人脸a=30*30又要去重新训练,通常还会是12×12的输入,为满足最小人脸框a,只需要在检测的时候对原图进行缩放即可:w=w×12/a。
(2)anchorbox的方法
原理类似,这里主要看anchorbox的最小box,通过可以通过缩放输入图片实现最小人脸的设定。

1.4 如何定位人脸的位置

(1)滑动窗的方式:
滑动窗的方式是基于分类器识别为人脸的框的位置确定最终的人脸,

图 1.4 滑动窗
(2)FCN的方式:
FCN的方式通过特征图映射到原图的方式确定最终识别为人脸的位置,特征图映射到原图人脸框是要看特征图相比较于原图有多少次缩放(缩放主要查看卷积的步长和池化层),假设特征图上(2,3)的点,可粗略计算缩放比例为8倍,原图中的点应该是(16,24);如果训练的FCN为12*12的输入,对于原图框位置应该是(16,24,12,12),当然这只是估计位置,具体的再构建网络时要加入回归框的预测,主要是相对于原图框的一个平移与缩放。
(3)通过anchor box的方式:
通过特征图映射到图的窗口,通过特征图映射到原图到多个框的方式确定最终识别为人脸的位置。

1.5 如何通过一个人脸的多个框确定最终人脸框位置?

图 1.5 通过NMS得到最终的人脸位置
NMS改进版本有很多,最原始的NMS就是判断两个框的交集,如果交集大于设定的阈值,将删除其中一个框,那么两个框应该怎么选择删除哪一个呢? 因为模型输出有概率值,一般会优选选择概率小的框删除。

1.6 基于级联卷积神经网络的人脸检测(Cascade CNN)

1.cascade cnn的框架结构是什么?

级联结构中有6个CNN,3个CNN用于人脸非人脸二分类,另外3个CNN用于人脸区域的边框校正。给定一幅图像,12-net密集扫描整幅图片,拒绝90%以上的窗口。剩余的窗口输入到12-calibration-net中调整大小和位置,以接近真实目标。接着输入到NMS中,消除高度重叠窗口。下面网络与上面类似。

2.cascade cnn人脸校验模块原理是什么?
该网络用于窗口校正,使用三个偏移变量:Xn:水平平移量,Yn:垂直平移量,Sn:宽高比缩放。候选框口(x,y,w,h)中,(x,y)表示左上点坐标,(w,h)表示宽和高。
我们要将窗口的控制坐标调整为:

这项工作中,我们有种模式。偏移向量三个参数包括以下值:

同时对偏移向量三个参数进行校正。

4.训练样本应该如何准备?
人脸样本
非人脸样本

5.级联的好处
• 最初阶段的网络可以比较简单,判别阈值可以设得宽松一点,这样就可以在保持较高召回率的同时排除掉大量的非人脸窗口;
• 最后阶段网络为了保证足够的性能,因此一般设计的比较复杂,但由于只需要处理前面剩下的窗口,因此可以保证足够的效率;
• 级联的思想可以帮助我们去组合利用性能较差的分类器,同时又可以获得一定的效率保证。

1.7 基于多任务卷积神经网络的人脸检测(MTCNN)


MTCNN模型有三个子网络,分别是P-Net,R-Net,O-Net.



为了检测不同大小的人脸,开始需要构建图像金字塔,先经过pNet模型,输出人脸类别和边界框(边界框的预测为了对特征图映射到原图的框平移和缩放得到更准确的框),将识别为人脸的框映射到原图框位置可以获取patch,之后每一个patch通过resize的方式输入到rNet,识别为人脸的框并且预测更准确的人脸框,最后rNet识别为人脸的的每一个patch通过resize的方式输入到oNet,跟rNet类似,关键点是为了在训练集有限情况下使模型更鲁棒。
还要注意一点构建图像金字塔的的缩放比例要保留,为了将边界框映射到最开始原图上。

1.8 Facebox


(1)Rapidly Digested Convolutional Layers(RDCL)
在网络前期,使用RDCL快速的缩小feature map的大小。 主要设计原则如下:
• Conv1, Pool1, Conv2 和 Pool2 的stride分别是4, 2, 2 和 2。这样整个RDCL的stride就是32,可以很快把feature map的尺寸变小。
• 卷积(或pooling)核太大速度就慢,太小覆盖信息又不足。文章权衡之后,将Conv1, Pool1, Conv2 和 Pool2 的核大小分别设为7x7,3x3,5x5,3x3
• 使用CReLU来保证输出维度不变的情况下,减少卷积核数量。
(2)Multiple Scale Convolutional Layers(MSCL)
在网络后期,使用MSCL更好地检测不同尺度的人脸。 主要设计原则有:
• 类似于SSD,在网络的不同层进行检测;
• 采用Inception模块。由于Inception包含多个不同的卷积分支,因此可以进一步使得感受野多样化。
(3)Anchor densification strategy
为了anchor密度均衡,可以对密度不足的anchor以中心进行偏移加倍,如下图所示:

关注我的技术公众号《漫谈人工智能》,每天推送优质文章

人机交互系统(4.1)——深度学习在人脸检测中的应用相关推荐

  1. 深度学习在人脸检测中的应用 | CSDN 博文精选

    作者 | 梁志成.刘鹏.陈方杰 责编 | 唐小引 转载自CSDN(ID:csdnnews) 在目标检测领域,可以划分为人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测.人脸识别.人脸 ...

  2. 深度学习cnn人脸检测_用于对象检测的深度学习方法:解释了R-CNN

    深度学习cnn人脸检测 介绍 (Introduction) CNN's have been extensively used to classify images. But to detect an ...

  3. 基于深度学习的人脸检测和关键点检测推理实践(OpenCV实现,含代码)

    目录 一.任务概述 二.环境准备 三.实现步骤 3.1 Python推理 3.2 C++推理 3.2.1 环境准备 3.2.2 推理 3.3 Java推理 一.任务概述 最近项目中大量场景需要用到人脸 ...

  4. 深度学习在人脸识别中的应用——优图祖母模型的“进化”

    雷锋网按:本文转自腾讯优图,着重介绍了深度学习在人脸识别中的应用,首先回顾了人脸识别的历史,接着介绍优图在人脸识别中的优势,及其"进化过程". 说到人工智能(Artificial  ...

  5. 深度学习在目标视觉检测中的应用进展与展望

    作者:张慧,王坤峰,王飞跃 来源:王飞跃科学网博客 摘要:目标视觉检测是计算机视觉领域的一个重要问题,在视频监控.自主驾驶.人机交互等方面具有重要的研究意义和应用价值.近年来,深度学习在图像分类研究中 ...

  6. 深度学习在目标检测中的应用及其tensorflowAPI实践(三)

    这系列文章的内容目录如下: 目标检测的任务 深度学习在目标检测中的应用 RCNN fast RCNN faster RCNN RFCN yolo yolo V2 SSD tensorflow目标检测A ...

  7. 深度学习之人脸检测实践-现有框架实现 opencv Face++

    人脸检测通常是人脸识别等复杂任务的第一步操作,目前主流的人脸检测算法:https://zhuanlan.zhihu.com/p/24816781.这里主要记录一些常用的算法实践,目前只有OpenCV提 ...

  8. 2021-基于深度学习的人脸检测综述文献-摘要

    The Elements of End-to-end Deep Face Recognition: A Survey of Recent Advances 该文献对人脸识别系统中的face detec ...

  9. 深度学习在人脸识别中的应用 —— 优图祖母模型的「进化」

    原作者: 腾讯优图 | 来自: 机器之心 序言--「弱弱」的人工智能 说到人工智能(Artificial Intelligence, AI)人们总是很容易和全知.全能这样的词联系起来.大量关于人工智能 ...

最新文章

  1. 竞态条件的赋值_《Java并发编程实战》读书笔记一:基础知识
  2. wordpress-4.7.2-zh_CN页面加载慢
  3. Windows系统下如何在cmd命令窗口中切换Python2.7和Python3.6
  4. 软件开发质量控制-CMMI读后疑问
  5. 生活的色彩——摄影作品欣赏
  6. 酒鬼随机漫步(一个矢量类)
  7. python学习笔记列表和元组(三)
  8. 使用Docker快速搭建Tensorflow开发环境
  9. 9张图总结一下阿里云的2019
  10. PyTorch入门(二)--实现简单神经网络
  11. Android 时间维护服务 TimeService(针对于特殊定制设备)
  12. 搭建网站常见返回码40X 50X等错误的原因及解决方案
  13. linux 路径 冒号_软件测试必须掌握的linux命令大全
  14. @JVM内存模型(运行时数据区)
  15. Andriod Studio 使用心得,持续更新中
  16. Aspose-Cells结合Apache POI生成excel文件以及转换为pdf
  17. 高斯消元法(Gauss Elimination) 分析 题解 模板——czyuan原创
  18. C语言常见的关键字汇总
  19. C++11创建线程的三种方式
  20. 请输入一个年份和月份判断该月份的天数,注:闰年2月29天、平年2月28天。

热门文章

  1. ijk基于exo_github上十二款最著名的Android播放器开源项目
  2. 基于Nodejs+vue开发实现高校学院网站系统
  3. oracle11g在linux7的静默安装脚本
  4. java excel 插入新行_使用POI往EXCEL中插入行
  5. excel 错位插入_excel表格错位怎么解决?excel数据错位
  6. Arcface中的IR_SE模块
  7. 基础光照-Phong 光照模型
  8. 【GPRS IP地址】GPRS IP地址的问题
  9. 配置ABP的redis
  10. 一个实验了解什么是ISIS