早在20世纪70年代学者们就开始对人脸检测技术进行研究,然而受当时落后的技术条件限制,计算机运算能力极其有限,社会需求也非常有限,直到上世纪90年代随着人工智能应用热潮的兴起才开始加快发展的脚步。在新世纪到来前的最后十年间,生物特征识别成为社会公共安全重点关注领域,学术界进行了大量人脸识别研究工作,产业需求也开始慢慢抬升。这一时期伴随着神经网络和机器学习的快速发展,很多人脸检测器已经有了现代人脸检测技术的影子,例如可变形模板的设计(将人脸按照五官和轮廓划分成多个相互连接的局部块)、神经网络的引入(作为判断输入是否为人脸的分类模型)等。这一时期的工作主要关注于正面人脸检测,基于简单的底层特征(如物体边缘、图像灰度值等)来对图像进行分析,并结合人脸五官、肤色等方面的先验知识来设计模型和算法,开始引入一些当时已有的模式识别方法。
人脸检测技术的重大突破发生在2001年,两位杰出的科研工作者Paul Viola和Michael Jones设计了出了一个快速而准确的人脸检测器,在当时的硬件条件下达到了每秒处理15张图像的速度,已经接近实时速度25fps(即25帧每秒)。这种检测器相对于之前的检测器在获得相同甚至更好准确度的同时,速度提升了近百倍。这不仅是人脸检测技术发展的一个里程碑,也标志着计算机视觉领域的研究成果开始具备投入实际应用的能力。为了纪念这一工作,学术界将之称为Viola-Jones人脸检测器,或者简称为VJ人脸检测器。
VJ人脸检测器所倡导的积分图、AdaBoost方法、级联结构等至今仍在各种各样的检测器中以不同的形式被组合使用,启发和影响了后续的大量研究工作。近年来,机器学习在深度网络架构上的突破性进展促使人们开始对人脸检测技术领域进行进一步的深思,传统的人脸检测技术优势在于速度,而在精度上则相比基于深度网络的方法要略逊一筹。在这种情况下,一个自然的想法就是:能否将传统的人脸检测技术和深度网络(如CNN)相结合,在保证检测速度的情况下进一步提升精度呢?
在深度学习技术出现之前,几乎所有人脸检测都是采用滑动窗口式的方法。Facebook首创将DeepFace深度学习网络应用到人脸特征提取,对4 000人的440万图像使用一个8层的神经网络进行训练学习。Google则使用800万人的2亿张图像对他们提出的FaceNet进行训练学习,数据量是极其庞大的。他们在2015年发表于CVPR 2015的文章则采用了22层的深层卷积网络以及常用于图像检索任务的Triplet Loss损失函数。
随着大量人工智能领域的知名学者通过深度网络在人脸检测领域不断研究,人脸检测的精度也开始大幅地提升。在2014年,学术界利用JointCascade人脸检测器在FDDB上取得的最好检测精度是在100个误检时达到84%的检测率。这一成绩很快在2015年就被FacenessNet打破,它在100个误检时检测率接近88%,提升了几乎4个百分点。不仅如此,工业界的最高纪录已经达到了100个误检时92.5%的检测率,检测率达到90%以上的公司还不止一家,并且这些结果都是通过基于深度网络的人脸检测器所获得的。(www.xing528.com)
虽然基于深度网络的检测器目前能够达到很高的检测精度,并且其通用性非常强,但其所付出的计算代价也非常高,因此这类检测器突破的关键在于深度网络的简化和加速。目前,在这方面的考虑主要基于两个视角:一方面是基于GPU计算的框架优化,另外一方面是开发专用的FPGA架构实现特定任务的深度学习。除此之外,如果单单考虑人脸检测,这个分类问题相对来说要简单一些,也存在一种可能性:直接学习一个小型的网络就能足够好地完成这个任务。对于采用非深度学习方法的检测器,其基础的检测精度相比深度学习法会低不少,但是速度上会有明显的优势,因此其关键在于针对特定应用场景下的问题进行合理的改进和适配,以获得更好的检测精度。
经过几十年的研究和发展,人脸检测方法正日趋成熟,在现实场景中也已经得到了比较广泛的应用。但是人脸检测问题还并没有被完全解决,复杂多样的姿态变化、千奇百怪的遮挡情况、捉摸不定的光照条件、不同的分辨率、迥异的清晰度、微妙的肤色差等各种内外因素的共同作用让人脸的变化模式变得极其丰富,而目前还没有检测器可以同时对所有的变化模式都足够鲁棒。
下面分别介绍常规的人脸检测技术和深度学习架构下的人脸检测技术的实现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。