MTCNN人脸检测的原理
MTCNN(Multi-task convolutional neural networks)是论文Joint Face Detection and Alignment using Multi-taskCascaded Convolutional Networks中提出的一种人脸检测算法,论文首页地址:https://kpzhang93.github.io/MTCNN_face_detection_alignment/.
论文的主要思想是,使用多个CNN的级联架构整合人脸检测和人脸关键点两个任务。总体可分为三个阶段,每个阶段对应一个CNN。第一阶段,通过浅层CNN快速生成候选窗口;第二阶段,由更复杂的CNN过滤掉大量非人脸窗口来精选窗口;第三阶段,使用更强大的CNN再次从候选窗口中筛选掉部分窗口,细化窗口结果并输出5个面部关键点位置。
MTCNN人脸检测的总体流程图如下图所示。
将给定图像调整到不同的比例,作为级联框架的输入。阶段一:使用Proposal Network(p-Net)的全卷积网络来获得候选面部窗口及其边界框回归向量,然后使用边界框回归向量校准候选窗口。接下来采用非极大值抑制(NMS)去除高度重叠的候选窗口。P-Net的网络结构如下图所示。
阶段二:将P-Net输出的所有候选窗口送到另一个CNN中进行训练,称为优化网络(Refine Network,R-Net)。同样使用边界框回归优化候选窗口和NMS,进一步丢弃大量错误候选窗口。R-Net在网络最后使用了全连接层,其网络结构如图所示。
阶段三:使用O-Net(Output Network)输出最终的人脸窗口和5个面部关键点位置,作用和R-Net一样,其网络结构比R-Net多了一层卷积层,这使得网络获得了更好的表达能力。O-Net的网络结构如下图所示。