MTCNN 论文笔记
原论文地址:《Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》
代码:参考资料:MTCNN(Multi-task convolutional neural networks)人脸对齐(这篇文章有结构图,很清晰)
文中引用的这篇论文也用了CNN的层级结构:《H. Li, Z. Lin, X. Shen, J. Brandt, and G. Hua, “A convolutional neural network cascade for face detection,” in IEEE Conference on Computer Vision and Pattern Recognition, 2015, pp. 5325-5334.》,地址在:http://openaccess.thecvf.com/content_cvpr_2015/papers/Li_A_Convolutional_Neural_2015_CVPR_paper.pdf
这个模型利用多任务层级卷积网络(Multi-task Cascaded Convolutional Networks)将人脸检测与人脸对齐结合在一起。
基本框架
- 先用一个轻量级的CNN生成候选窗口。这一步的候选窗口会被边界框回归向量进行校准,也会用NMS算法合并IoU值较高的候选区域;
- 再用一个相对复杂的网络对上一步的到的候选框进行提炼(或者说是过滤),并进一步用NMS算法进行合并;
- 最后用一个更复杂且更高效的网络对候选框进行进一步提炼,并输出人脸关键点(Facial Landmarks Position)。这一步相对于前两步加入了更多的监督信息。
这几步中的CNN依次被称为P-Net(Proposal Network)、R-Net(Refinement Network)、O-Net(Output Network)。
下面是上面几个步骤的示例图,取自原论文。
下面是论文中给出的MTCNN架构图。其中,MP是Max Pooling,Conv是卷积,Conv与Pooling的stride分别是1和2。
训练
1. 人脸分类
其中,为是人脸的概率,表示是否是人脸。
2. 边界框回归
其中,为通过网络预测得到,为实际的真实的背景坐标,且为组成的四元组。
3. 人脸 Landmarks 坐标回归
其中,与分别都有五个点:左眼、右眼、鼻子、左嘴角、右嘴角。每个向量共有10个值。
4. 多源训练
其中,为训练样本数量,表示任务的重要性,为样本标签,为上面的损失函数。
关于值,论文是这么给出的:
P-Net与R-Net:
O-Net:
5. Online Hard sample mining
对每个Batch前项传播得到的loss进行排序,取前70%,只利用这70%的数据进行反向传播更新梯度。这样能让方向传播的梯度更新更有效。