论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
框架
- resize图片,生成图像金字塔。
- 对图像金字塔中的每一张图片,作为阶段1的输入,得到的输出经处理为第一批候选框。
- 对所有第一批候选框,作为阶段2的输入,得到的输出淘汰了大部分不包含脸的候选框,经处理为第二批候选框。
- 对所有第二批候选框,作为阶段3的输入,得到的输出经处理为输出框和五个关键点坐标。
预处理
根据预设的参数将图像resize成不同大小,形成图像金字塔。
阶段1
阶段1使用一个全卷积网络P-Net,该网络输入为图像金字塔中所有图像,输出的前6个通道为每个对应位置的得分、和框位置调整值。
随后对所有得分大于阈值的框,根据位置调整值校准位置,并使用非极大值抑制(NMS)算法合并重复的框。
阶段2
阶段2使用卷积网络R-Net,对第一批候选框中每张图像,resize至24x24并作为网络输入,输出的前6个通道为得分和框位置调整值。
经过得分筛选后的剩余框再次经过校准位置和NMS得到第二批候选框。
阶段3
阶段3使用卷积网络O-Net,对第二批候选框中每张图像,resize至48x48并作为网络输入,输出分别为得分、框位置调整值和5个关键点坐标。
最后经过校准位置和NMS得到的框及其关键点坐标即为整个过程的结果。
训练
该模型的训练分为3部分:判断是否是脸的分类器,框位置校准和关键点定位。
脸分类器
即一个二类分类问题,使用交叉熵损失函数:
框位置校准
根据预测的偏移和最近的实际框的偏移进行训练,即视为回归问题,使用欧几里得损失:
关键点定位
关键点定位也是回归问题,使用欧几里得损失:
多源训练
由于整个模型中有多个任务存在,各损失函数并不完全平等,如非脸的样本只计算脸分类器的损失,另外两个损失记为0。整个模型的学习目标可以表示为:
在P-Net和R-Net中,αdet=1,αbox=0.5,αlandmark=0.5。
在O-Net中,αdet=1,αbox=0.5,αlandmark=1,使得O-Net的关键点定位更精确。
βij取0或1来表示样本类别。
整个训练采用随机梯度下降法。
online hard sample mining
对每一个训练批次,计算loss前70%的样本作为hard sample,只根据这一部分样本计算梯度。这种方法忽略了对训练影响较小的样本,取得了更好的效果。