#感恩节技术博客第一弹#Deep learning&&Face recognition

来源:互联网 发布:台湾留学生在大陆知乎 编辑:程序博客网 时间:2024/06/06 02:51

一年一度的感恩节到了,博主却在遥远的大洋彼岸默默地耕耘着自己的学术梦想。作为一枚在电子工程与计算机科学领域摸爬滚打多年的理工男,博主对于即将到来的人工智能新时代有着自己独到的认识。此次借着最近要做的一个课题研究,博主来简要地谈谈对于Deep learning和Face Recognition的理解。


(1)何谓深度学习?

谈到深度学习,就不得不提神经网络。在深度学习还没有火起来的很多年前,神经网络就已经被学术界广泛地研究和讨论了。神经网络起初的动机是模拟人脑分析和学习的机制来提升机器的智能,其主要结构分为输入层,隐含层(多层),和输出层。其中隐含层也可以理解为中间处理单元,其数量是神经网络的一个很重要的参数。输入层可以是任何结构化后的信息,包括数字,文本,图像,音频和视频等;而输出层往往是我们所想要得到的实验结果,例如不同输入信息的类别。中间的每一层都可以看作是一个logistic regression模型, 这种逐层处理的模式是比较接近人类大脑结构的。

在实际操作中,我们往往将数据样本分为训练集和测试集这两个部分。训练集已知输入层和输出层,以用来训练优化得到神经网络的隐层权重参数;而训练好该神经网络后,再将测试集的数据作为输入,就可以得到我们想要的测试集的输出类别了。这个过程跟人类婴儿学习新事物的过程是相似的。一个人想要知道什么是猫,他需要看到很多次猫的样子,捕捉它们的特征,下次再看到类似的样子就可以判断是不是猫了。
但是,神经网络由于存在过拟合,难收敛,训练速度慢等问题,在很长一段时间内都是备受冷落。直到2006年,ML界的泰斗级人物Geoffrey Hinton在Science上发表了一篇文章,开启了deep learning在学术界和工业界的浪潮。这篇文章有两个主要观点:(1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于数据的分类或可视化。(2)深度神经网络在训练上的难度,可以通过layer-wise pre-training来有效克服。
Deep learning算法的核心思想可以概括如下:首先用无监督学习进行每一层的pre-train;每次训练一层,将其训练结果作为其higher一层的输入;用监督学习去调整所有层。深度学习可以算作神经网络的一种延伸,它在此基础上采用了不同于传统BP算法的训练机制,使得其在深度结构(7层以上)的网络中也能得到良好的表现。这就使其在各个领域的应用得到了极大的扩展。

(2)人脸识别哪家强?

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。而如何提取出有效的人脸特征,是该问题中的关键研究点。常见的特征提取方法包括灰度直方图,SIFT, HAAR, HOG等,而具体运用时往往在这些基本的特征描述子上增加许多图像预处理包括分割,连接,滤波去噪等。从人脸图像提取出相应的特征矩阵后,输入到分类器中进行特征分类(识别)。这里的分类器可以是一些已有的模型,包括KNN, Random Forest, 朴素贝叶斯, SVM等,也可以像Adaboost 那样将一系列弱分类器集合成强分类器。当然,也可以用我们上文所提到的深度神经网络模型来进行分类。
而人脸识别的研究也存在着许多问题:包括光照,姿态变化,局部遮挡等,人脸的不同表情,是否化妆等也会对识别的准确率产生显著的影响。对于这些困难的突破将是人脸识别研究的主要方向。
在这里,我要介绍一篇2014年CVPR的文章:“DeepFace: Closing the Gap to Human-Level Performance in Face Verification.” This paper presents a novel face representation method based on a deep neural network, which involves several layers in this network without weight sharing. There are three main parts in this approach: face alignment,representation and verification metric. The authors introduce DNN in the representation of facial images. As a result, this method performs well on the LFW dataset and YTF dataset.

上图展示了Deepface结构的outline,A front-end of a single convolution-pooling-convolution filtering on the rectified input, followed by three locally-connected layers and two fully-connected layers. Colors illustrate feature maps produced at each layer. The net includes more than 120 million parameters, where more than 95% come from the local and fully connected layers.

从上图的ROC曲线可以看出该方法相较于其他一些方法在不同的数据集上均表现良好,其中,在LFW数据集上,人脸识别的准确率高达97.35%,这样高的准确率相信在工业界中进行应用也不会有多大问题啦。除此之外,想上手尝试建立自己的人脸识别系统的同学,可以利用一些现有的开源库比如OpenCV,博主在本科时做人脸识别考勤系统的项目中用过,上手后会很方便,效果也不错。


最后,以上仅为本人在进行相关的课题研究时查阅相关资料的一些积累,写得略显匆忙,还请大家多多包涵。



1 0
原创粉丝点击