解读论文为《Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》
基于多任务级联卷积神经网络的人脸检测和对齐
论文地址:
https://kpzhang93.github.io/MTCNN_face_detection_alignment/
本文作者:非文艺小燕儿,博客地址:http://blog.csdn.net/fuwenyan/article/details/73201680
以下如有错误疏漏之处,还请大家帮忙指正。欢迎注明出处的转载。
这篇文章在人脸检测和特征点定位任务上,精度较之前state-of-art的算法有明显的提升,而且具有实时处理的性能。
文中有2个点:
(1)通过三阶的级联卷积神经网络对任务进行从粗到细的处理;
(2)还提出一种新的在线困难样本生成策略可以进一步提升性能。
最主要的点,应该算是三阶的级联卷积神经网络。
每个阶段的网络都是一个多任务网络。处理任务有三个:人脸/非人脸判定、人脸框回归和特征点定位。
人脸/非人脸判定采用cross-entropy损失函数:
人脸框回归采用欧式距离损失函数:
特征点定位也采用欧式距离损失函数:
其中a表示三个任务在当前阶段的网络中损失所占比重。B是采样类型指示,取值为{0,1},当人脸/非人脸判定为非人脸时,box和landmark的B取值0,而det取值1;判定为人脸时,全部取值为1.
接下来详细讲述各阶段:
数据与处理:为应对目标多尺度问题,将原始图像resize到不同尺寸,构建图像金字塔,作为三阶级联架构的输入。
第一阶段,通过一个浅层的CNN快速生成候选窗口。
该阶段是一个全部由卷积层组成的CNN,取名P-Net,获取候选人脸窗口以及人脸框回归向量。基于人脸框回归向量对候选窗口进行校正。之后采用NMS合并高重叠率的候选窗口。
该阶段在三个任务det、box、landmark任务上,a的对应取值为{1.0,0.5,0.5}.
第二阶段,通过一个更复杂的CNN否决大量非人脸窗口从而精化人脸窗口。
第一阶段输出的候选窗口作为R-Net的输入,R-Net能够进一步筛除大量错误的候选窗口,再利用人脸框回归向量对候选窗口做校正,并执行NMS。
该阶段在三个任务det、box、landmark任务上,a的对应取值为{1.0,0.5,1.0}.
第三阶段,使用更复杂的CNN进一步精化结果并输出5个人脸特征点。
与stage2相似,但这一阶段用更多的监督来识别人脸区域,而且网络能够输出五个人脸特征点位置坐标。
该阶段在三个任务det、box、landmark任务上,a的对应取值为{1.0,0.5,1.0}.
以上四个步骤的直观图示如下:
关于另外一个在线困难样本生成的策略,是指不同于以往离线生成采样的方式,本文的处理方式是在每个mini-batch中选出70%大loss的样本作为困难样本,并且在BP阶段只利用这部分计算梯度。也就是说抛弃了一些对强化分类没有多大作用的简单样本。文中表示,通过实验表明这样做能够进一步提升精度。