MTCNN 算法优势

335 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情 

MTCNN 模型的训练中 IoU

在训练过程中,采用 Online Hard sample mining 的策略,即在每个样本批次中,只使用误差值前百分之七十的样本来进行反向传播计算梯度,并进行梯度下降算法来优化模型。

训练的过程中采用了四种类型的数据,分别是:

在这里插入图片描述

  • 负样本(Negatives),目标框与任何真实框的 IOU(Intersection-over-Union,即两个框的重叠率)小于 0.3。
  • 正样本(Positives),目标框与一个真实框的 IOU 大于 0.65。
  • 部分人脸样本(Part faces),目标框与一个真实框的 IOU 在 0.4 到 0.65 之间。

人脸与非人脸样本用来训练二分类任务,人脸与部分人脸用来训练人脸边框的回归任务,具有关键点标记的面部数据用来训练关键点定位任务。在网络的训练任务执行之前,对数据进行预处理来适应网络的需求是必要的。

首先,针对 P-Net 对训练数据的要求,对人脸边框回归任务的训练数据进行随机区域划分,并按照 IoU 设置的阈值来对不同样本进行划分,对面部关键点定位任务的训练数据进行随机区域划分。在训练过程中,应对三个网络进行单独的训练。

  • 首先训练 P-Net 网络,之后训练 R-Net 网络,最后训练 O-Net 网络,这三个网络的训练方式相同,都是利用针对特定网络产生的训练数据来训练网络。
  • 同时,在训练过程中加入在线困难样本挖掘的过程,即在每一批次数据训练完成后,按照损失值由大到小排序取前 70% 的样本作为困难样本,在困难样本积攒够一个批次的数据后再次放入到网络中进行训练。采用这样的策略来加强模型对于训练较为困难的数据的学习,从而提升模型的性能。
  • 三个子网络都训练好后,便可对模型进行结合从而正常工作。

MTCNN 的工作流程为,输入任意尺寸的图像,首先经过多模板多尺度的图像金字塔预处理,如图 所示,后将所有图像放缩成为 12x12 大小之后将图像送入 P-Net,该网络对于检测图像的设置为 12x12 大小,因为尺寸较小所以能够很快地完成候选区域生成的工作,但是会有很多重叠部分以及误选的部分。

然后采用非极大抑制(NMS)算法来对候选区域框进行筛选,之后根据候选区域框提取图像并作为 R-Net 的输入。R-Net 在前一个网络产生的候选区域边框上进行进一步的调整,从而更加精确地产生区域建议,并将结果送入 O-Net。O-Net 对候选区域进行进一步地调整从而得到最终的人脸检测结构,同时还会输出面部关键点的坐标,从而完成最终的检测过程。

MTCNN 算法优势

针对此目标检测算法的优势,可分为以下来说明。

  • 准确度(recall):它采用的是级联卷积神经网络,由粗到细的对目标进行检测,同时使用了关键点的信息对目标进行定位和 Online Hard sample mining 的策略,增加了准确度。在相同的数据集下,其准确度更高。对比其它一流的人脸检测算法,如下表所示。

在这里插入图片描述

  • 速度:本算法相较于其它网络,减少了卷积核的个数,更是把卷积核的大小从 5*5 变成 3*3,但是稍微加深了网络的深度来保证准确率。总体上,运算速度算是快的了。在 GPU 上可以达到 99 FPS,CPU 上也能达到 16 FPS。对比其它一些人脸检测算法,如下表所示。

在这里插入图片描述

  • 模型大小:由于其本身的结构较小,而且卷积核的大小从 5*5 变成 3*3,所以其模型大小相对与其他检测算法来说是更小的。
  • 健壮性:由于算法采用多尺度图像作为输入,在对大小不同的人脸进行检测是,也能起到很不错作用。并且经过测试,在不同的光照和小幅度的人脸倾斜的情况下,也能有不错的效果。