Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
I. Motivation:
1.人脸检测时会遇到的问题:人脸的不同角度、光照、遮挡等
2.之前的人脸检测和对齐方法的缺点:
(1) 忽视了人脸检测和人脸对齐这两个任务之间的关联。(做人脸检测没有结合facial landmark)
(2) 传统的困难样本挖掘(hard sample mining)采用的是offline的方式,大大增加了人工操作
II. MTCNN方法概述:
1.A deep cascaded multi-task framework for joint face detection and alignment: 通过三个阶段的深度卷积网络以从粗到细的方式对人脸和landmark位置进行预测 (bbox regression结合facial landmark)
2.online hard sample mining strategy
III.MTCNN具体细节:
1.整体框架
MTCNN pipeline如图1所示。对给定的照片,先将其缩放到不同尺寸形成图像金字塔,然后这些不同尺寸的图像作为3个stage的输入进行训练,目的是为了可以检测不同scale的人脸。
P-Net是一个全卷积网络(FCN),用来生成一些候选框(candidate windows)及其bbox regression vectors。在训练的时候该网络的顶部有3条支路用来分别做人脸分类、人脸框回归和人脸关键点定位;在测试的时候这一步的输出只有N个bounding box的4个坐标信息和score,当然这4个坐标信息已经用回归支路的输出进行修正了,使用非极大值抑制(NMS)合并重叠的候选框。
R-Net主要用来去除大量的非人脸框。这一步的输入是前面P-Net生成的bounding box,每个bounding box的大小都是24x24,可以通过resize操作得到,拒绝掉大部分false candidates,继续进行bounding box regression校正和NMS合并。同样在测试的时候这一步的输出只有M个bounding box的4个坐标信息和score,4个坐标信息也用回归支路的输出进行修正了 。
O-Net和R-Net有点像,只不过这一步还增加了landmark位置的回归。输入大小调整为48x48,输出包含P个bounding box的4个坐标信息、score和关键点信息。
2.CNN架构
之前用于人脸检测的CNN的缺点:
(1) some filters lack diversity of weights that may limit them to produce discriminative description
(2) face detection is a challenge binary classification task, so it may need less numbers of filters but more discrimination of them
MTCNN的改进:
(1) 减少了filter数量并将5×5 filter改为3×3 filter,减少了计算量
(2) 增加模型深度以获得更好的表现
3.训练
CNN detectors有三个任务:face/non-face classification, bounding box regression, and facial landmark localization
(1)face/non-face classification:二分类问题,使用交叉熵损失,对于样本,其损失为:
其中,表示模型预测的样本为人脸的概率,是ground-truth标签。
(2)bounding box regression:回归问题,使用平方和损失,对于样本,其损失为:
其中,是模型预测的bbox坐标,是ground-truth坐标。四个坐标分别是,左上坐标、高和宽。
(3)facial landmark localization:回归问题,同样使用平方和损失,对于样本,其损失为:
有5个landmark,分别是左/右眼,鼻子,左/右嘴角,因此.
(4)Multi-source training:不是每个sample都要全部使用上述三种损失函数,比如对于背景只需要计算交叉熵损失,不需要计算别的损失,这样就需要引入一个indicator来指示样本是否需要计算某一项损失。最终的训练目标函数是:
其中,N表示样本总数,表示任务的重要性。论文在P-Net 和 R-Net中设置,在O-Net中设置以获得更准确的facial landmarks定位。是type indicator。由损失函数,选择SGD作为优化方法是一个很自然的选择。
(5)Online Hard sample mining: 传统的hard sample处理方法是检测过一次以后,手动检测哪些困难的样本无法被分类。本文采用online hard sample mining,具体就是在每个mini-batch中,取loss最大的70%样本计算梯度,进行反向传播,忽略那些简单的样本。
参考:
MTCNN人脸及特征点检测—代码应用详解(基于ncnn架构)
多任务深度学习(MultiTask Learning)