人脸特征点检测basic:MTCNN原理

最近看起来特征点这一块,复习了一下经典论文Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks,文中的主要思想是使用了级联网络,其实就是一种从粗到细的处理方法,同时利用人脸检测任务和人脸分类任务来辅助人脸关键点检测。以及online hard sample mining的思想来提升表现。 这个是当年的state-of-the-art。当然它这么多层所以在今天肯定是很慢的啦,不过思想可以了解一下。

主要贡献

  1. 把人脸检测和对齐一起做了,同时设计了轻量级的CNN来达到实时检测的效果。
  2. 使用了online hard sample mining
  3. 达到了当时的state-of-the-art

总体框架

如下图,分为3个阶段

首先把图片resize成不同大小,作为下面3个阶段的输入,这是为了检测不同大小的人脸。同时3个网络都有3个loss, 分类,bbox回归,特征点定位,

第一阶段,P-Net: 这个网络主要用于生成候选框(candidate window),作为第二阶段的输入。在不同size的图片上, 使用一个FCN(文中称之为P-Net)来获取candidate windows的bbox的坐标,同时使用bbox 回归来修正这些candidate, 之后使用非极大值抑制(NMS)来聚合高度重叠的candidate window。

因为这个网络是个FCN,所以无需指定输入图片大小(下图的P-Net的Input size中的12 x 12 x3只是一个示例啦,把它看成anchor box更合适)。它返回的是两个参数,一个是人脸框的坐标,一个是是否为人脸的概率。

第二阶段,R-Net: 将第一阶段生成的candidates投喂给另一个CNN,叫做refine Network(R-Net),中文字面意思就是提纯网络啦。它会进一步剔除错误的candidates,对bbox进行校正,使用NMS合并candidate

这个网络接受的是P-Net输出的bbox,这个网络的输入是固定的,因此需要对bbox进行resize,中间的过程和和R-Net类似,它返回的是两个参数,一个是人脸框的坐标,一个是是否为人脸的概率。

第三阶段,O-Net: 这个网络接受的是R-Net返回的bbox,也要resize到固定大小这一阶段返回三个参数,第一个参数是人脸框,第二个参数是是否人脸的概率,第三个参数是5个关键点坐标

在CNN的设计上,MTCNN把5*5的filter改为了3*3来减少计算量。

训练

loss分为三部分,脸的分类和bbox回归,以及人脸关键点的位置。对于这几部分,loss分别为:

1)人脸分类:

L_i^{det} = -(y_i^{det}log(p_i)+(1-y_i^{det})(1-log(p_i)))) \\

p_i是是否为face的概率, y_i^{det} 是真实label

2) Bounding box 回归

L_i^{box} = ||\hat y_i^{box} - y_i^{box}||_2^2 \\

其中y_i^{box}\epsilon \mathbb {R}^4

3)人脸关键点位置:

L_i^{landmark} = ||\hat y_i^{landmark} - y_i^{landmark}||_2^2 \\

4) 集成训练

在论文中将上面三种loss拉到一起训练了。所以对应的目标函数是:

min \sum_{i=1}^N \sum_{j\epsilon\{det,box,landmark\}} \alpha_j \beta_i^j L_i^j \\

其中N是样本数, \alpha 是任务权重。这里在P-Net, R-Net中, \alpha_{det} = 1, \alpha_{box}=0.5, \alpha_{landmark}=0.5 , 在O-Net中这个数值设定是 \alpha_{det} = 1, \alpha_{box}=0.5, \alpha_{landmark}=1 , \beta 是类似的指标。

5)Online Hard sample mining

具体的可以看这篇博客https://blog.csdn.net/weixin_35653315/article/details/78327408,简单来说就是在训练过程中只对Loss比较大的sample进行反向传播。文中的比例是70%,也就是抛弃了30%的样本。在论文中证明这个策略是十分有用的,其实这个策略在分类,人脸识别中也经常用。

还有一点需要了解的系解释标注怎么标注。对于IoU<0.3的人脸,记为negative, IoU>0.65的人脸预测记为positive, 对于只要一部分的脸,记IoU在0.4~0.65为positve。

参考文献

MTCNN--原理梳理 - 泡面小姐不吃面包的文章 - 知乎 https://zhuanlan.zhihu.com/p/49525374

tensorflow入门教程(三十五)facenet源码分析之MTCNN--人脸检测及关键点检测 - 豌豆ip代理

猜你喜欢

转载自blog.csdn.net/zhuiqiuk/article/details/88653029
今日推荐