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:二分类问题,使用交叉熵损失,对于样本 x i x_i xi,其损失为:
L i d e t = − ( y i d e t l o g ( p i ) + ( 1 − y i d e t ) l o g ( 1 − p i ) ) L_i^{det}=-(y_i^{det}log(p_i)+(1-y_i^{det})log(1-p_i)) Lidet=−(yidetlog(pi)+(1−yidet)log(1−pi))
其中, p