MTCNN学习笔记
MTCNN由三个神经网络组成:pnet、rnet、onet
1、pnet
将原始图像缩放到不同尺度,形成图像金字塔
将每个尺度的金字塔都送入神经网络计算
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检测结果:
通过nms(非极大值抑制)将一些与得分高的框的IOU(交并比)大于阈值的框抛弃掉
2、rnet
将每个pnet输出可能为人脸的区域缩放至24*24*3,送入rnet;
rnet消除了很多pnet的误判
rnet检测结果:
3、onet
将rnet得到的结果缩放至48*48*3,送入onet
最终的检测结果:
4、损失
对于人脸判别部分,直接使用交叉熵损失;对于框回归和关键点判定,直接使用L2损失;3个部分的损失加起来,得到总损失。在训练pnet和rnet时,更关心框位置的准确性,关键点判定损失的权重很小;而onet关键点判定损失的权重很大。
5、小结
pnet、rnet、onet输入的图片越来越大,层数越来越多;
pnet运行速度最快,rnet次之,onet最慢;
pnet、rnet、onet层层过滤,每一步减少了需要判别的数量,减小了判别的时间。