实时旋转鲁棒人脸检测算法

  在人脸识别领域,由于真实场景的复杂多变,受人体姿态和取景角度的影响,采集到的人脸图像,时常会存在平面内旋转角度不确定等问题,这为人脸检测以及基于人脸的视觉任务带来了极大的挑战。下面将为大家介绍如何利用级联矫正网络,来实现实时、旋转自适应的人脸检测。

  实时旋转不变人脸检测的算法

  在体操、街舞、家庭合影等复杂的应用场景,由于人体姿态和取景角度的变化,人脸不总是竖直的,有可能有各种各样的平面内旋转角度。旋转不变人脸检测算法目标是精确的检测这种旋转的人脸。多样的平面内旋转角度,使得人脸的表观变化非常大,为旋转不变人脸检测带来了极大的挑战性。

  有很多已有的工作尝试解决旋转不变人脸检测。最简单直接的方法就是基于数据増广的方法,在训练阶段将人脸旋转到任意角度。这样做的优点是测试阶段没有额外的时间开销;缺点是旋转人脸的表观变化非常大,需要使用一个计算量较大的网络才能保证检测的精度,这在一些对实时性要求高的应用中是不实用的。

  另外一种策略就是分治。可以训练一个竖直人脸检测器,在测试阶段,将待检测图像旋转多遍进行检测,这样也可以实现任意旋转角度人脸的检测。竖直人脸检测器的计算量是相对较小的,但是检测多次也会使得时间开销成倍增长,而且带来更多的误检测。

  还有一种方法是先将旋转的人脸转正然后再进行检测。具体而言,可以先使用一个旋转路由网络,预测候选人脸框的旋转角度,然后转正人脸,之后可以使用一个竖直人脸检测器完成检测。然而,精确的预测人脸的旋转角度本身也是一个很难的任务,旋转角度预测错误也会降低检测精度。

  目前的许多旋转不变人脸检测算法需要在精度或者速度上进行妥协。我们提出的PCN算法目标是在保持很低的计算量的前提下,实现精准的旋转人脸检测。

  在CVPR2015上提出了CascadeCNN人脸检测方法,即通过级联多个CNN逐步过滤非人脸样本。之后提出的MTCNN对CascadeCNN改进,将分类、边框回归、特征点三个任务合并,利用不同任务相关性实现多任务学习提升性能。CascadeCNN、MTCNN算法在竖直人脸检测上可以实现出很好的效果,但在旋转不变人脸检测上仍有提升空间。我们的PCN由CNN级联组成,这点借鉴于CascadeCNN。PCN中的每一级CNN都是一个多任务网络,同时学习人脸非人脸判别、边框回归、旋转角度校准三个任务。

  在测试阶段,首先使用滑动窗口与图像金字塔的方式产生候选窗口,然后送入网络开始检测。每一级网络过滤掉部分非人脸窗口,根据边框回归结果调整候选框位置,然后根据预测出的旋转角度校准窗口的角度,具体来讲:

  第一级网络预测旋转角度使用二分类的方式,只预测人脸朝上或者朝下,朝下的人脸会被翻转,经过第一级后人脸旋转角度范围从360度缩减为180度;

  第二级网络预测旋转角度使用三分类的方式,只预测人脸朝上、朝左或者朝右,朝左或右的人脸会被翻转为朝上,经过第二级后人脸旋转角度范围从180度缩减为90度;

  在第三级旋转范围已经比较小,所以第三级网络直接回归旋转角度。

  通过逐渐减少人脸的旋转变化,可以显著降低人脸与非人脸分类的难度,进而提升检测精度。在第一级和第二级采用只预测粗糙朝向的方式,可以使得旋转角度预测的精度大大提高且速度更快。

  在PCN中,存在两个级联结构。第一个是人脸与非人脸的级联分类,这点与CascadeCNN一致。先使用小的CNN过滤简单负样本,再用大的CNN判别难负样本,这种方式可以极大地提升检测速度。

  第二个级联结构是旋转角度的级联校准。PCN的级联校准属于一种由粗到精的级联回归模式,与人脸特征点估计、人体姿态估计思想类似。人脸的旋转角度等于三级网络预测结果之和。

  级联校准模式,将难度较大的旋转角度预测分解为多个任务,每一个任务都会比较简单,这使得整个校准的难度降低。在第一级和第二级只预测粗糙朝向有两个原因,第一是粗糙朝向预测的精度更高,刚开始就直接回归角度误差会很大;第二是可以避免倾斜的图像crop操作,可以大大提高速度。

  在实现人脸窗口旋转校准操作时,即使只是对窗口做计算低廉的翻转操作,如果窗口数目很大时,速度仍然很慢。我们可以先将输入图像翻转三次,得到上下左右四个朝向的图像。这样将一个人脸旋转到某个角度,等价于去对应角度的图像上crop人脸。此策略可以将与窗口数量成正比的校准操作时间缩减为常数时间,效率大大提高。

  为了验证我们的算法的有效性,我们比较了常见的各种旋转不变人脸检测算法。

  FDDB是一个常用的人脸检测评测集,但是主要包括竖直人脸,我们将FDDB旋转到上下左右四个方向来评测旋转不变人脸检测算法。可以看出我们的算法精度与FasterRCNN(VGG16)和SSD500(VGG16)精度相当,在误检测较少时候PCN会更好一些。与CascadeCNN等其他方法相比,PCN的精度有明显提升。

  我们从WIDERFACE中挑选了一部分旋转人脸的图像进行算法评测。这个数据集上的测试结果进一步证明了PCN的有效性。

  下面结合速度、精度、模型大小进行综合的分析。PCN是一个可以在CPU上也实时运行的算法,模型大小和速度都远优于FasterRCNN、SSD、R-FCN算法。同时可以看到,PCN相比CascadeCNN,速度几乎一样,但精度有明显提高,这得益于我们快速准确的渐进校准策略。

  这是PCN算法的一些检测结果,可以看出PCN算法可以精准的检测任意平面内旋转角度的人脸,且对肤色、光照、视角鲁棒。

  总结一下,PCN是一个快速、鲁棒、准确的旋转不变人脸检测算法,在实际中有良好的应用前景。

(0)

相关推荐

  • PFLD:简单、快速、超高精度人脸特征点检测算法

    什么样的算法才是好算法? 真正能实用的算法才是最好的算法! 这需要实现三个目标:精度高.速度快.模型小! 今天arXiv新发布的文章<PFLD: A Practical Facial Landm ...

  • 目标检测:Segmentation is All You Need ?

    对于目标检测,从滑动窗口时代开始,我们已经习惯了候选区域特征提取然后分类的套路,深度学习时代强大的特征表示能力让我们能够探索不一样的道路,比如: ECCV18 Oral | CornerNet目标检测 ...

  • PFLD:高精度实时人脸关键点检测算法

    重磅干货,第一时间送达 本文转自:AI算法与图像处理 这篇文章作者分别来自天津大学.武汉大学.腾讯AI实验室.美国天普大学.该算法对在高通ARM 845处理器可达140fps:另外模型大小较小,仅2. ...

  • 目前最强开源人脸检测算法RetinaFace

    人脸检测为目标检测的特例,是商业化最早的目标检测算法,也是目前几乎各大CV方向AI公司的必争之地. WIDER FACE数据集是由香港中文大学发布的大型人脸数据集,含32,203幅图像和393,703 ...

  • YOLOv3模型剪枝,瘦身80%,提速100%,精度基本不变

    如果要在实际应用中部署目标检测,你会想到哪项算法? 在52CV目标检测交流群里,被提及最多的,恐怕就是YOLOv3了. 虽然新出的一些算法号称"完胜""吊打"某 ...

  • 日本东北大学改进单阶段人脸检测—兼具速度与精度优势

    近日来自日本东北大学与Laboro.AI公司的研究人员公开一篇改进的单阶段人脸检测算法论文,其不仅保持了速度的优势而且在主流的人脸数据集上达到与双阶段人脸检测算法相当的精度. 作者信息: 按照算法流程 ...

  • FaceBoxes—官方开源CPU实时高精度人脸检测器

    近日FaceBoxes算法的提出者开源了该算法所有训练和测试代码,并提供Caffe与PyTorch实现. FaceBoxes是中科院自动化所在IJCB2017上提出的面向CPU实时的高精度人脸检测算法 ...

  • ShapeNet:超实时人脸特征点检测与形状拟合开源库

    近日,来自德国亚琛工业大学的研究人员开源了形状拟合库ShapeNet,其可以实现超实时的人脸特征点检测,也可以用在其他任何需要形状拟合的应用场景. 开源地址: https://github.com/j ...

  • 惊呆了!速度高达15000fps的人脸检测算法!

    昨天52CV君发现一篇奇文,<Face Detection at 15,000 FPS:Real-Time Inference on GPU and CPU>,速度高达15000fps的人 ...

  • 综述:目标检测二十年(2001-2021)

    作者丨派派星 来源丨CVHub 编辑丨极市平台 极市导读 目标检测领域发展至今已有二十余载,本文将对目标检测领域近20年的发展做一次系统性的介绍,并为目标检测构建一个完整的知识体系架构. 引言 目标检 ...

  • 刚刚,SeetaFace版本升级!新增活体检测等功能

    这次版本升级,从版本号SeetaFace2 跳过 3 .4. 5直接升级到SeetaFace6,总之就是 666 吧- 功能增加是这一版本的重大亮点: 之前只有:人脸检测.特征点定位.人脸识别: 此次 ...