人脸识别DNN技术浅析

 

人脸图像识别作为计算机图形学的其中一员,也理所当然的分享了这个特征,我们希望通过利用对一个人的某些图像的分析所得到的人脸特征来训练计算机,使其“认识并记住”这个人,如果在将来再遇到这个人,它能迅速的认出他。...



文章来源:智寻公众号原创  作者:张译

计算机图像学,正如Richard Szeliski在Computer Vision: Algorithms and Applications[1]中说到的,计算机图像处理之所以困难,是因为这是一个逆向问题,在一个信息不足的方程系统中寻求未知数的解。人脸图像识别作为计算机图形学的其中一员,也理所当然的分享了这个特征,我们希望通过利用对一个人的某些图像的分析所得到的人脸特征来训练计算机,使其“认识并记住”这个人,如果在将来再遇到这个人,它能迅速的认出他。然而人脸的特征就是之前提到的未知数。我们在这里对一些人脸特征分析及人脸识别技术应用的科研成果做一个大致的总结。

近20年来,在人脸识别领域最广泛应用的技术就是Deep Neural Network(一下简写DNN),但是在2006年之前,由于DNN中系数估计算法的瑕疵,使得对于DNN的应用研发缓慢,直到2006年,Hinton, Osindero等发表”A Fast Learning Algorithm for Deep Belief Nets”; Bengio, Lamblin等发表”Greedy Layer-Wise Training of Deep Networks” 以及Ranzato, Poultney等发表”Efficient Learning of Sparse Representations with an Energy-Based Mode”[2],在对于DNN模型参数估计的精确度上有了突破性的提高,使得大家对于DNN模型的应用开发更加热情。其中不乏一些IT巨头。在后面我们会对他们一一介绍。

DNN的工作原理


Black Box 的细节



图像来源自Reference[3]

这就是DNN, 也是绝大部分人脸识别模型的核心部分。其中Input列就是上图的图像像素信息,中间的H列是DNN中的隐藏特征层,最后的output列就是DNN输出的,其他程序可以利用的结果。这里只是一个三层DNN(准确的说这个模型叫做Shadow NN)的例子,实际应用中的DNN层数会根据需求进行改变。每两层之间的连线事实上是表现空间映射的方程。在这个方程中通常会包含的模块有:Filter(Convolution), Pooling, Normalization。DNN中的层代表了信息的抽象,或者说更高层的特征,所以原始图像信息进入DNN后,每经过一层,所剩下的信息就会更加抽象。下面我们会通过几个实际例子来看看DNN的内部结构的细节。

Google

FaceNet:A Unified Embedding for Face Recognition and Clustering [4]
这是Google所发表的人脸识别技术论文。其中DNN的实现模型是Zeiler&Fergus[5]所提出的:



FaceNet所用到的DNN是一个九层的模型(包含输入与输出),如图中所示,在大方块里的彩色小方块就是我们之前说到的Filter,而从大方块(上)变成小方块(下)的过程就是所谓的Pooling,而且每两层之间(例,Input->Layer1, Layer1 ->Layer 2, …, )间的转换在这里是完全一样的。FaceNet通过对输入图像进行5层信息抽象提取(每层都是一个所谓的特征),来到Layer6,在后面两层对所得到的特征信息进行概率统计分析,最后输出相似度差,或者类别概率的信息。

FaceBook

DeepFace:Closing the Gap to Human-Level Performance in Face Verification [6]也同上面一样,我们直接来看Facebook的DeepFace所用到的DNN模型:



从这个图中,我们能更加直观的看到图像信息的抽象提取。图像中一共包含了十层(包括输入的图像以及输出的结果)。第二层是彩色图像的分色素表象形式,之后的第三,四,五层分别为Filter(Convolution), Pooling, 以及再一次的Filter(Convolution),与我们之前提到的通用DNN完全一样。在后面的三层,L4,L5, L6,DeepFace对第五层的结果进行局部化(图像像素之间是存在局部关联性的)-- 另一种形式的信息抽象。最后的输出层也是同样的对DNN抽象的特征值进行统计分析

Yahoo

Multi-view Face Detection Using Deep Convolutional Neural Networks [7]
虽然Yahoo所发表的技术核心也是使用DNN,但是与之前两个不同的是,他们更关注对于非正脸的图像的识别。在他们所提出的算法:Deep Dense Face Detector(DDSD)中,所使用的DNN:AlexNet[8],首先是由Alex Krizhevsky, Ilya Sutskever, etc, 等提出的。结构如下图所示,



图中上下两层是完全一样的过程,只是在不同的GPU中同时进行。这里的DNN一共包含8层(不包括图中最后的半层),其中前五层是Convolution 以及Pooling的计算,后三层Fully Connected是进行统计分析计算的。

通过这三个例子我们可以看出,目前大家使用的DNN模板基本一致,所以决定在最后输出人脸检索准确度的主要因素就是模型参数的估计(计算机学习过程),想要的到更加贴近真实的参数集(计算机学的更立体)需要我们提供相当属相数据库,这也是人脸识别技术中的另一个难点:训练数据的获取。

Reference:
[1] Richard Szeliski. Computer Vision: Algorithms and Applications.
[2] Hugo Larochelle, Yoshua Bengio, etc. Deep Learning and Application in Neural Networks (Slides). http://www.slideshare.net/hammawan/deep-neural-networks.
[3] UFLDL Tutorial. http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial.
[4] Florian Schroff, Dmitry Kalenichenko, James Philbin. FaceNet: A Unified Embedding for Face Recognition and Clustering.
[5] Matthew D. Zeiler, Rob Fergus. Visualizing and Understanding Convolutional Networks.
[6] Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato, Lior Wolf. DeepFace: Closing the Gap to Human-Level Performance in Face Verification.
[7] Sachin Sudhakar Farfade, Mohammad Saberian, Li-Jia Li. Multi-view Face Detection Using Deep Convolutional Neural Networks.
[8] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. ImageNet Classification with Deep Convolutional Neural Networks.

版权信息:本文为智寻公众号原创文章,转载请注明出处,并保存链接、公众号二维码等相关信息。


    关注 智寻


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册