关键词:Matlab;深度学习;多任务卷积神经网络;人脸检测;
在不受约束的环境中,由于个体姿势的多样性、光照条件的变化以及潜在的遮挡问题,人脸检测和对齐任务面临诸多挑战。近期的研究表明,深度学习技术在这些任务上展现出了卓越的性能。本文提出了一种基于深度学习的级联多任务框架,旨在通过检测与对齐任务间的内在联系来提升整体性能。具体而言,本框架采用由三个阶段组成的深度卷积网络,以自底向上的方式预测人脸及其关键点的位置。此外,本文还提出了一种在线硬样本挖掘策略,以进一步提高实际应用中的性能。本方法在FDDB和WIDER FACE等具有挑战性的人脸检测基准测试以及AFLW人脸对齐基准测试中,均实现了比现有技术更高的准确性,同时保持了实时性能。
MTCNN是由中国科学院深圳研究院于2016年提出的,用于人脸检测任务的深度学习模型。该模型能够在同一框架内集成人脸检测与人脸关键点检测任务。MTCNN网络结构由三个阶段组成,即P-Net、R-Net和O-Net,形成一个级联网络。该模型采用候选区域加分类器的方法,兼顾了检测速度与精度,实现了快速高效的人脸检测,如图1所示。
图1 MTCNN效果展示说明
方法原理
MTCNN是一种用于人脸检测的深度学习算法。它由多个阶段组成,每个阶段都执行特定的任务,例如区域提议、特征提取和边界框回归。下面是一个简化的流程图,描述了使用MTCNN进行人脸检测的一般步骤:
输入图像:将待检测的图像输入到MTCNN模型中。
阶段1:快速区域提议:使用一个卷积神经网络(CNN)来快速生成人脸候选区域。这个阶段通常使用P-Net,它能够快速地从图像中提取出可能包含人脸的区域。
生成多个候选区域:P-Net输出多个候选区域,这些区域是可能包含人脸的矩形框。
阶段2:特征提取:对于每个候选区域,使用另一个CNN(通常称为R-Net)来提取特征并进一步筛选候选区域。
特征表示:R-Net输出每个候选区域的特征表示,这些特征将用于后续的边界框回归。
阶段3:边界框回归:使用第三个CNN(通常称为O-Net)来细化每个候选区域的边界框,包括位置和大小。
细化候选区域:O-Net输出细化后的边界框,这些边界框更准确地定位了人脸的位置。
阶段4:边界框细化:对细化后的边界框进行进一步的调整,以确保最终的人脸检测结果的准确性。
最终的人脸检测结果:输出最终的检测结果,包括人脸的位置和大小。
MTCNN通过这种多阶段的级联方法,能够在保持高准确率的同时,提高检测速度。每个阶段都专注于不同的任务,从而实现对人脸的精确检测。
图2 MTCNN方法流程图
笔者基于上述的方法编写了MATLB代码,图片经过P-Net处理后,会得到特征图,并通过分类和非极大值抑制(NMS)筛选掉大部分非人脸候选区域。剩余的候选区域在原图中裁剪后输入到R-Net,进一步筛选并去除错误的候选。最后,剩余的候选区域再次裁剪并输入到O-Net,此时能够输出精确的边界框和关键点坐标,如图3所示。
图3 MTCNN检测结果
MTCNN人脸检测器在速度和准确性方面表现出色。在WIDE人脸基准测试中的评估显示,与非深度学习方法相比,性能有显著提升。预测速度取决于图像大小、分辨率、金字塔尺度和硬件配置(如CPU或GPU)。在典型的CPU上,对于VGA分辨率的图像,帧速率可达到约10 fps。与MATLAB内置的人脸检测器相比,MTCNN在面部姿势的适应性上更为强大,实时检测结果如下图所示。