1

人脸检测技术演进史

 11 months ago
source link: https://www.6aiq.com/article/1685529665408
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

导读 本次分享题目为人脸检测技术演进史,包括近期的论文分享、人脸检测主要的研究方向及未来的发展方向。主要分为以下四大部分:

全文目录:

  1. 人脸检测任务介绍

  2. ModelScope应用

  3. 未来工作展望


分享嘉宾|刘洋 阿里巴巴 算法专家

编辑整理|付琰 百度

出品社区|DataFun


01/人脸检测任务介绍

1.人脸检测数据集

173e20e4ba9e4e1c94335592e8b5672b.png-imageStyle

人脸检测,顾名思义,即检测人脸在图片中的位置,是整个人脸系统的基石,后续做人脸识别、人脸属性分析都依赖人脸检测提供的检测框。

这个领域的代表性数据集是Wider Face,是16年香港中文大学和商汤联合发布的一个数据集。主要贡献在于明确了人脸检测存在的几大挑战:

  • ²Scale,小尺度的人脸
  • ²Pose,非常规角度的人脸
  • ²Occlusion,有遮挡的人脸
  • ²Expression,表情夸张的人脸
  • ²Makeup,装扮人脸
  • ²Illumination,曝光过度的人脸

在16年之后主要围绕着这个数据集展开研究,典型的评价指标是AP score,在Iou=0.5的情况下计算AP值。

2.人脸检测研究方向

image-9fef98ebc6434c25b8552de821a7cb41.jpeg-imageStyle

(1)Feature Fusion & Context & Receptive Field

这个领域的研究集中在比较早期的17-19年。主要工作内容是,发现了上下文信息对检测的性能提升很大,对底层的特征加上context module,做特征融合。

(2)Label Assign

Label Assign就是划分正负样本的步骤,是从人脸检测到通用多目标检测中一个都非常火的方向,从17年到22年都有相关的文章。S3FD是中科院李子青团队发表的一篇文章,是这个领域的奠基性工作,提供了比较好的检测架构及准则,例如anchor如何设定,anchor assign的超参等等,后续很多工作都follow他们的超参展开研究。

Seeing Small Face是18年CMU的一篇文章,对Label Assign从scale到stride的角度,提出了Expected Max Overlapping (EMO) score,采用新的anchor设计策略,解决基于anchor的人脸检测器在小尺度人脸上性能急剧下降的问题;

HAMBox是我在20年的一篇文章,主要贡献在于发现了online信息的重要性,对未匹配的anchor具有出色的回归能力。在21年往后大家开始注意到online信息的一些用法,在我的视角这是第一篇利用online信息进行label assignment的文章。

MogFace进一步做了adaptive Online 和offline 信息相结合的方法。

(3)Auxiliary Supervision Signal

利用辅助的关键信号提升人脸检测的性能。MTCNN和RetinaFace是其中的代表性工作,用关键点的信息帮助更好地检测人脸,同时在检测模块可以输出关键点的位置,减少了整个人脸识别系统的模块数量。

Face Attention Network引入了一个attention的分支,对遮挡人脸进行预测。

PyramidBox,指出了上下文信息的重要性。利用头、肩膀的soft label,没有引入显式的监督信号,从我的实践结果看涨点甚至高于关键点类的方法。

(4)Anchor Free

不需要预设anchor的方法,从15年百度的DenseBox就开始了这方面的研究。CenterFace是非常出色的轻量化人脸检测方法,直到最近被SCRFD和YOLO-v5打败,不再是sota,但也是一个非常不错的工作。

(5)Data Augmentation

由于scale的挑战,很多通用物体检测领域的方法不适用于这个场景,例如multi-scale training、random crop等等。MogFace在这方面做了一些思考,提出一种scale-level的数据增强策略。

(6)Nas-based

基于NAS(神经网络架构搜索)的一些方法。

BFBox重新设计了检测器领域的backbone和Feature Pyramid Network的搜索空间,基于FP-NAS搜索出对人脸检测比较友好的检测架构。

ASFD是优图基于DARTS来搜索检测器架构的一个工作。

SCRFD受RegNet的启发,对人脸检测器的不同组件(主干、颈部和头部)进行全局优化。

02/论文分享

接下来对上一部分图中标红的文章进行重点介绍。

1.S3FD:Single Shot Scale-invariant Face Detector(ICCV 2017)

image-62ba411a1b634a619809679352cefa62.jpeg-imageStyle

这是一篇人脸检测的经典文章,方法目前来看比较简单,VGG结构加下采样特征层,最后做multi stage预测。主要贡献在于确定了人脸检测的标准,并且开源做的比较好。

image-bc8a478567054e6f8869d636fef8bac4.jpeg-imageStyle

第一个贡献:设定了anchor的尺寸。

人脸检测与通用物体检测不同,一般在一个像素点只匹配一个anchor,这样设置的主要原因是人脸检测中的小脸比较多,通常在较浅的p2层进行检测,如果设置多个anchor,会导致正负样本极度不均衡。

那么如何设定合理的anchor大小?这篇文章借鉴了有效感受野的概念:由于所有像素对卷积输出的贡献并不是完全相同,仅有一小部分区域对输出值能够产生有效的影响,而这一小部分区域则为有效感受野。因此anchor应该比理论感受野小,从而更好的匹配有效感受野。作者提出了传播间隔相等原则(Equal proportion interval principle),简单来说就是检测层的步长大小决定了anchor的间隔,在所有检测层上,anchor的尺寸均为步长的4倍。

第二个贡献:尺度补偿的anchor 匹配策略。

在训练过程中,通常通过IoU 对anchor和人脸bounding box进行匹配。为了解决一些尺寸的人脸找不到合适的anchor尺寸与之匹配的问题,首先把IoU的阈值从0.5降低到0.35,对于仍然无法匹配的人脸采取如下方法:首先,挑选出所有阈值大于0.1 的人脸;其次,对这些人脸进行逆序排序,选择top N 个anchor作为该人脸的匹配anchor。

这个方法并没有考虑补偿anchor的质量,还有一些方法例如增加anchor的尺寸也能达到补偿的效果,因此这一步还有一定的优化空间。

2. PyramidBox: A Context-assisted Single Shot Face Detector (ECCV 18)

image-f2a4283976f5445cab34cbbc5ee594ae.jpeg-imageStyle

第一个贡献:发现了上下文特征的作用。PyramidBox在底层特征后接了一个类似inception结构的Context-sensitive Prediction Module,用于提取context信息。下面分享一些我的个人思考。在人脸检测中,在context上做收益远比backbone上要大。在通用检测领域,从resnet50到resnet100,性能可能就有4-5个点的提升,因此在网络结构上加head module的做法很少。但在人脸检测领域,在head上加深,对性能提升比较明显,带来这一区别的本质原因是数据集分布不同。这篇文章对于探索head和backbone的作用、整个网络算力分配有一定启发。

image-35f318dfd98e4918b1b7dc7952e16283.jpeg-imageStyle

第二个贡献是PyramidAnchors。除了人脸之外,还引入了人头、肩膀的额外标注。人头就是把ground truth扩大一倍,肩膀是在此基础上再扩大一倍。实际实验中,加入人头对性能有明显提升。

第三个贡献是DAS(Data anchor sampling),把人脸往更小的方向resize。减少前景和背景的比例,帮助检测器收敛。后续在MogFace中会介绍这个工作的缺点和改进。

  • 本文地址:人脸检测技术演进史
  • 本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出

3.RetinaFace: Single-stage Dense Face Localisation in the Wild (CVPR 20)

173e20e4ba9e4e1c94335592e8b5672b.png-imageStyle

RetinaFace的网络结构非常直白,就是RetinaNet加上Context Module,最后是一个multi-task loss,包含bounding box分类loss和关键点检测loss。这篇工作开源做得非常好,可以轻易部署在各种平台上。

这篇工作的第一个贡献是,multi-task loss。把人脸检测和关键点检测两个任务联合起来,在实际业务应用中不需要再额外部署一个关键点模型。

第二个贡献是Context Module,引入了可变形卷积,提升模型的上下文推理能力以捕获微小人脸。

4.HAMBox: Delving into High-quality Anchors Mining for Outlier Faces Detection (CVPR 20)

接下来介绍HAMBox,是我20年的一个工作。

image-54030748b8434997b0b9019c94d1b0d7.jpeg-imageStyle

我们发现在推理阶段,超过80%正确预测的检测框是由负样本anchor回归生成的。针对这个现象,我们进行了很多定量和定性的分析,最终得出的结论是负样本anchor有很好的回归能力,其中的主要原因还是正负样本不平衡。在检测任务中,正负样本比例可能达到1:3000,所有检测框都由正样本回归得到是不现实的。

在传统方法中,对于异常人脸(匹配不到足够多Anchor的人脸),会匹配一个IoU较低的anchor,回归之后的IoU也比较低。而在HAMBox中,我们在online阶段会重新分配一些负样本anchor,最终匹配的anchor和ground truth的IoU非常高。

image-3d10618a4793495ab3a48434a7d42c0e.jpeg-imageStyle

(a)表明可以通过增加anchor的尺度来增加人脸匹配的anchor的数量。我们统计了0.01-2之间所有的anchor尺度。在anchor尺度是0.5的时候,每个人脸能匹配到2.41个anchor,并且95%的人脸都可以匹配到anchor。

(b)表明增加anchor 尺度,会导致无法匹配的人脸数量增加。

最终这个超参选择的是0.68,只有7%的outer face,每个人脸能匹配到的anchor数量也比较多。在这个条件下后续对outer face进行了一系列的实验分析。

173e20e4ba9e4e1c94335592e8b5672b.png-imageStyle

右图说明了negative anchor有很好的回归能力。

image-2dec6cbf23be44cda9551c43624c972d.jpeg-imageStyle

下面介绍HAMBox使用的匹配策略。

(1)第一步是标准的匹配策略,将每张脸匹配到那些与它的IoU大于某个阈值的anchor。

(2)前向过程回归得到的框记为B。对于没有匹配到K个anchor 的异常人脸,把ground truth与B中所有的框计算IoU,然后逆序排序。选择排序靠前的anchor作为补充样本,加入训练中。直到补充到K个为止。

5.MogFace: Towards a Deeper Appreciation on Face Detection (CVPR 22)

image-8ba8cbe5941a48c89ceadb03fec5b77b.jpeg-imageStyle

接下来介绍我们2022年的一篇工作。主要思考了几个问题:

(1)如何解决极端尺度变化的人脸检测问题。

(2)如何解决误检问题。

(3)重新思考Label assign中online information的使用。

Figure1说明了人脸检测和通用物体检测的差异。黄色线是通用物体检测的coco数据集,蓝色线是人脸检测数据集。55%的人脸尺度在20以下,但coco中尺度小于20的只有18%。所以在人脸检测中,核心是要解决小脸的问题。

目前比较典型的通用物体检测方案,包括Multi-scale training和Data-anchor-sampling,在人脸检测上并不完全适用。我们发现:

(1)并不是每一个stage上匹配到的人脸越多,检测器在该stage上的性能越好。这充分说明需要控制不同stage上匹配的人脸比例。

(2)直接学习带有大量前景的图像,对网络性能影响很大,需要合理控制前背景的分布。

image-ddb1c527ecb34875afb46f8428c2f8ba.jpeg-imageStyle

基于上面两个发现,我们提出了设计准则,最大化stage-level表征:基于先验信息确定不同stage匹配的ground-truth的分布,来最大化 stage-level的检测能力。

Table2表明,在各个stage上,并不是匹配的越多越好。Table 4表明MST涨点比较少,但DAS提升明显,这是因为DAS把前景的数量减少了,说明了前景的重要性。

这是第一篇从 pyramid layer的学习能力/表征能力来控制gt分布的文章。缺点是需要根据数据集,预先统计每个stage的比例。

173e20e4ba9e4e1c94335592e8b5672b.png-imageStyle

在实际应用中,通常对误检十分敏感。目前解决误检的主要做法是收集大量误检图片fine-tune或者从头训练检测器。但这种数据驱动的策略并不是一个完全可靠的解决方案。我们对误检数据分析并发现了一个现象:对于一个FP,把它对应区域crop出来,并施加一些数据增强策略,此时再经过检测器的前向传播,超过95%的误检都消失了。说明上下文信息在解决FP时是比较有效的。进一步,我们设计了一个级联的上下文encoding模块。该模块大致分为两个步骤:

(1)找到网络前向过程中FP对应的context information,也就是它周围N*N的一个区域。

(2)把context information加入到FPN的feature map上,来做后续的分类、回归。

image-7c98ed139bdd47ebb918810868cd6919.jpeg-imageStyle

在HAMBox中,对online信息的利用还存在一些问题。

(1)Online information不能提供高质量的匹配信息。因为在网络训练过程中,前期网络还没收敛,提供的信息很多是错的。

(2)不同任务迁移的时候,T和K超参数的选取也需要做调优,否则对效果的影响很大。因此需要做自适应的超参选取。

在这里我们首先利用offline的IoU和中心点得到大量的候选anchor列表,然后利用online的classification信息对所有anchor进行排序,从而更好地利用online信息。超参选取方面,把T设置为当前层所有ground-truth匹配到的anchor数量最大值,解决了自适应的超参选取问题。

6.Sample and Computation Redistribution for Efficient Face Detection (ICLR 22)

image-df357330507f48f9885c7fe0b3a6761e.jpeg-imageStyle

利用regnet的思想,确定了backbone, head, neck 之间的算力分配。

(1)基于数据集的统计数据,在最需要的步骤上分配更多训练样本。

(2)基于神经网络架构搜索方法,在模型的backbone, head, neck之间重新分配计算,灵感来源于RegNet。

(3)性能达到sota。

03/ModelScope应用

173e20e4ba9e4e1c94335592e8b5672b.png-imageStyle
image-ef760c4155de4b798888bb07468fecfe.jpeg-imageStyle

ModelScope平台提供了MogFace、RetinaFace等人脸检测、人脸识别、活体检测的模型,支持一键打开notebook,并且提供了可运行的GPU、CPU资源以及demo图片,欢迎大家前来试用。

04/未来工作展望

image-7e5ca8695a4f4b299c0bde63cf52cd35.jpeg-imageStyle

1.鲁棒的Label Assign策略。人脸检测任务对scale比较敏感,例如WiderFace数据集包括很多小脸,但实际数据集中可能大脸比较多,现有的label assign方法在实际数据集上并不合理。网络不同模块的算力分配,在coco数据集上增强底层特征取得了不错的效果,但不代表在所有数据集上都适合这样分配。因此scale-level data augmentation、computation allocation、label assign这三者需要一个新的设计准则,才能得到一个鲁棒的label assign策略。

2.在人脸检测的实际应用中,误检是非常重要的指标。

学术界也需要一个新的评价指标,来衡量检测器去除误检的能力。

3.轻量级、快速的人脸检测器。

4.少样本、领域迁移、无监督、半监督等基础视觉任务与人脸检测结合。

5.人脸检测和人脸识别的统一框架。这两个任务有着天然的关联性,人脸识别特征可以帮助检测更好地定位,人脸检测的上下文信息对人脸识别任务也是很有帮助的。

今天的分享就到这里,谢谢大家。

173e20e4ba9e4e1c94335592e8b5672b.png-imageStyle

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK