人脸识别(一)------MTCNN

关于MTCNN

2016年Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li, Yu Qiao提出了人脸检测MTCNN(Multi-task Cascaded Convolutional Networks)模型。该模式是一种Multi-task的人脸检测框架,使用3个CNN级联算法结构,将人脸检测和人脸特征点检测同时进行。

MTCNN的网络架构及各个网络的作用

knn算法人脸识别 人脸识别cnn模型_全连接

图片按不同比例缩放形成图像金字塔

P-Net

①.获得人脸区域的候选窗口和边界框的回归向量。
②.用该边界框做回归校准候选窗口,通过非极大值抑制(NMS)来合并高度重叠的候选框。

R-Net

①.将P-Net处理后获得的候选框在R-Net中训练,利用边界框的回归值微调候选框。
②.利用NMS去除重叠窗体

O-Net

与R-Net相似,去除重叠窗口的同时显示人脸的五个关键点定位。

三个网络的分析

P-Net

p-Net为全卷积神经网络,如下图所示:

knn算法人脸识别 人脸识别cnn模型_knn算法人脸识别_02

输入图像:12 * 12 * 3
卷积层1: 3 * 3 * 10
池化层:2 * 2 (s = 2)-----> 5 * 5 * 10
卷积层2:3 * 3 * 16 -----> 3 * 3 * 16
卷积层3: 3 * 3 * 32 -----> 1 * 1 * 32
卷积层:1 * 1 * 2 ----> 分类,是否为人脸
卷积层:1 * 1 * 4 ----> 回归,人脸候选框(左上角坐标(x, y), 矩形框的宽和高
卷积层:1 * 1 * 10 ----> 人脸特征点定位(每个点包含(x, y),眼睛 * 4, 鼻子 * 2, 嘴角 * 4)

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

R-Net

R-Net 包含卷积层和全连接层,如下所示:

knn算法人脸识别 人脸识别cnn模型_人脸识别_03

输入图像:24 * 24 * 3
卷积层1: 3 * 3 * 28
池化层1:3 * 3(s = 2) -----> 11 * 11 * 28
卷积层2:3 * 3 * 48
池化层2:3 * 3(s = 2) -----> 4 * 4 * 48
卷积层3: 2 * 2 * 64 -----> 3 * 3 * 64
全连接层:[3 * 3 * 64, 128] ----> 128
全连接层: 2 ----> 分类,是否为人脸
全连接层: 4 ----> 回归,人脸候选框(左上角坐标(x, y), 矩形框的宽和高
全连接层: 10 ----> 人脸特征点定位(每个点包含(x, y),眼睛 * 4, 鼻子 * 2, 嘴角 * 4)

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

O-Net

O-Net 包含卷积层和全连接层,如下所示:

knn算法人脸识别 人脸识别cnn模型_全连接_04

输入图像:48 * 48 * 3
卷积层1: 3 * 3 * 32
池化层1:3 * 3(s = 2) -----> 23 * 23 * 32
卷积层2:3 * 3 * 64
池化层2:3 * 3(s = 2) -----> 10 * 10 * 64
卷积层3: 3 * 3 * 64
池化层3:3 * 3(s = 2) -----> 4 * 4 * 64
卷积层4: 2 * 2 * 128 ----> 3 * 3 * 128
全连接层:[3 * 3 * 128, 256] ----> 256
全连接层: 2 ----> 分类,是否为人脸
全连接层: 4 ----> 回归,人脸候选框(左上角坐标(x, y), 矩形框的宽和高
全连接层: 10 ----> 人脸特征点定位(每个点包含(x, y),眼睛 * 4, 鼻子 * 2, 嘴角 * 4)

MTCNN 流程图

knn算法人脸识别 人脸识别cnn模型_knn算法人脸识别_05

①. 原始图片 + P-Net ----> bounding boxes1
②. 原始图片 + bounding boxes1 + R-Net ----> bounding boxes2
③. 原始图片 + bounding boxes2 + O-Net ----> bounding boxes3 + 人脸关键点