论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

框架

  1. resize图片,生成图像金字塔。
  2. 对图像金字塔中的每一张图片,作为阶段1的输入,得到的输出经处理为第一批候选框。
  3. 对所有第一批候选框,作为阶段2的输入,得到的输出淘汰了大部分不包含脸的候选框,经处理为第二批候选框。
  4. 对所有第二批候选框,作为阶段3的输入,得到的输出经处理为输出框和五个关键点坐标。

论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

预处理

根据预设的参数将图像resize成不同大小,形成图像金字塔。

阶段1

阶段1使用一个全卷积网络P-Net,该网络输入为图像金字塔中所有图像,输出的前6个通道为每个对应位置的得分、和框位置调整值。

论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

随后对所有得分大于阈值的框,根据位置调整值校准位置,并使用非极大值抑制(NMS)算法合并重复的框。

阶段2

阶段2使用卷积网络R-Net,对第一批候选框中每张图像,resize至24x24并作为网络输入,输出的前6个通道为得分和框位置调整值。

论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

经过得分筛选后的剩余框再次经过校准位置和NMS得到第二批候选框。

阶段3

阶段3使用卷积网络O-Net,对第二批候选框中每张图像,resize至48x48并作为网络输入,输出分别为得分、框位置调整值和5个关键点坐标。

论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

最后经过校准位置和NMS得到的框及其关键点坐标即为整个过程的结果。

训练

该模型的训练分为3部分:判断是否是脸的分类器,框位置校准和关键点定位。

脸分类器

即一个二类分类问题,使用交叉熵损失函数:
论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

框位置校准

根据预测的偏移和最近的实际框的偏移进行训练,即视为回归问题,使用欧几里得损失:
论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

关键点定位

关键点定位也是回归问题,使用欧几里得损失:
论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

多源训练

由于整个模型中有多个任务存在,各损失函数并不完全平等,如非脸的样本只计算脸分类器的损失,另外两个损失记为0。整个模型的学习目标可以表示为:
论文笔记:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

在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,只根据这一部分样本计算梯度。这种方法忽略了对训练影响较小的样本,取得了更好的效果。