编者按:苏轼在《题西林壁》中曾写道:“横看成岭侧成峰,远近高低各不同。”这两句诗阐释了视角的变化对于视觉任务的影响。
而在人脸识别领域,由于真实场景的复杂多变,受人体姿态和取景角度的影响,采集到的人脸图像,时常会存在平面内旋转角度不确定等问题,这为人脸检测以及基于人脸的视觉任务带来了极大的挑战。
本文中,将为大家介绍中科院计算所VIPL组的CVPR2018新作:如何利用级联矫正网络,来实现实时、旋转自适应的人脸检测。
大讲堂特别提供相关论文及demo的下载链接。
另,深度学习大讲堂即将推出Valse2018系列报告,敬请关注!
本文将介绍我们的一篇实时旋转不变人脸检测的工作。
本论文下载链接:
https://arxiv.org/pdf/1804.06039.pdf.
算法的demo链接:
https://github.com/Jack-CV/PCN.
在体操、街舞、家庭合影等复杂的应用场景,由于人体姿态和取景角度的变化,人脸不总是竖直的,有可能有各种各样的平面内旋转角度。旋转不变人脸检测算法目标是精确的检测这种旋转的人脸。多样的平面内旋转角度,使得人脸的表观变化非常大,为旋转不变人脸检测带来了极大的挑战性。
有很多已有的工作尝试解决旋转不变人脸检测。最简单直接的方法就是基于数据増广的方法,在训练阶段将人脸旋转到任意角度。这样做的优点是测试阶段没有额外的时间开销;缺点是旋转人脸的表观变化非常大,需要使用一个计算量较大的网络才能保证检测的精度,这在一些对实时性要求高的应用中是不实用的。
另外一种策略就是分治。可以训练一个竖直人脸检测器,在测试阶段,将待检测图像旋转多遍进行检测,这样也可以实现任意旋转角度人脸的检测。竖直人脸检测器的计算量是相对较小的,但是检测多次也会使得时间开销成倍增长,而且带来更多的误检测。
还有一种方法是先将旋转的人脸转正然后再进行检测。具体而言,可以先使用一个旋转路由网络,预测候选人脸框的旋转角度,然后转正人脸,之后可以使用一个竖直人脸检测器完成检测。然而,精确的预测人脸的旋转角度本身也是一个很难的任务,旋转角度预测错误也会降低检测精度。
目前的许多旋转不变人脸检测算法需要在精度或者速度上进行妥协。我们提出的PCN算法目标是在保持很低的计算量的前提下,实现精准的旋转人脸检测。
在CVPR 2015上提出了Cascade CNN人脸检测方法,即通过级联多个CNN逐步过滤非人脸样本。之后提出的MTCNN对Cascade CNN改进,将分类、边框回归、特征点三个任务合并,利用不同任务相关性实现多任务学习提升性能。Cascade CNN、MTCNN算法在竖直人脸检测上可以实现出很好的效果,但在旋转不变人脸检测上仍有提升空间。我们的PCN由CNN级联组成,这点借鉴于Cascade CNN。PCN中的每一级CNN都是一个多任务网络,同时学习人脸非人脸判别、边框回归、旋转角度校准三个任务。
在测试阶段,首先使用滑动窗口与图像金字塔的方式产生候选窗口,然后送入网络开始检测。每一级网络过滤掉部分非人脸窗口,根据边框回归结果调整候选框位置,然后根据预测出的旋转角度校准窗口的角度,具体来讲:
第一级网络预测旋转角度使用二分类的方式,只预测人脸朝上或者朝下,朝下的人脸会被翻转,经过第一级后人脸旋转角度范围从360度缩减为180度;
第二级网络预测旋转角度使用三分类的方式,只预测人脸朝上、朝左或者朝右,朝左或右的人脸会被翻转为朝上,经过第二级后人脸旋转角度范围从180度缩减为90度;
在第三级旋转范围已经比较小,所以第三级网络直接回归旋转角度。
通过逐渐减少人脸的旋转变化,可以显著降低人脸与非人脸分类的难度,进而提升检测精度。在第一级和第二级采用只预测粗糙朝向的方式,可以使得旋转角度预测的精度大大提高且速度更快。
在PCN中,存在两个级联结构。第一个是人脸与非人脸的级联分类,这点与Cascade CNN一致。先使用小的CNN过滤简单负样本,再用大的CNN判别难负样本,这种方式可以极大地提升检测速度。
第二个级联结构是旋转角度的级联校准。PCN的级联校准属于一种由粗到精的级联回归模式,与人脸特征点估计、人体姿态估计思想类似。人脸的旋转角度等于三级网络预测结果之和。
级联校准模式,将难度较大的旋转角度预测分解为多个任务,每一个任务都会比较简单,这使得整个校准的难度降低。在第一级和第二级只预测粗糙朝向有两个原因,第一是粗糙朝向预测的精度更高,刚开始就直接回归角度误差会很大;第二是可以避免倾斜的图像crop操作,可以大大提高速度。
在实现人脸窗口旋转校准操作时,即使只是对窗口做计算低廉的翻转操作,如果窗口数目很大时,速度仍然很慢。我们可以先将输入图像翻转三次,得到上下左右四个朝向的图像。这样将一个人脸旋转到某个角度,等价于去对应角度的图像上crop人脸。此策略可以将与窗口数量成正比的校准操作时间缩减为常数时间,效率大大提高。
为了验证我们的算法的有效性,我们比较了常见的各种旋转不变人脸检测算法。
FDDB是一个常用的人脸检测评测集,但是主要包括竖直人脸,我们将FDDB旋转到上下左右四个方向来评测旋转不变人脸检测算法。可以看出我们的算法精度与Faster RCNN(VGG16)和SSD500(VGG16)精度相当,在误检测较少时候PCN会更好一些。与Cascade CNN等其他方法相比,PCN的精度有明显提升。
我们从WIDER FACE中挑选了一部分旋转人脸的图像进行算法评测。这个数据集上的测试结果进一步证明了PCN的有效性。
下面结合速度、精度、模型大小进行综合的分析。PCN是一个可以在CPU上也实时运行的算法,模型大小和速度都远优于Faster RCNN、SSD、R-FCN算法。同时可以看到,PCN相比Cascade CNN,速度几乎一样,但精度有明显提高,这得益于我们快速准确的渐进校准策略。
这是PCN算法的一些检测结果,可以看出PCN算法可以精准的检测任意平面内旋转角度的人脸,且对肤色、光照、视角鲁棒。
总结一下,PCN是一个快速、鲁棒、准确的旋转不变人脸检测算法,在实际中有良好的应用前景。欢迎大家关注我们的工作。谢谢大家!
--end--
主编:袁基睿 编辑:程一
该文章属于“深度学习大讲堂”原创,如需要转载,请联系 ruyin712。
作者信息:
作者简介:
时学鹏,中科院计算所VIPL课题组人脸组研究生,导师为山世光研究员。研发了VIPL课题组可在移动端实时运行的人脸检测SDK,曾在CVPR发表论文一篇。
往期精彩回顾
算法及大V们你们够了:如果CV界也有朋友圈...I 春节特刊
林倞:Beyond Supervised Deep Learning--后深度学习时代的挑战
欢迎关注我们!
深度学习大讲堂是由中科视拓运营的高质量原创内容平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!
中科视拓(SeetaTech)将秉持“开源开放共发展”的合作思路,为企业客户提供人脸识别、计算机视觉与机器学习领域“企业研究院式”的技术、人才和知识服务,帮助企业在人工智能时代获得可自主迭代和自我学习的人工智能研发和创新能力。
中科视拓目前正在招聘: 人脸识别算法研究员,深度学习算法工程师,GPU研发工程师, C++研发工程师,Python研发工程师,嵌入式视觉研发工程师,运营经理。有兴趣可以发邮件至:[email protected],想了解更多可以访问,www.seetatech.com
中科视拓
深度学习大讲堂
点击阅读原文打开中科视拓官方网站