一文了解人脸识别技术的原理 人脸识别技术是什么( 二 )


从上述方法可以看出,传统的机器学习算法是基于特征的算法,因此需要大量的算法工程师的专家经验进行特征工程和调参等工作,算法效果也不是很好 。而且人工设计在无约束环境中对不同变化情况都鲁棒很困难的 。过去的图像算法是工程师更多的是通过传统的图像处理方法,根据现实场景和专家经验提取大量的特征,然后对提取的特征再进行统计学习的处理,这样整体算法的性能就非常依赖于现实场景和专家经验,对于人脸这种类别巨大,每类样本不均衡情况严重的无约束场景效果并不是很好 。因此,近几年随着深度学习在图像处理中取得的巨大成功,人脸识别技术也都以深度学习为主,并且已经达到了非常好的效果 。
深度学习在人脸识别领域的应用在深度学习的人脸识别系统中,该问题被分成了一个目标检测问题和一个分类问题,而目标检测问题在深度学习中本质还是一个分类问题和回归问题,因此随着卷积神经网络在图片分类上的成功应用,人脸识别系统的效果得到了快速且巨大的提升,并以此诞生了大量的视觉算法公司,并将人脸识别应用在了社会生活的各个方面 。
其实利用神经网络来做人脸识别并不是什么新思想,1997年就有研究者为人脸检测、眼部定位和人脸识别提出了一种名为基于概率决策的神经网络的方法 。这种人脸识别 PDBNN 被分成了每一个训练主体一个全连接子网络,以降低隐藏单元的数量和避免过拟合 。研究者使用密度和边特征分别训练了两个 PBDNN,然后将它们的输出组合起来得到最终分类决定 。但是受限于当时算力和数据的严重不足,算法相对简单,因此该算法并没有得到很好的效果 。随着仅今年反向传播理论和算力框架等的日趋成熟,人脸识别算法的效果才开始得到巨大的提升 。
在深度学习中,一个完整的人脸识别系统也包括图1所示的四个步骤,其中第一步骤叫做人脸检测算法,本质也是一个目标检测算法 。第二个步骤叫做人脸对齐,目前又基于关键点的几何对齐和基于深度学习的人脸对齐 。第三个步骤特征表示,在深度学习中是通过分类网络的思想,提取分类网络中的一些feature层作为人脸的特征表示,然后用相同的方式对标准人脸像进行处理,最后通过比对查询的方式完成整体的人脸识别系统 。下面主要对人脸检测和人脸识别算法的发展进行简单综述 。
人脸检测深度学习在图像分类中的巨大成功后很快被用于人脸检测的问题,起初解决该问题的思路大多是基于CNN网络的尺度不变性,对图片进行不同尺度的缩放,然后进行推理并直接对类别和位置信息进行预测 。另外,由于对feature map中的每一个点直接进行位置回归,得到的人脸框精度比较低,因此有人提出了基于多阶段分类器由粗到细的检测策略检测人脸,例如主要方法有Cascade CNN、 DenseBox和MTCNN等等 。
MTCNN是一个多任务的方法,第一次将人脸区域检测和人脸关键点检测放在了一起,与Cascade CNN一样也是基于cascade的框架,但是整体思路更加的巧妙合理,MTCNN总体来说分为三个部分:PNet、RNet和ONet,网络结构如下图所示 。

一文了解人脸识别技术的原理 人脸识别技术是什么

文章插图
首先PNet网络对输入图片resize到不同尺寸,作为输入,直接经过两层卷积后,回归人脸分类和人脸检测框,这部分称之为粗检测 。将粗检测得到的人脸从原图中crop出来后,在输入的R-Net,再进行一次人脸检测 。最后将得到的人脸最终输入O-Net,得到的O-Net输出结果为最终的人脸检测结果 。MTCNN整体流程相对比较简单,能够快速的进行部署和实现,但是MTCNN的缺点也很多 。包括多阶段任务训练费时,大量中间结果的保存需要占用大量的存储空间 。另外,由于改网络直接对feature点进行bounding box的回归,对于小目标人脸检测的效果也不是很好 。还有,该网络在推理的过程中为了满足不同大小人脸检测需要,要将人脸图片resize到不同尺寸内,严重影响了推理的速度 。
随着目标检测领域的发展,越来越多的实验证据证明目标检测中更多的瓶颈在于底层网络语义低但定位精度相对较高和高层网络语义高但定位精度低的矛盾,目标检测网络也开始流行anchor-based的策略和跨层融合的策略,例如著名的Faster-rcnn、SSD和yolo系列等 。因此,人脸检测算法也越来越多的利用anchor和多路输出来满足不同大小人脸检出的效果,其中最著名的算法就是SSH网络结构 。
一文了解人脸识别技术的原理 人脸识别技术是什么