Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

人脸检测技术发展及百度“框”实践

近年来,人脸识别逐渐成为了视觉领域研究里最热门的课题,人脸相关应用在安防监控、人证比对、人脸解锁、人机交互、人脸特效等领域都有重要的应用价值。人脸检测是很多人脸应用的基础任务,比如人脸关键点,人脸识别,人脸老化等。由于存在姿态变化、遮挡、光照变化、尺度变化等一系列问题,人脸检测的实际落地应用仍存在较大的挑战。衍生于手工设计特征的人脸检测器,现有的检测器通过深度卷积神经网络学到的鲁棒特征大大提升了效果。最近的性能领先的人脸检测器往往受通用目标检测器的启发,通常是基于锚点的深度卷积神经网络。

据我们所知,为了实现高效、准确的人脸检测器,主流的SOTA人脸检测框架往往从以下几个思路去优化:特征融合、上下文信息、锚点设计、额外监督、数据扩充、网络结构、感知野设计、单阶段Refinement、头部网络设计、anchor free等。过去几年,百度视觉技术部在人脸检测问题上也产出了一系列的研究,本文我们通过人脸检测器优化的多个角度来剖析下这些研究。

该图为人脸检测器设计的几个优化思路,包括特征融合、上下文信息、锚点设计、额外监督、数据扩充、网络结构等等。黄色部分为百度视觉技术部发表在各会议和期刊的相关研究。Anchor Free&端到端角度:第一个anchor free且可以进行端到端训练的物体检测器DenseBox (Arxiv 15)

上下文信息角度:引入基于anchor的上下文辅助方法,用于半监督学习人脸上下文特征的PyramidBox (ECCV 18), 同时更好的利用尺度感知的Data-Anchor-Sampling以改变训练样本的分布; 

特征融合角度:基于注意力指引的语义增强特征融合框架来学习各个尺度的具有丰富语义特征金字塔的DAFBox (Progressively Refined Face Detection Through Semantics-Enriched Representation Learning. TIFS 19)

锚点设计角度:使得异常人脸被补偿高质量锚点的在线高质量锚点挖掘框架HAMBox (HAMBox: Delving into High-quality Anchors Mining for Outlier Faces Detection. CVPR 20)

网络结构角度:第一个基于神经网络架构搜索的方法,同时搜索一个适合人脸检测的特征提取器(Backbone)和特征金字塔(FPN)的BFBox (BFBox: Searching Face-appropriate Backbone and Feature Pyramid Network for Robust Face Detector. CVPR 20)

其中,HAMBox方案帮助百度视觉技术部在2019年WIDER Face and Pedestrian Challenge上以mAP值57.13%的成绩夺得人脸检测的冠军,超过了第二名0.47%,远超去年冠军55.82%的成绩。同时将WIDERFACE 验证集hard子集的AP刷新到恐怖的93.3%。PyramidBox和PyramidBox++方案两次刷新WIDER Face国际榜单世界纪录。百度已在飞桨(PaddlePaddle)上开源了PyramidBox,并计划开源HAMBox,该方案将进一步推动人脸检测相关的研究,帮助更多开发者应用更前沿的人脸技术。

以上图中,红色框是PyramidBox的检测效果,可以看出PyramidBox对于姿态、模糊、遮挡、尺度等条件具有极强的鲁棒性。

开源项目地址:https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/face_detection

Anchor Free&端到端角度: DenseBox: Unifying Landmark Localization with End to End Object Detection

DenseBox这篇工作从2015年就已经发表了。现在回过头看DenseBox,他是第一个anchor free且可以进行端到端训练的物体检测器,甚至比Fast R-CNN还要早,极具前瞻性。谁能想到2019年物体检测和人脸检测领域出现的大量借鉴DenseBox思路的anchor-free的文章,诸如CornerNet,FCOS,FoveaBox,ExtremeNet,CenterFace,SFace等等。

DenseBox的主要贡献如下:

  1. DenseBox设计了一个简单的全卷积网络,来高效、准确检测遮挡的多尺度物体,并且实现了端到端的训练和测试。而R-CNN系列算法是从Faster R-CNN中使用了RPN代替了Selective Search才开始实现端到端训练的,而和语义分割的结合更是等到了2017年的Mask R-CNN才开始。
  2. DenseBox通过多任务学习的方式引入了关键点定位,并且进一步提升了目标检测的准确率。并且在人脸检测数据集MALF和车辆检测数据集KITTI上验证了其优秀的性能。
  3. 提出多尺度特征,而R-CNN系列直到FPN才开始使用多尺度融合的特征。

如图所示为结合检测和关键点定位的框架图。

上下文信息角度: PyramidBox: A Context-assisted Single Shot Face Detector (ECCV 18)

    在不受控制的环境中检测小的、模糊的及部分遮挡的人脸仍旧是一个有待解决的难题。针对棘手的人脸检测问题,本文提出了一种语境辅助的单次人脸检测新方法——PyramidBox。考虑到语境的重要性,我们从以下三个方面改进语境信息的利用。首先,我们设计了一种全新的语境 anchor,通过半监督的方法来监督高层级语境特征学习,我们称之为 PyramidAnchors。其次,我们提出了一种低层次级特征金字塔网络,将充分的高层级语境语义特征和低层级面部特征结合在一起,使 PyramidBox 能够一次性预测所有尺寸的人脸。再次,我们引入了语境敏感结构,扩大预测网络的容量,以提高最终的输出准确率。此外,我们还采用「数据-anchor-采样」的方法对不同尺寸的训练样本进行扩充,增加了较小人脸训练数据的多样性。PyramidBox 充分利用了语境的价值,在两个常用人脸检测基准——FDDB 和 WIDER FACE 上表现非凡,取得当前最优水平。2018年3月该方法在世界最权威的人脸检测公开评测集 WIDER FACE 的「Easy」、「Medium」和「Hard」三项评测子集中均荣膺榜首,刷新业内最好成绩。

如下图所示,PyramidBox在六个尺度的特征图上进行不同层级的预测。该工作主要包括以下模块:低尺度特征金字塔LFPN、语境辅助监督模块Pyramid Anchors、上下文敏感结构CPM、尺度感知的Data-anchor-sampling。

LFPN: LFPN全称Low-level Feature Pyramid Networks, 在检测任务中,LFPN可以充分结合高层次的包含更多上下文的特征和低层次的包含更多纹理的特征。高层级特征被用于检测尺寸较大的人脸,而低层级特征被用于检测尺寸较小的人脸。为了将高层级特征整合到高分辨率的低层级特征上,我们从中间层开始做自上而下的融合,构建Low-level FPN。

Pyramid Anchors: 该算法使用半监督解决方案来生成与人脸检测相关的具有语义的近似标签,提出基于anchor的语境辅助方法,它引入有监督的信息来学习较小的、模糊的和部分遮挡的人脸的语境特征。使用者可以根据标注的人脸标签,按照一定的比例扩充,得到头部的标签(上下左右各扩充1/2)和人体的标签(可自定义扩充比例)。如下图所示,可以看出由于缺少背景信息,小人脸很难被定位和分类,然而当给人脸区域充足的上下文信息的条件下,我们能够清晰准确的定位人脸位置。

CPM: CPM全称Context-sensitive Predict Module, 本方法设计了一种上下文敏感结构(CPM)来提高预测网络的表达能力。该模型由混合网络结构和最大输入输出层组成,从融合特征中学习准确的定位和分类;

Data-anchor-sampling: 设计了一种新的采样方法,称作Data-anchor-sampling,该方法可以增加训练样本在不同尺度上的多样性。该方法改变训练样本的分布,重点关注较小的人脸。

Pyramidbox模型可以在以下示例图片上展示鲁棒的检测性能,该图有一千张人脸,该模型检测出其中的880张人脸。

不同模块在baseline上的提升对比实验:

特征融合角度:DAFBox: Progressively Refined Face Detection Through Semantics-Enriched Representation Learning (TIFS 19)

特征金字塔旨在学习到多尺度的特征表达,来检测多尺度的人脸。然而,在不同的尺度下,它们往往缺乏足够的上下文信息,特别是当数据集有很多小人脸的时候。本文中,我们提出了基于注意力指引的语义增强特征融合框架来学习各个尺度的具有丰富语义特征金字塔的DAFBox。高维的抽象特征被直接通过skip connections的方式引入到低维特征,这样可以保持尽可能多的语义信息。除此之外,在特征融合过程中,我们使用注意力机制作为“门”来强化有用特征,弱化无用特征。受人类对于小脸的视觉感知启发,我们设计了一个深度渐进精炼损失DPRL有效的使得特征学习变得简单。根据以上原则,我们设计和调研了多种不同的特征金字塔框架。最终,我们提出了两种典型的可以端到端训练的结构:集中注意力特征CAF和分布式注意力特征DAF。

从下图可以明显看出,对于小的人脸来说,包含过大上下文信息的感知野并不是十分有利的。

往往是包括头部或者肩膀的区域能够更容易被人识别出来。

【锚点设计角度: HAMBox: Delving into High-quality Anchors Mining for Outlier Faces Detection. CVPR 20】

近期的人脸检测器利用锚点来构建一个结合分类和坐标框回归的多任务学习问题,有效的锚点设计和锚点匹配策略使得人脸检测器能够在大姿态和尺度变化下精准的定位人脸。然而,我们发现在推理阶段,超过80%可以正确预测的检测框是由负样本锚点(锚点和对应人脸的交并比IoU小于一定阈值)回归生成。这表明这些负样本锚点展示出了极好的回归能力,但是现有的方法都忽略了可以根据负样本锚点进行学习。在本文中,我们提出了一种在线高质量锚点挖掘策略HAMBox, 它可以使得异常人脸(outer faces)被补偿高质量的锚点。我们提出的HAMBox方法可以成为一种基于锚点的单步骤人脸检测器的通用优化方案。

本文提出了在线高质量锚点挖掘策略HAMBox来给异常人脸补偿最合适的锚点。我们首先基于RetinaNet建立了我们的高召回的人脸检测器。接下来,我们细节化的列举了在线高质量锚点补偿策略。最后,我们针对补偿锚点构建了基于回归敏感的focal loss。

  • 基于锚点的高召回人脸检测器

已有的人脸检测器利用锚点来构建一个结合分类和坐标框回归的多任务学习问题。我们以RetinaNet作为基线。特征提取器是ResNet-50。遵循S3FD[3]的设置,我们采用了conv2的特征来提升检测器效果。

受启发于图一的数理统计,我们调整锚点尺寸(0.68×{16, 32, 64, 128, 256, 512})来匹配到更多人脸。

  • 在线高质量锚点补偿策略

在完成锚点尺寸和比例的设计后,我们需要进一步给锚点分配它们最近邻的真值或者背景。如下图所示,已有的锚点匹配策略由两步组成。人脸首先匹配与之IoU大于一定阈值的锚点,然后不能够匹配上任何锚点的人脸将被补偿一个与之具有最大IoU的锚点。如图c所示,第二步中被补偿的锚点可能会降低网络回归和分类的效果,因为这些锚点本质上与人脸有更低的IoU。

我们惊讶的发现随着训练迭代次数的增加,一些负样本锚点具有了正确预测的能力,然而这些锚点在回归分支被忽略掉了,甚至在分类分支被赋予了背景类的标签。 受这个发现的启发,我们提出了在线高质量锚点补偿策略来解决已有的未对准监督信号的问题。

首先,每个人脸匹配与之IoU大于一定阈值的锚点。但是对于那些剩下的异常人脸来说,我们不补偿任何的锚点。其次,在训练过程中前向传播的结尾,每个锚点通过它对应的回归坐标计算回归检测框。我们定义B_reg为这个回归检测框,F_outer为异常人脸。最后,对于F_outer的每个人脸,我们计算它与B_reg的IoU,并且对这个人脸补偿N个额外的负样本锚点。我们定义所有的IoUs为IoU_set,这些N个补偿的负样本锚点根据以下两个规则选出。(a)其对应的回归框和目标人脸之间的IoUs应该大于一个阈值T(T表示在线的正样本锚点的阈值)。(b)根据规则1计算的IoUs应该在IoU_set集合里面的top-K高的IoU里面。K是一个超参数,表示F_outer匹配到的锚点的最大数目。在经过以上两条规则过滤后,如果N大于K-M, 则我们在这N个负样本锚点中选择出top-(K-M)个高的IoU的锚点来补偿这个脸,并且设置N=K-M。M表示第一步中人脸已经匹配上的锚点的数量。我们已经通过改变T,K来做了很多消融实验。细节参考算法1。

  • 基于回归敏感的focal loss

在分析完以上两章节后,我们已经挖掘出了高质量的锚点,接下来的问题是如何有效的利用这些锚点。我们提出了基于回归敏感的focal loss来给予新补偿的高质量锚点一个更合理的权重。

因此我们基于focal loss做出了两个改进。(a)考虑到定位和分类之间的弱连接性,新补偿的锚点被给予了基于IoU的动态权重。(b)我们定义同时满足以下三个条件的锚点为可忽略锚点(在训练中不被优化):1. 属于高质量的锚点。2. 在锚点匹配策略的第一步中,被赋予了背景类的标签。3. 不被包括于新补偿的锚点中。

我们定义损失函数为:

除此之外,新补偿的锚点的监督被添加到定位损失函数中,特定的公式如下:

总之,我们的主要贡献可以总结为以下几点:

  • 我们第一个发现了如此令人鼓舞的现象:一些负样本锚点有足够强的回归能力,并且已有的检测框回归分支忽略了这些负样本锚点的学习。这些现象是限制已有检测器效果的主要瓶颈之一,我们认为这个观察对检测方向具有极大的价值。
  • 基于该发现,我们提出了在线高质量锚点挖掘策略HAMBox来采样训练过程中的高质量锚点。受益于HAMBox的方法,我们能够在训练过程中给异常人脸提供足够多的有效的锚点。
  • 由于补偿了高质量锚点,我们进一步提出了基于动态回归的focal loss,它帮助人脸检测器以更灵活的方式训练。
  • 我们的HAMBox需要的额外计算量几乎可以忽略,并且它能够被任意的插入到人脸检测器中来提升效果。它在训练阶段,仅仅需要很少一部分额外性能成本,在推理阶段不需要额外的性能成本。
  • 我们的方法在验证集和测试集上取得了超过业内最佳模型2.9%和2.3%个AP的效果。更有甚者,该方法帮助我们在2019年WIDER Face and Pedestrian Challenge上以mAP 57.13%获得冠军。

【神经网络搜索角度: BFBox: Searching Face-appropriate Backbone and Feature Pyramid Network for Robust Face Detector. CVPR 20

本文提出的方法BFBox是基于神经网络架构搜索(NAS)的方法同时搜索适合人脸检测的特征提取器和特征金字塔。动机是我们发现了一个有趣的现象:针对图像分类任务设计的流行的特征提取器已经在通用目标检测任务上验证了其重要的兼容性,然而在人脸检测任务上却没有取得预期的效果。同时不同的特征提取器与特征金字塔的结合也不是完全正相关的。首先,本文对于比较好的特征提取器进行分析,提出了适合人脸的搜索空间;其次,提出了图1的特征金字塔注意力模块(FPN-attention Module)去加强特征提取器和特征金字塔之间的联系;最后, 采取SNAS的方法同时搜出适和人脸的特征提取器和特征金字塔结构。多个数据集上(WIDER FACE, FDDB, AFW和PASCAL Face)的实验表明了我们提出的方法的优越性。

如下图所示为检测网络的结构。网络是基于RetinaNet的结构加上我们提出的特征金字塔注意力模块(FPN-attention Module),训练超网络时采用的是随机采样的方法。

【人脸检测的讨论】

通过以上分析,我们讲解了人脸检测优化低维度的思路,包括特征融合、上下文信息、锚点设计、额外监督、数据扩充、神经网络搜索、感知野设计、单阶段Refinement、头部网络设计、anchor free等。

也许有人会问,在算法设计上,人脸检测和通用检测又有什么具体的区别呢?基于我们讲解的几篇文章,我们可以看出来:1.人脸具有自己的特定结构化特征,PyramidBox提出用半监督解决方案来生成与人脸检测相关的具有语义的近似标签,其上下文具有包含头部、肩膀等强语义的信息。而通用检测却没有这么强的上下文语义相关性。2. 人脸检测框和人脸关键点信息足够匹配,因此DenseBox通过多任务学习的方式引入了关键点定位,并且进一步提升了目标检测的准确率。而通用检测里面往往无法引入关键点信息。3.针对图像分类任务设计的流行的特征提取器已经在通用目标检测任务上验证了其重要的兼容性,然而在人脸检测任务上却没有取得预期的效果。BFBox重点分析了这种不兼容性底层的原因。

在人脸轻量级检测未来的研究趋势上,还有哪些点值得我们关注呢?如何在端边云上设计更加轻量化的检测模型?在这方面,我们可以关注下AutoML、 int8量化、蒸馏、裁剪等工作的进展。这里也欢迎大家关注我们组参与开发的飞桨PaddleSlim平台,PaddleSlim 实现了目前主流的网络量化、剪枝、蒸馏、AutoML四种压缩策略,并可快速配置多种压缩策略组合使用。我们人脸检测方向基于PaddleSlim平台也有对应的业务收益,同时我们也在PaddleDetection开源了轻量级人脸检测模型FaceBoxes和BlazeFace,其搜索得到的模型结构,相比于原版模型,在FDDB评测集上的离散ROC曲线AP值(DistROC AP)几乎不变的情况下,体积仅有240KB,压缩了3.3倍。在高通骁龙855 ARMv8处理器上单线程测试加速1.22倍。

【传送门】

飞桨(PaddlePaddle)官网: https://www.paddlepaddle.org.cn/

PaddleSlim平台:https://github.com/PaddlePaddle/PaddleSlim

PaddleDetection平台:https://github.com/PaddlePaddle/PaddleDetection

工程人脸检测百度
相关数据
半监督学习技术

半监督学习属于无监督学习(没有任何标记的训练数据)和监督学习(完全标记的训练数据)之间。许多机器学习研究人员发现,将未标记数据与少量标记数据结合使用可以显着提高学习准确性。对于学习问题的标记数据的获取通常需要熟练的人类代理(例如转录音频片段)或物理实验(例如,确定蛋白质的3D结构或确定在特定位置处是否存在油)。因此与标签处理相关的成本可能使得完全标注的训练集不可行,而获取未标记的数据相对便宜。在这种情况下,半监督学习可能具有很大的实用价值。半监督学习对机器学习也是理论上的兴趣,也是人类学习的典范。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

人机交互技术

人机交互,是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。

百度智能云机构

百度是全球最大的中文搜索引擎,是一家互联网综合信息服务公司,更是全球领先的人工智能平台型公司。2000年1月1日创立于中关村,公司创始人李彦宏拥有“超链分析”技术专利,也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一。

http://www.baidu.com
目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

人脸检测技术

人脸检测(face detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、树木和身体等其他任何东西。有时候,人脸检测也负责找到面部的细微特征,如眼睛、鼻子、嘴巴等的精细位置。

推荐文章
暂无评论
暂无评论~