Multi-Task CNN
- 同时实习人脸检测与人脸对齐;
- 级联结构,三阶段卷积网络,由粗到细的预测人脸候选框和关键点位置
数据预处理
对图像进行多尺度的resize,构成图像金字塔,顶端金字塔最小应该大于12 * 12。这样网络的输入尺寸虽然固定,但是可以处理不同尺寸的人脸。
训练集构建
由于网络同时执行人脸检测和对齐,因此在这里我们在训练过程中使用四种不同的数据类型:
- Positives:与ground truth face的IOU高于阈值0.65,
- Negatives: 与ground truth face的IOU低于阈值0.3
- partfaces: 与ground truth face的IOU处于0.4和0.65之间
- landmarkface: 拥有landmark的标签的人脸
在人脸分类任务中使用使用positives & negatives; 在候选框bbox预测任务中使用positives & partface; 在人脸landmark预测任务中使用landmarkfaces
Proposal Network (P-Net)
得到5个通道的特征图:第一个通道代表置信度:凡是大于0.7的留下来然后。反算回去:IDX(特征图的索引)*步长=进入P网络图的尺寸,然后除以原图的比例,得到建议框(为正方形),另外四个通道为位置的偏移:XX * / W = X关(偏移)得到原框X.然后通过非大值抑制,将多余的框去掉。
- 借助FCN思想,每个12*12*3的bbox候选框作为输入,PNet只能检测12*12内人脸,所以应对图像按比例缩放;将每个金字塔的图片输入到P网络
- 在训练时,有3条支路输出为人脸分类,边框回归,关键点定位;而在测试时,输出只有N个边框的4个坐标信息和score(人脸分类置信度)
- 输出候选框和相对应的边界框回归向量(K*9,K就是bbox的数量,9包含4个坐标点信息(利用回归支路进行修改),1个置信度score和4个用来调整前面4个坐标点的偏移信息).
- 利用回归向量修改边框,然后NMS去除重叠输出为N*5,N为最终bbox个数.
Refine Network (R-Net)
由于得到的原框大小可能为长方形,所以需要PIL等工具在原图上接一个正方形,然后在等比例缩放,得到的24×24的人脸不会变形。然后重新确定位置的偏移,得到新的框,再做NMS
- 以P-Net预测的bbox信息为基础,对原始图片切片并resize尺寸,即将bbox pading 为24*24,增加为4维,最终输入(N,3,24,24)
- 经过人脸概率滤除,回归信息利用,NMS得到最终输出M*5,即M个4个坐标点信息(利用回归支路进行修改)和score组合
O-Net
- 与R-Net类似,但增加landmark位置信息的回归,输入N*3*48*48,
- output[0]N*10表示5个关键点的x,y信息.ouput[1]表示最终若干个bbox的4个坐标信息和置信度分数
训练过程
三个任务:
face/non-face classification
此为二分类问题,对于每个输入,我们采用交叉熵损失函数:
这里是网络预测样本为人脸的概率,
表示真实人脸标签数据
bounding box regression
对于每个候选窗口,我们预测它与最近的真实标签之间的偏移(左上、宽度、高度),为回归任务,采用欧几里得损失函数(L2范数损失函数):
这里为网络输出的边框回归
landmark localization
如同边框回归,关键点定位也是回归问题,最小化损失函数
多任务训练
通过损失函数分配实现:根据不同的输入计算上述三种损失值
这里N是样本数,表示任务重要性,P-Net,R-Net(
),O-Net(
)。P-Net and R-Net的landmark任务重要性小于O-Net,说明前两个stage重在滤除非人脸bbox
为样本探测器,非人脸情况下,只需计算交叉熵损失。
此外,在每个mini-batch中,对前向传播中所有样本的损失进行排序,选择前70%,作为hard sample,然后只将硬样本的梯度用于反向传播.