发布时间:2023-11-08 09:30
MTCNN是目前应用十分广泛的基于级联的特定目标检测器,也是少数能在传统硬件上落地的检测器,当然其优势不光光仅仅用于人脸检测这个任务。在人脸这个任务上,在少数人脸<5个人脸的情况下。其效能是第一梯队的水准。而且有着极大的优化空间(加上一些trick可以轻易的优化到极快的速度移动端 minSize60 60fps 1080p mt.)。而且其Alignment的准确率和精度也相对相对比较高,在工业界的人脸识别工作中,往往都采用MTCNN的点位来进行对齐。
人脸跟踪是一项很重要的任务,cascade based检测模型,在人脸基数增大的同时,往往速度上容易爆炸,在工程应用中往往需要极致的速度。在有些效率比较低的ARM板子上,一些correlation filter tracker都不能取得很好的时效性。
MTCNN的多任务特性为我们权衡这个问题提供的特别巧妙的方法。
MTCNN (Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks)是Kaipeng Zhang在2016年提出的Face Detector,也是基于Cascade CNN来改进的Face Detector。文章认为人脸检测任务中的 face bounding box regression 和 landmark 任务存在潜在关系,可以提高人脸检测效果。由于其多任务和全卷积的特性其速度要比Cascade CNN要快不少。由于MTCNN训练的Pipeline比较繁琐,需要一定的经验和调试,后继有人又提出了把Cascade pipeline联合起来训练的(Facecraft 和 xxx 两篇文章 都来自于商汤)。后来还有加Anchor 的做法 如 Anchor CNN 本文不再赘述。本文主要是从工程角度在FDDB下降不是特别多的情况下来改进和为了人脸识别而检测人脸的目的来加速MTCNN。
MTCNN基本原理是使用全卷积的P-Net在多尺度的待检图像上生成候选框,接着通过R-Net和O-Net来过滤。
我们可以看到其网络结构和Cascade CNN基本是一致的。由于文章的发表时间是2016年。一些较为modern的网络设计trick在当时也没有被提出。所以我们改进的空间还是有的。我们做了一些实验,也发现了MTCNN速度的瓶颈在哪。
主要是以下几点