MTCNN学习笔记

MTCNN由三个神经网络组成:pnet、rnet、onet

1、pnet

MTCNN学习笔记

将原始图像缩放到不同尺度,形成图像金字塔

MTCNN学习笔记

将每个尺度的金字塔都送入神经网络计算

pnet输入: (12,12,3)

pnet需要判断该12*12*3的图像中是否有人脸,并给出人脸框和关键点的位置

1)face classification

输出向量形状为1*1*2,分别为该12*12*3是人脸的概率,以及不是人脸的概率

2)bounding box regression

输出向量形状为1*1*4,表示预测的人脸框

3)facial landmark localization

输出向量形状为1*1*10,表示关键点的位置(左眼,右眼,鼻子,左嘴角,右嘴角)

pnet检测结果:

MTCNN学习笔记

通过nms(非极大值抑制)将一些与得分高的框的IOU(交并比)大于阈值的框抛弃掉

2、rnet

MTCNN学习笔记

将每个pnet输出可能为人脸的区域缩放至24*24*3,送入rnet;

rnet消除了很多pnet的误判

rnet检测结果:

MTCNN学习笔记

3、onet

MTCNN学习笔记

将rnet得到的结果缩放至48*48*3,送入onet

最终的检测结果:

MTCNN学习笔记

4、损失

对于人脸判别部分,直接使用交叉熵损失;对于框回归和关键点判定,直接使用L2损失;3个部分的损失加起来,得到总损失。在训练pnet和rnet时,更关心框位置的准确性,关键点判定损失的权重很小;而onet关键点判定损失的权重很大。

5、小结

pnet、rnet、onet输入的图片越来越大,层数越来越多;

pnet运行速度最快,rnet次之,onet最慢;

pnet、rnet、onet层层过滤,每一步减少了需要判别的数量,减小了判别的时间。