爆资讯爆资讯爆资讯

人脸检测——MTCNN网络深度解析

人脸检测——MTCNN网络深度解析

多任务卷积神经网络(MTCNN)实现人脸检测与对齐是在一个网络里实现了人脸检测与五点标定的模型,主要是通过CNN模型级联实现了多任务学习网络。整个模型分为三个阶段,第一阶段通过一个浅层的CNN网络快速产生一系列的候选窗口;第二阶段通过一个能力更强的CNN网络过滤掉绝大部分非人脸候选窗口;第三阶段通过一个能力更加强的网络找到人脸上面的五个标记点;完整的MTCNN模型级联如下:

该模型的特征跟HAAR级联检测在某些程度上有一定的相通之处,都是采用了级联方式,都是在初期就拒绝了绝大多数的图像区域,有效的降低了后期CNN网络的计算量与计算时间。MTCNN模型主要贡献在于:

1.提供一种基于CNN方式的级联检测方法,基于轻量级的CNN模型就实现了人 脸检测与点位标定,而且性能实时。

2.实现了对难样本挖掘在线训练提升性能

3.一次可以完成多个任务。

人脸检测——MTCNN网络深度解析

阶段方法详解

第一阶段

网络是全卷积神经网络是一个推荐网络简称 P-Net, 主要功能是获得脸部区域的窗口与边界Box回归,获得的脸部区域窗口会通过BB回归的结果进行校正,然后使用非最大压制(NMS)合并重叠窗口。

第二阶段

网络模型称为优化网络R-Net,大量过滤非人脸区域候选窗口,然后继续校正BB回归的结果,使用NMS进行合并。

第三阶段

网络模型称为O-Net,输入第二阶段数据进行更进一步的提取,最终输出人脸标定的5个点位置。

网络架构与训练

对CNN网络架构,论文作者发现影响网络性能的因素主要原因有两个:

1.样本的多样性缺乏会影响网络的鉴别能力

2.相比其它的多类别的分类与检测任务来说,

人脸检测是一个二分类,每一层不需要太多filters,

也就是说每层网络的feature maps个数不需要太多

根据上述两个因素,作者设计网络每层的filter个数有限,但是它增加了整个网络的深度,这样做的好处是可以显著减少计算量,提升整个网络性能,同时全部改用3x3的filter更进一步降低计算量,在卷积层与全连接层使用PReLU作为非线性激活函数(输出层除外)整个网络架构如下:

训练这个网络需要如下三任务得到收敛

1.人脸二元分类

2.BB回归(bounding box regression)

3.标记定位(Landmark localization)

训练时候对于人脸采用交叉熵损失:

BB回归损失:

对每个候选窗口,计算它与标注框之间的offset,目标是进行位置回归,计算其平方差损失如下

脸部landmark位置损失:

总计有五个点位坐标分别为左眼、右眼、鼻子、左嘴角、右嘴角

人脸检测——MTCNN网络深度解析

因为每个CNN网络完成不同的训练任务,所以在网络学习/训练阶段需要不同类型的训练数据。所以在计算损失的时候需要区别对待,对待背景区域,在R-Net与O-Net中的训练损失为0,因为它没有包含人脸区域,通过参数beta=0来表示这种类型。总的训练损失可以表示如下:

在P-Net中对人脸进行二元分类时候就可以在线进行难样本挖掘,在网络前向传播时候对每个样本计算得到的损失进行排序(从高到低)然后选择70%进行反向传播,原因在于好的样本对网络的性能提升有限,只有那些难样本才能更加有效训练,进行反向传播之后才会更好的提升整个网络的人脸检测准确率。作者的对比实验数据表明这样做可以有效提升准确率。在训练阶段数据被分为四种类型:

负样本:并交比小于0.3

正样本:并交比大于0.65

部分脸:并交比在0.4~0.65之间

Landmark脸:能够找到五个landmark位置的

其中在负样本与部分脸之间并没有明显的差异鸿沟,选择0.3与0.4作为区间。

正负样本被用来实现人脸分类任务训练

正样本与部分脸样本训练BB回归

Landmark脸用来训练人脸五个点位置定位

整个训练数的比例如下:

负样本:正样本:部分脸:landmark脸=3:1:1:2

最后

如果不喜欢看纯文字内容的话可以到我的西瓜视频看系列教程

MTCNN技术详解直达连接

人脸检测——MTCNN网络深度解析

未经允许不得转载:爆资讯 » 人脸检测——MTCNN网络深度解析

相关推荐