Multi-Task CNN

  • 同时实习人脸检测与人脸对齐;
  • 级联结构,三阶段卷积网络,由粗到细的预测人脸候选框和关键点位置

数据预处理

对图像进行多尺度的resize,构成图像金字塔,顶端金字塔最小应该大于12 * 12。这样网络的输入尺寸虽然固定,但是可以处理不同尺寸的人脸。

训练集构建

由于网络同时执行人脸检测和对齐,因此在这里我们在训练过程中使用四种不同的数据类型:

  1. Positives:与ground truth face的IOU高于阈值0.65,
  2. Negatives: 与ground truth face的IOU低于阈值0.3
  3. partfaces: 与ground truth face的IOU处于0.4和0.65之间
  4. landmarkface: 拥有landmark的标签的人脸

在人脸分类任务中使用使用positives & negatives; 在候选框bbox预测任务中使用positives & partface;  在人脸landmark预测任务中使用landmarkfaces
    

Proposal Network (P-Net)

得到5个通道的特征图:第一个通道代表置信度:凡是大于0.7的留下来然后。反算回去:IDX(特征图的索引)*步长=进入P网络图的尺寸,然后除以原图的比例,得到建议框(为正方形),另外四个通道为位置的偏移:XX * / W = X关(偏移)得到原框X.然后通过非大值抑制,将多余的框去掉。

  1. 借助FCN思想,每个12*12*3的bbox候选框作为输入,PNet只能检测12*12内人脸,所以应对图像按比例缩放;将每个金字塔的图片输入到P网络
  2. 在训练时,有3条支路输出为人脸分类,边框回归,关键点定位;而在测试时,输出只有N个边框的4个坐标信息和score(人脸分类置信度)
  3. 输出候选框和相对应的边界框回归向量(K*9,K就是bbox的数量,9包含4个坐标点信息(利用回归支路进行修改),1个置信度score和4个用来调整前面4个坐标点的偏移信息).
  4. 利用回归向量修改边框,然后NMS去除重叠输出为N*5,N为最终bbox个数.

Refine Network (R-Net)

由于得到的原框大小可能为长方形,所以需要PIL等工具在原图上接一个正方形,然后在等比例缩放,得到的24×24的人脸不会变形。然后重新确定位置的偏移,得到新的框,再做NMS

  1. 以P-Net预测的bbox信息为基础,对原始图片切片并resize尺寸,即将bbox pading 为24*24,增加为4维,最终输入(N,3,24,24)
  2. 经过人脸概率滤除,回归信息利用,NMS得到最终输出M*5,即M个4个坐标点信息(利用回归支路进行修改)和score组合

O-Net

  1. 与R-Net类似,但增加landmark位置信息的回归,输入N*3*48*48,
  2. output[0]N*10表示5个关键点的x,y信息.ouput[1]表示最终若干个bbox的4个坐标信息和置信度分数

训练过程

三个任务:

face/non-face classification

此为二分类问题,对于每个输入x_{i},我们采用交叉熵损失函数:

L_{i}^{det} = -(y_{i}^{det} log(p_{i}) + (1-y_{i}^{det})(1- log(p_{i})))

这里p_{i}是网络预测样本为人脸的概率,y^{det} \in \left \{ 0,1 \right \}表示真实人脸标签数据

bounding box regression

对于每个候选窗口,我们预测它与最近的真实标签之间的偏移(左上、宽度、高度),为回归任务,采用欧几里得损失函数(L2范数损失函数):

L_{i}^{box} = \left \| \widehat{y}_{i}^{box} - y_{i}^{box}\right \|_{2}^{2}

这里\widehat{y}_{i}^{box} \in \mathbb{R}^{4}为网络输出的边框回归

landmark localization

如同边框回归,关键点定位也是回归问题,最小化损失函数

L_{i}^{landmark} = \left \| \widehat{y}_{i}^{landmark} - y_{i}^{landmark}\right \|_{2}^{2}

多任务训练

通过损失函数分配实现:根据不同的输入计算上述三种损失值

\min \sum_{i=1}^{N} \sum_{j\in\left \{ det,box,landmark \right \}}\alpha _{j}\beta _{i}^{j}L_{i}^{j}

这里N是样本数,\alpha _{j}表示任务重要性,P-Net,R-Net(\alpha _{det} = 1,\alpha_{box}=0.5,\alpha_{landmark}=0.5),O-Net(\alpha _{det} = 1,\alpha_{box}=0.5,\alpha_{landmark}=1)。P-Net and R-Net的landmark任务重要性小于O-Net,说明前两个stage重在滤除非人脸bbox 

\beta _{i}^{j} \in \left \{ 0,1 \right \}为样本探测器,非人脸情况下,只需计算交叉熵损失。

此外,在每个mini-batch中,对前向传播中所有样本的损失进行排序,选择前70%,作为hard sample,然后只将硬样本的梯度用于反向传播.