热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

人脸识别算法调研

1.神经网络:来源:人的大脑发展至今,一共有三波浪潮:1957年~1969年Perceptrons:无法解决异或问题1985年~1990年NeuralNetworks(BP):被svm干掉20

1.神经网络:

来源:人的大脑

 

发展至今,一共有三波浪潮:

1957年~1969年 Perceptrons:无法解决异或问题

1985年~1990年 Neural Networks(BP):被svm干掉

2006年~今天 Deep Neural Networks(DBN) 


DNN:Geoffrey Hinton 

CNN:Yann LeCun 

RNN:Yoshua Bengio 

优点:

(1)使用的和人脑相同的构造 
(2)非常容易扩展模型容量和数据规模 
(3)无需人工提取特征,端到端
(4)规律的拟合到数据的拟合 

问题:

太多的trick,都是依靠直觉提出来的,需要有solid学习机制和理论支持 


2.机器学习的常用概念:

准确率:它表示的是预测为正的样本中有多少是对的

召回率:针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了

过拟合:训练集错误率很低,但测试集错误率很高。

回归:连续型数值,诸如识别人脸关键点、房价预测等

分类问题:诸如判断性别

 

3.传统机器学习算法

(1)分类问题:

logistic(sigmoid):二分类问题

z = w0x0+w1x1+w2x2+w3x3+...+wnxn

svm支持向量机: 

adaboost元算法:

对其他多个分类器进行组合的一种方式,每个分类器具有一定的权重

(2)回归问题:

线性回归:

 

(3)聚类问题:

k-means:

 

4.CNN(卷积神经网络)

LeNet-5网络结构,如下:

 

局部感知:

参数共享、多卷积核:

池化操作:取最大,取均值等

卷积过程:

 

5.国内外主流人脸识别算法对比:

FaceNet:Google

与其他的深度学习方法在人脸上的应用不同,FaceNet并没有用传统的softmax的方式去进行分类学习,然后抽取其中某一层作为特征,而是直接进行端对端学习一个从图像到欧式空间的编码方法,然后基于这个编码再做人脸识别、人脸验证和人脸聚类等。

 

网络架构:

 

特点:

 

  • 去掉了最后的softmax,而是用元组计算距离的方式来进行模型的训练。使用这种方式学到的图像表示非常紧致,使用128位足矣。
  • 元组的选择非常重要,选的好可以很快的收敛。

 

DeepFace:Facebook

网络架构:

特点:

先是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果

 

没有用太多的Max-pooling层,因为太多的Max-pooling层会使得网络损失图像信息。

后面三层都是使用参数不共享的卷积核,之所以使用参数不共享,有如下原因:

  • 对齐的人脸图片中,不同的区域会有不同的统计特征,卷积的局部稳定性假设并不存在,所以使用相同的卷积核会导致信息的丢失
  • 不共享的卷积核并不增加抽取特征时的计算量,而会增加训练时的计算量
  • 使用不共享的卷积核,需要训练的参数量大大增加,因而需要很大的数据量,然而这个条件本文刚好满足。

 

DeepId:共有三代,第一代DeepID,第二代DeepID2,第三代DeepID2+

人脸预处理:

网路架构:

特点:

该结构与普通的卷积神经网络的结构相似,但是在隐含层,也就是倒数第二层,与Convolutional layer 4和Max-pooling layer3相连,鉴于卷积神经网络层数越高视野域越大的特性,这样的连接方式可以既考虑局部的特征,又考虑全局的特征。

DeepID2相对于DeepID有了较大的提高。其主要原因在于在DeepID的基础上添加了验证信号。

DeepID2+相比于DeepID2,将DeepID层从160维提高到512维,同时将DeepID层不仅和第四层和第三层的max-pooling层连接,还连接了第一层和第二层的max-pooling层。


6.人脸识别技术分类:

(1)检测:

传统人脸检测:

特征提取:LBP/HOG/Harr

训练:Adaboost/SVM

识别:滑动窗口

深度学习在人脸检测上的应用:

(2)属性分析:

传统框架:

深度学习的应用:基于CDNN的人脸属性识别框架

(3)验证和识别:

基本框架:


7.传统机器学习算法与深度学习在图像识别上的不同

最大不同:深度学习输入图像原数据即可,而传统机器学习算法,需要对图像做很多的操作,诸如:灰度化、归一化等等,最后才把处理好的特征送到机器学习算法中去训练。

深度学习:

(1)Advantages:准确度高,效果好

(2)Disadvantages:需要庞大的计算资源,这也是为什么近几年才开始又火起来的原因


8.CPU vs GPU

CPU:更适合逻辑复杂的运算,串行的运算

GPU:缓存和控制单元很小,计算单元多,适合逻辑不复杂的大规模并行运算


9.常用分类:

sigmoid:二分类问题

softMax:多分类,经典案例:手写识别体,http://www.jeyzhang.com/tensorflow-learning-notes.html


10. 深度学习PK人脑

 

11.what is the next?

当AI的工程能力超越创造者时,将会进行自我更 新升级,将会跨越式发展,这个时间点就是 singularity 


参考资料:

《LeNet 5》http://yann.lecun.com/exdb/lenet/index.html

《DeepID算法介绍》http://blog.csdn.net/stdcoutzyx/article/details/42091205

《FaceNet》https://arxiv.org/abs/1503.03832

《激活函数和损失函数》http://blog.csdn.net/u014595019/article/details/52562159

《一文读懂卷积神经神经网络》http://www.36dsj.com/archives/24006

Will Deep Learning take over Machine Learning, make other algorithms obsolete?》http://www.kdnuggets.com/2014/10/deep-learning-make-machine-learning-algorithms-obsolete.html

《tensorflow如何入门》https://www.zhihu.com/question/49909565/answer/118465399


推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • 本文探讨了如何通过编程手段在Linux系统中禁用硬件预取功能。基于Intel® Core™微架构的应用性能优化需求,文章详细介绍了相关配置方法和代码实现,旨在帮助开发人员有效控制硬件预取行为,提升应用程序的运行效率。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
author-avatar
执念
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有