本文用途仅仅是在前人经验下,自我总结,以供以后学习使用,若有错误,敬请您批评指正。
【导读】人脸检测在实际中主要用于人脸识别的预处理,即在图像中准确标定出人脸的位置和大小。人脸图像中包含的模式特征十分丰富,如直方图特征、颜色特征、模板特征、结构特征及Haar特征等。人脸检测就是把这其中有用的信息挑出来,并利用这些特征实现人脸检测。
人脸检测的目标是找出图像中的所有人脸存在的位置,各类方法的输出是人脸矩阵在图像中的坐标位置。虽然人脸的结构是固定的,但是由于人脸表情、姿态等变化,光照以及遮挡等影响,想要准确检测处于各类条件下的人脸不是一件容易的事情。
评价人脸检测算法的指标:检测率、误报率。性能好的表现是:检测率高,误报率低
从大方向来说,人脸检测可以分为三种方向:
下文参考来源:一文综述人脸检测算法(附资源)_数据派THU-CSDN博客_候选框 ensemble 置信度 剔除
模板匹配技术:用一个人脸模板图像与被检测的图像的各个位置进行匹配,确定此位置是否存在人脸。
boost算法是基于PAC学习理论(probably approximately correct)而建立的一套集成学习算法(ensemble learning)。
卷积神经网络在图像分类问题上取得成功之后很快被用于人脸检测问题,在精度上大幅度超越之前的AdaBoost框架,当前已经有一些高精度、高效的算法。直接用滑动窗口加卷积网络对窗口图像进行分类的方案计算量太大很难达到实时,使用卷积网络进行人脸检测的方法采用各种手段解决或者避免这个问题。
1. Cascade CNN
Cascade CNN可以认为是传统技术和深度网络相结合的一个代表,其包含了多个分类器,这些分类器采用级联结构进行组织,Cascade CNN采用卷积网络作为每一级的分类器。该框架的第一级还是基于密集滑动窗口的方式进行窗口过滤,在高分辨率存在大量小人脸(tiny face)的图片上限制了算法的性能上限。
2. DenseBox
DenseBox目标检测算法,适合人脸这类小目标的检测。这种方法使用全卷积网络,在同一个网络中直接预测目标矩形框和目标类别置信度。通过在检测的同时进行关键点定位,进一步提高了检测精度。
检测流程:
对待检测图像进行缩放,将各种尺度的图像送入卷积网络中处理,以检测不同大小的目标。
经过多次卷积和池化操作之后,对特征图像进行上采样然后再进行卷积,得到最终的输出图像,这张图像包含了每个位置出现目标的概率,以及目标的位置、大小信息。
由输出图像得到目标矩形框。
非最大抑制,得到最终的检测结果。
3. Faceness-Net
Faceness-Net是一个典型的由粗到精的工作流,借助了多个基于DCNN网络的facial parts分类器对人脸进行打分,然后根据每个部件的得分进行规则分析得到Proposal的人脸区域,最后通过一个Refine的网络得到最终的人脸检测结果。
检测流程:
根据attribute-aware深度网络生成人脸部件map图,由局部推理出人脸候选区域。上一阶段proposal生成的候选框已经有较高的召回率,通过训练一个人脸分类和边界回归的CNN可以进一步提升其效果。
4. MTCNN多任务级联卷积神经网络
MTCNN(Multi-task Cascaded Convolutional Networks)是 一种多任务级联卷积神经网络,用以同时处理人脸检测和人脸关键点定位问题。作者认为人脸检测和人脸关键点检测两个任务之间往往存在着潜在的联系,然而大多数方法都未将两个任务有效的结合起来,MTCNN充分利用两任务之间潜在的联系,将人脸检测和人脸关键点检测同时进行,可以实现人脸检测和5个特征点的标定。
检测过程:
Stage 1:使用P-Net是一个全卷积网络,用来生成候选窗和边框回归向量(bounding box regression vectors)。使用Bounding box regression的方法来校正这些候选窗,使用非极大值抑制(NMS)合并重叠的候选框。
Stage 2:使用N-Net改善候选窗。将通过P-Net的候选窗输入R-Net中,拒绝掉大部分false的窗口,继续使用Bounding box regression和NMS合并。
Stage 3:最后使用O-Net输出最终的人脸框和特征点位置。和第二步类似,但是不同的是生成5个特征点位置。
5.腾讯优图-DSFD 人脸检测算法
DSFD 人脸检测算法主要有 3 点创新:
(1)设计了一种新的「特征增强」模块(FEM:Feature Enhance Module)
FEM 在采用 Top-Down 层间信息融合的同时,在同一「感受野」内做了更多的 enhancement。因此在 width and depth 上学习到了更有效的 context 和 semantic 信息。
(2)提出了「分层锚点渐进」式的代价函数监督(PLA:Progressive Anchor Loss)
模型采用 2 个层级(hierarchy),基于第一层(low-level)和第二层(high-level)的差异性,适配了不同尺寸的 anchor。在训练过程中,PAL 对整个模型形成了更有效的监督。
(3)设计了一种「改进的锚点匹配策略」(Improved Anchor Matching Strategy)
One-stage detector 由于在输出层分配有密集的 anchor,anchor 与 face 匹配的好坏直接影响训练效果。优图的研究人员 data augmentation 过程中充分考虑了不同大小的 face 和各个 anchor 的关系,提出了一种新的数据扩增法。
6. Dlib人脸检测
Dlib的核心原理是使用了图像Hog特征来表示人脸,和其他特征提取算子相比,它对图像的几何和光学的形变都能保持很好的不变形。该特征与LBP特征,Harr特征共同作为三种经典的图像特征,该特征提取算子通常和支持向量机(SVM)算法搭配使用,用在物体检测场景。
Dlib 实现的人脸检测方法便是基于图像的Hog特征,综合支持向量机算法实现的人脸检测功能,该算法的大致思路如下:
注:知乎大神有做了个时间线描述深度学习检测算法和非深度学习检测算法,大家可直接查阅参考文献【5】学习:YaqiLYU:人脸检测背景介绍和发展现状
深度学习人脸检测算法对比:
非深度学习人脸检测算法对比:
参考文献:
一文综述人脸检测算法(附资源)_数据派THU-CSDN博客_候选框 ensemble 置信度 剔除blog.csdn.net 人脸检测之Haar-like,Adaboost,级联(cascade)_Tony的博客-CSDN博客_haar-cascade和adaboost关系blog.csdn.net BBuf:人脸识别系列二 | FisherFace,LBPH算法及Dlib人脸检测zhuanlan.zhihu.com 腾讯优图开源人脸检测算法DSFD,刷新两项数据集纪录_Anchorwww.sohu.com YaqiLYU:人脸检测背景介绍和发展现状zhuanlan.zhihu.com 人脸检测算法_何以清风-CSDN博客_人脸检测算法blog.csdn.net 我们认真研究了FaceID的工作原理,用iPhoneX的可以安心睡觉了www.techwalker.com