人脸检测算法:mtcnn简介

人脸检测算法:MTCNN简介


MTCNN是一个针对于人脸检测的模型, 由PNet, RNet, 和ONet三个网络组成,三个网络都比较轻量, 易于训练.

算法流程

1. 对传入P网络的图片resize:由于一张图片内人脸的大小和人脸的数量不一定,用固定大小的选择框和移动步长不能准确地框出一张图片所有人脸(有可能框太大框了不止一个人脸,也有可能框太小框不住一个人脸)。所以图片传入P网络时,保持建议框大小(PNet要求的数据集大小,12×12)不变,每次按照一定比例不断对图片进行resize再传入P网络,直到图片最短边小于12,通常称这种方法为图片金字塔。
2. 将结果传入下一个网络:每次resize的图片传入P网络后,P网络都会生成相应的候选框,图片金字塔环节结束后,将选择置信度大于某一个值(这个值一般PNet > RNet > ONet)的候选框进行非极大值抑制,再将抑制后的结果对应的图片区域resize成24×24后传入RNet(resize是因为RNet输入图片大小是固定的)。为了使结果更好,可以将候选框对应的区域按最小边裁剪为正方形后再进行resize。同理,RNet得到的候选框进行置信度筛选和非极大值抑制后,按最小边裁剪为正方形,resize为48×48传入ONet,ONet得到的结果即为检测结果。
流程框架

下面介绍非极大值抑制(NMS),首先介绍iou
iou:iou是交并比,用来表示两个框(矩形)的重合程度,计算方法为:
iou = 两个矩形交集的面积/两个矩形并集的面积
在某些情况下,还有一种iou计算为:
iou = 两个矩形交集的面积/最小矩形面积
iou的值越大,表示矩形相交部分越多。
在这里插入图片描述

非极大值抑制:先把所有的候选框按置信度大小排列,将置信度最大的候选框与其余候选框依次计算iou,当iou大于某一阈值时,将这个候选框删除。然后继续在剩余未删除的框中重复上述操作。

网络介绍

第一层网络——PNet:PNet是一个全卷积神经网络,因此图片传入时不需要固定大小。
第二和第三层网络——RNet、ONet:RNet和ONet后接全连接,需要固定大小,其中R网络固定12×12大小,O网络固定24×24大小。
网络结构如下:
网络结构

训练方法

损失函数: 对于置信度, 是一个0-1之间的二分类问题, 使用的是二分类交叉熵损失函数(BCELoss)
对于预测框和特征点, 采用的是均方损失函数(MSELoss)
注意: 对应置信度为0的负样本不进行框偏移量和特征点损失计算,若有部分样本(置信度可以设置为2),不进行置信度的损失计算。在选择时可以使用nonezore函数选择符合条件的框。

另外, MTCNN的每个网络侧重点不同,P网络侧重于找到可能是人脸的区域(宁滥勿缺),O网络侧重于精确筛选出人脸,因此在损失计算时,P网络置信度的权重要小于框和特征点的权重,R网络置信度权重相对更高一些,O网络置信度权重最高。
(本人第一次写博客, 不太熟练, 欢迎指正)

猜你喜欢

转载自blog.csdn.net/qq_21550483/article/details/108427564