我们将整个人脸检测算法分为 3 个阶段, 分别是早期算法, AdaBoost 框架, 以及深度学习时代, 在接下来将分这几部分进行介绍.
早期的人脸检测算法使用了模板匹配技术, 即用一个人脸模板图像与被检测图像中的各个位置进行匹配, 确定这个位置处是否有人脸; 此后机器学习算法被用于该问题, 包括神经网络, 支持向量机等. 以上都是针对图像中某个区域进行人脸 - 非人脸二分类的判别.
早期有代表性的成果是 Rowley 等人提出的方法[1][2]. 他们用神经网络进行人脸检测, 用 20x20 的人脸和非人脸图像训练了一个多层感知器模型.
文献 [1] 的方法用于解决近似正面的人脸检测问题
文献 [2] 的方法解决多角度人脸检测问题, 整个系统由两个神经网络构成, 第一个网络用于估计人脸的角度, 第二个用于判断是否为人脸. 角度估计器输出一个旋转角度, 然后用整个角度对检测窗进行旋转, 然后用第二个网络对旋转后的图像进行判断, 确定是否为人脸.
AdaBoost 框架
接下来介绍 AdaBoost 框架之后的方法, boost 算法是基于 PAC 学习理论 (probably approximately correct) 而建立的一套集成学习算法(ensemble learning). 其根本思想在于通过多个简单的弱分类器, 构建出准确率很高的强分类器, PAC 学习理论证实了这一方法的可行性.
在 2001 年 Viola 和 Jones 设计了一种人脸检测算法[10]. 它使用简单的 Haar-like 特征和级联的 AdaBoost 分类器构造检测器, 检测速度较之前的方法有 2 个数量级的提高, 并且保持了很好的精度, 我们称这种方法为 VJ 框架. VJ 框架是人脸检测历史上第一个最具有里程碑意义的一个成果, 奠定了基于 AdaBoost 目标检测框架的基础, 所以作为重点和大家唠唠.
在 VJ 算法问世之后, 较好的解决了近似正面人脸的检测问题. 此后出现了大量改进方案, 在深度学习技术出现之前, 一直是人脸检测算法的主流框架. 这些方案的改进主要在以下几个方面:
新的特征, 包括扩展的 Haar 特征 [4],ACF 特征[15] 等, 它们比标准的 Haar-like 特征有更强的描述能力, 同时计算成本也很低.
使用其他类型的 AdaBoost 分类器. VJ 框架中采用的是离散型的 AdaBoost 算法, 除此之外, 还有实数型, Logit 型, Gentle 型等各种方案. 实数型, Logit 型和 Gentle 型 AdaBoost 算法不仅能输出分类标签值, 还能给出置信度, 有更高的精度.
ACF[15](Aggregate ChannelFeatures for Multi-view Face Detection)是一种为分类提供足够多的特征选择的方法. 在对原图进行处理后, 得到多通道的图像, 这些通道可以是 RGB 的通道, 可以是平滑滤波得到的, 可以是 x 方向 y 方向的梯度图等等. 将这些通道合起来, 在此基础上提取特征向量后续采用 Soft-Cascade 分类器进行分类.
相较于 VJ-cascade 的设计, Soft-Cascade 采用几个改进的方案:
(1)每个 stage 的决策函数不是二值而是标量值(scalar-valued) , 且与该样本有多 "容易" 通过这个
stage 以及在这个 stage 的相对重要性成比例.
(2)生成的决策函数是需要通过之前每个阶段的值而不单单是本阶段来判定.
(3)文中把检测器的运行时间 - 准确率权衡通过一个叫 ROC surface 的 3 维曲面清楚的展示出来, 方便
调节参数, 可以明确的知道动了哪个参数会对这个检测器的性能会有些什么影响.
DMP 模型
DPM(Deformable Part Model), 正如其名称所述, 可变形的组件模型, 是一种基于组件的检测算法, 其所见即其意. 该模型由 Felzenszwalb 在 2008 年提出, 并发表了一系列的 CVPR,NIPS 会议. 并且还拿下了 2010 年, PASCAL VOC 的 "终身成就奖".
由于 DPM 算法 [16] 本身是一种基于组件的检测算法, 所以对扭曲, 性别, 多姿态, 多角度等的人脸都具有非常好的检测效果(人脸通常不会有大的形变, 可以近似为刚体, 基于 DMP 的方法可以很好地处理人脸检测问题).
深度学习框架
卷积神经网络在图像分类问题上取得成功之后很快被用于人脸检测问题, 在精度上大幅度超越之前的 AdaBoost 框架, 当前已经有一些高精度, 高效的算法. 直接用滑动窗口加卷积网络对窗口图像进行分类的方案计算量太大很难达到实时, 使用卷积网络进行人脸检测的方法采用各种手段解决或者避免这个问题.
Cascade CNN
Cascade CNN[17]可以认为是传统技术和深度网络相结合的一个代表, 和 VJ 人脸检测器一样, 其包含了多个分类器, 这些分类器采用级联结构进行组织, 然而不同的地方在于, Cascade CNN 采用卷积网络作为每一级的分类器.
构建多尺度的人脸图像金字塔, 12.NET 将密集的扫描这整幅图像(不同的尺寸), 快速的剔除掉超过 90% 的检测窗口, 剩下来的检测窗口送入 12-calibration.NET 调整它的尺寸和位置, 让它更接近潜在的人脸图像的附近.
采用非极大值抑制 (NMS) 合并高度重叠的检测窗口, 保留下来的候选检测窗口将会被归一化到 24x24 作为 24.NET 的输入, 这将进一步剔除掉剩下来的将近 90% 的检测窗口. 和之前的过程一样, 通过 24-calibration.NET 矫正检测窗口, 并应用 NMS 进一步合并减少检测窗口的数量
将通过之前所有层级的检测窗口对应的图像区域归一化到 48x48 送入 48.NET 进行分类得到进一步过滤的人脸候选窗口. 然后利用 NMS 进行窗口合并, 送入 48-calibration.NET 矫正检测窗口作为最后的输出.
DenseBox
文献 [18] 提出了一种称为 DenseBox 的目标检测算法, 适合人脸这类小目标的检测. 这种方法使用全卷积网络, 在同一个网络中直接预测目标矩形框和目标类别置信度. 通过在检测的同时进行关键点定位, 进一步提高了检测精度.
检测时的流程如下:
1. 对待检测图像进行缩放, 将各种尺度的图像送入卷积网络中处理, 以检测不同大小的目标.
2. 经过多次卷积和池化操作之后, 对特征图像进行上采样然后再进行卷积, 得到最终的输出图像, 这张
图像包含了每个位置出现目标的概率, 以及目标的位置, 大小信息.
3. 由输出图像得到目标矩形框.
4. 非最大抑制, 得到最终的检测结果.
Faceness.NET
Faceness.NET[19]是一个典型的由粗到精的工作流, 借助了多个基于 DCNN 网络的 facial parts 分类器对人脸进行打分, 然后根据每个部件的得分进行规则分析得到 Proposal 的人脸区域, 最后通过一个 Refine 的网络得到最终的人脸检测结果.
MTCNN
MTCNN[20]顾名思义是多任务的一个方法, 它将人脸区域检测和人脸关键点检测放在了一起, 同 Cascade CNN 一样也是基于 cascade 的框架, 但是整体思路更加巧妙合理, MTCNN 总体来说分为三个部分: .NET,.NET 和 .NET.
HR
之前我们讲过的一些方法都没有针对小目标去分析, 小目标检测依然是检测领域的一个难题,[21]本文作者提出的检测器通过利用尺度, 分辨率和上下文多种信息融合来检测小目标
Face R-CNN
[22]该方法基于 Faster R-CNN 框架做人脸检测, 针对人脸检测的特殊性做了优化.
SSH
[23] SSH 最大的特色就是尺度不相关性(scale-invariant), 比如 MTCNN 这样的方法在预测的时候, 是对不同尺度的图片分别进行预测, 而 SSH 只需要处以一个尺度的图片就可以搞定. 实现方式就是对 VGG 网络不同 level 的卷积层输出做了 3 个分支(M1,M2,M3), 每个分支都使用类似的流程进行检测和分类, 通过针对不同尺度特征图进行分析, 变相的实现了多尺度的人脸检测.
PyramidBox
这一次是百度的 "PyramidBox"[24]
参考文献
[1] Henry A Rowley, Shumeet Baluja, Takeo Kanade. Neural network-based face detection. 1998, IEEE Transactions on Pattern Analysis and Machine Intelligence.
[2] Henry A Rowley, Shumeet Baluja, Takeo Kanade. Rotation invariant neural network-based face detection. 1998, computer vision and pattern recognition.
[3] P.Viola and M.Jones. Rapid object detection using a boosted cascade of simple features. In Proceedings IEEE Conf. on Computer Vision and Pattern Recognition, 2001
[4] Rainer Lienhart, Jochen Maydt. An extended set of Haar-like features for rapid object detection. 2002, international conference on image processing.
[5] Lubomir Bourdev, Jonathan Brandt. Robust Object Detection Via Soft Cascade. CVPR 2005.
[6] Bo Wu, Haizhou Ai, Chang Huang, Shihong Lao. Fast rotation invariant multi-view face detection based on real Adaboost. 2004, IEEE international conference on automatic face and gesture recognition.
[7] M.Jones, P.Viola. Fast Multi-View Face Detection. Mitsubishi Electric Research Laboratories, Technical Report: MERL-2003-96, July 2003.
[8] Y.Ma, X.Q.Ding. Real-time rotation invariant face detection based on cost-sensitive AdaBoost. In: Proceedings of the IEEE International Conference on Image Processing. Barcelona, Spain: IEEE Computer Society, 2003. 921-924.
[9] Y.Ma, X.Q.Ding. Robust multi-view face detection and pose estimation based on cost-sensitive AdaBoost. In: Proceedings of the 6-th Asian Conference on Computer Vision. Jeju, Korea: Springer, 2004.
[10] S.Z.Li, L.Zhu, Z.Q.Zhang, A.Blake, H.J.Zhang, H.Y.Shum. Statistical learning of multi-view face detection. In: Proceedings of the 7-th European Conference on Computer Vision. Copenhagen, Denmark: Springer, 2002.67-81.
[11] S.Z.Li, Z.Q.Zhang, H.Y.Shum, H.J.Zhang. FloatBoost learning for classification. In: Proceedings of the 16-th Annual Conference on Neural Information Processing Systems. Vancouver, Canada: MIT Press, 2002. 993-1000.
[12] S.Z.Li, L.Zhu, Z.Q.Zhang, H.J.Zhang. Learning to detect multi-view faces in real-time. In: Proceedings of the 2-nd International Conference on Development and Learning. Cambridge, MA, USA: IEEE Computer Society, 2002. 172-177.
[13] S.Z.Li, Z.Q.Zhang. FloatBoost Learning and Statistical Face Detection. In: IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004.
[14] B.Wu, H.Z.Ai, C.Huang, S.H.Lao. Fast rotation invariant multi-view face detection based on real adaboost. In: Proc. 6th Int'l Conf. Automatic Face and Gesture Recognition, 2004, 79-84.
[15] B. Yang, J. Yan, Z. Lei and S. Z. Li. Aggregate channel features for multi-view face detection.. International Joint Conference on Biometrics, 2014.
[16] M. Mathias, R. Benenson, M. Pedersoli and L. Van Gool. Face detection without bells and whistles. ECCV 2014.
[17] Haoxiang Li, Zhe Lin, Xiaohui Shen, Jonathan Brandt, Gang Hua. A convolutional neural network cascade for face detection. 2015, computer vision and pattern recognition
[18] Lichao Huang, Yi Yang, Yafeng Deng, Yinan Yu. DenseBox: Unifying Landmark Localization with End to End Object Detection. 2015, arXiv: Computer Vision and Pattern Recognition
[19] Shuo Yang, Ping Luo, Chen Change Loy, Xiaoou Tang. Faceness.NET: Face Detection through Deep Facial Part Responses.
[20] Kaipeng Zhan, Zhanpeng Zhang, Zhifeng L, Yu Qiao. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks. 2016, IEEE Signal Processing Letters.
[21] HR - P. Hu, D. Ramanan. Finding Tiny Faces. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017.
[22] Face R-CNN - H. Wang, Z. Li, X. Ji, Y. Wang. Face R-CNN. arXiv preprint arXiv:1706.01061, 2017.
[23] SSH - M. Najibi, P. Samangouei, R. Chellappa, L. Davis. SSH: Single Stage Headless Face Detector. IEEE International Conference on Computer Vision (ICCV), 2017.
[24] PyramidBox - X. Tang, Daniel K. Du, Z. He, J. Liu PyramidBox: A Context-assisted Single Shot Face Detector. arXiv preprint arXiv:1803.07737, 2018.
来源: http://www.bubuko.com/infodetail-3002551.html