mtcnn模型总结

mtcnn(cascaded network)

1 数据集的准备(widerface celeba):

   负样本,正样本,部分样本,关键点样本比例=3:1:1:2,正负样本以及部分样本从widerface数据集选出,选择规则为:计算IOU的值,如果该值大于0.65则为正样本,IOU小于0.3定为负样本,IOU范围在0.4到0.65之间的设置为partive数据。关键点样本从celeba数据集中选出, 可以根据标注的边框,在满足正样本的要求下,随机裁剪出图片,然后调整关键点的坐标.

2;模型结构:

mtcnn模型总结_第1张图片
三个模型的对比:R-net相比于p-net增加了一个全连接层,目的是通过边框回归和NMS降低fp(这点不是很明白,改天问问大神再更新),O-net是在R-net的基础上增加了卷积层,提高检测的精度。p-net到R-net的输入时用到了resize,同理,R-net到O-net的输入也用到了resize.每个网络的阈值设定一次递增,原因在于经过之前的边框回归以及NMS处理,后续模型的置信度值会变大。

3.损失函数

对于不管是P-net,R-net还是O-net来说模型都有三个输出,即face classification,bounding box regression还有facial landmark localization,其中对于face classification,说到底是分类损失,所以在计算时用到了二分类问题中常见的交叉熵损失函数:mtcnn模型总结_第2张图片,其中pi表示的是输入人脸的概率,ydet指的是真实标签。bounding box regression以及facial landmark localization都属于回归问题,所以用到了回归问题中常用到的计算欧式距离求损失的方法。具体如下所示:

mtcnn模型总结_第3张图片以及mtcnn模型总结_第4张图片
在计算样本的总损失时(其中N表示的是训练样本数量),用到了如下公式(即整体优化的目标): mtcnn模型总结_第5张图片
其实说白了,就是在三个损失前面分别乘上权重,来调节每个损失对总损失的重要性,重点说一下bij指的是样本标签

4 Online Hard sample mining

  在每个mini-batch中,我们从所有样本的前向传播中将计算得到的loss排序,然后只取其中loss最高的前70%作为hard samples。然后在反向传播(BP)中只计算这些hard samples,忽略那些简单的样本。


推荐一个讲解mtcnn源码的一个博客,讲的是基于mxnet的,网址为: https://blog.csdn.net/u014380165/article/details/78906898

你可能感兴趣的:(人脸检测)