人脸识别(一)------MTCNN
关于MTCNN
2016年Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li, Yu Qiao提出了人脸检测MTCNN(Multi-task Cascaded Convolutional Networks)模型。该模式是一种Multi-task的人脸检测框架,使用3个CNN级联算法结构,将人脸检测和人脸特征点检测同时进行。
MTCNN的网络架构及各个网络的作用
图片按不同比例缩放形成图像金字塔
P-Net
①.获得人脸区域的候选窗口和边界框的回归向量。
②.用该边界框做回归校准候选窗口,通过非极大值抑制(NMS)来合并高度重叠的候选框。
R-Net
①.将P-Net处理后获得的候选框在R-Net中训练,利用边界框的回归值微调候选框。
②.利用NMS去除重叠窗体
O-Net
与R-Net相似,去除重叠窗口的同时显示人脸的五个关键点定位。
三个网络的分析
P-Net
p-Net为全卷积神经网络,如下图所示:
输入图像: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 包含卷积层和全连接层,如下所示:
输入图像: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 包含卷积层和全连接层,如下所示:
输入图像: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 流程图
①. 原始图片 + P-Net ----> bounding boxes1
②. 原始图片 + bounding boxes1 + R-Net ----> bounding boxes2
③. 原始图片 + bounding boxes2 + O-Net ----> bounding boxes3 + 人脸关键点