0.论文连接
1.前言
MTCNN是一篇关于人脸检测算法效果很不错的论文,落地效果也很好,据我所知有不少公司在用这个算法做人脸检测,在这里做一下论文解读,这里会详细的做一下论文解读,对于一些先验知识跟先验网络也会进行解析。
2.论文Abstract翻译
在无约束环境下,人脸的检测与对齐对于不同的姿势,灯光和遮挡是非常有挑战性的。近期的学术研究证明了深度学习方法在这两个任务上能够实现令人钦佩的性能。本文,我们提出了一个深度级联多任务框架,它能够利用人脸检测与对齐的内在相关性来提高他们的性能。尤其是我们的框架利用级联架构,分三个精心设计的深度卷积神经网络通过由粗糙到细致的方式来预测脸部整体和特征点的坐标。另外,我们提出了一种新的在线挖掘困难样本的策略,这样可以更好的提高模型的实际性能。我们的方法实现了卓越的准确性通过最先进的技术来应对挑战面向人脸检测的FDDB和WIDER FACE基准测试AFLW面部对齐基准,同时保持实时性能。
3.论文的主要贡献
- 提出了一种新的基于将脸部检测和对齐的一体化级联CNN框架,并且精心设计了一个轻量级的CNN框架,实现实时性能。
- 提出了一种有效可以在线生成困难样本挖掘的方法来提高性能。
- 在具有挑战性的基准上进行了大量的实验,通过与人脸对齐和检测上的先进方法的比较来显示本文模型优秀的性能提高。
4.算法流程
4.1 网络效果图
由图可知整体流程,首先对图片多尺度变换构建图像金字塔,作为网络的输入。接下来就是三层级联卷积网络。
4.2 三层网络概述
4.2.1 P-Net
P-Net(Proposal Network)是一个全连接卷积神经网络,他粗略的获取脸部候选框跟边框回归变量,然后候选框通过边框回归变量(边框回归解释)进行校正。最后用NMS算法合并高度重合的候选框。
4.2.2 R-Net
将所有的候选框作为下层网络R-Net(Refine
Network)的输入,这个网络将会进一步拒绝大量的效果不好的候选框,然后同样的通过边框回归变量进行校正,NMS进行合并。
4.2.3 O-Net
O-Net与R-Net较为相似,但是在这个网络的目标是通过更多的监督来识别面部的区域。特别的是,这个网络将会输出人脸的五个特征点。
4.3 网络的结构
在论文“A convolutional neural network cascade for face detection”中, 多种CNN被设计成可以做面部检测。但是,他的性能可能被以下几个因素限制:
- 在卷积层中的一些卷积层缺少多样性,那样会限制模型的识别能力。
- 与其他多类别的目标检测跟分类任务相比,人脸检测是一个具有挑战性的二分类任务,所以他的卷积层可能需要更少的卷积核。为此,我们减少卷积核的数量并且将5x5的卷积核变成3x3,因此在减少计算量同时增加深度并且获得更好的性能。
通过这些改善,与在论文“A convolutional neural network cascade for face detection”的网络结构相比,可以在更少的运行时间获得更好的性能。性能对比图如下,
网络结构图如下
同时激活函数用的是PReLU.
4.4 训练
我们利用三项任务来训练我们的CNN检测器:人脸检测,边框回归,人脸特征点位置。
人脸检测:学习目标制定为一个二分类问题,对每个样本 xi x i ,我们用交叉熵损失函数:
Ldeti=−(ydetilog(pi)+(1−ydeti)(1−log(pi))) L i d e t = − ( y i d e t l o g ( p i ) + ( 1 − y i d e t ) ( 1 − l o g ( p i ) ) )
pi p i 是通过神经网络预测出样本 <